Skip to content

Releases: dsward2/LiveAudioServer

LiveAudioServer v0.1.2

01 Jun 20:45

Choose a tag to compare

LiveAudioServer v0.1.2

This release adds audible "dead-air" filler for live UDP / TCP feeds. When the upstream source (Gqrx, an SDR daemon, a remote producer, etc.) stops sending packets, listeners can now hear a configurable sine wave instead of dead silence, until the input resumes.

What's new

Sine-tone filler (opt-in)

Two new flags let you replace the silence-fill window with an audible test tone:

.build/release/LiveAudioServer \
    --udp-input-port 7355 \
    --filler-mode tone \
    --filler-tone-hz 1000 \
    --keep-alive
  • --filler-mode {silence|tone} — default silence keeps the historical behavior (zero PCM, optionally TPDF-dithered via --silence-dither). Set to tone to emit a continuous sine wave at -20 dBFS.
  • --filler-tone-hz <hz> — tone frequency (default 1000 Hz, the broadcast reference). Below the Nyquist frequency of the configured sample rate.
  • The sine generator carries phase across chunks, so there are no audible clicks at chunk boundaries.

UDP and TCP gap detection (new behavior)

Previously the filler only triggered on stdin EOF + --keep-alive. v0.1.2 adds the same logic to live UDP and TCP inputs:

  • The UDP/TCP recv loops now use SO_RCVTIMEO at chunk-period cadence.
  • After --filler-after-ms (default 500 ms) of consecutive packet absence, the reader switches to emitting filler chunks at the audio sample rate so HTTP listeners stay connected and encoders keep running.
  • When real packets resume, filler ends immediately and stale pre-gap data is discarded to avoid a time-warp on resume.
  • Brief network jitter (under the threshold) passes through unaltered.

Refined Gqrx UDP example in the README

The Gqrx + RTL-SDR walk-through has been rewritten to match the actual current best practice:

  • LiveAudioServer reads Gqrx's UDP output directly — no more ffmpeg passthrough.
  • Adds HTTP Basic auth (--auth-user / --auth-password), --silence-dither, and --keep-alive for robustness.
  • Includes an --auth-password-env follow-up so credentials don't leak via ps / shell history.
  • Notes the iPhone Safari credential dialog (saved to the iCloud Keychain after first use).
  • New step-by-step Gqrx UI walk-through (Audio → UDP button → host localhost, port 7355, Stereo ✓).

Backwards compatibility

  • Defaults unchanged. Running v0.1.2 with the same flags as v0.1.1 produces the same output. The filler is opt-in via --filler-mode tone.
  • UDP/TCP gap detection runs in silence mode too, but only emits zero bytes (the same as --silence-dither's dithered silence when paired). The visible effect: encoders see a continuous stream during input gaps instead of stalling.

Install

Pre-built (recommended for non-developers)

  1. Download LiveAudioServer-v0.1.2-macos-universal.zip below.
  2. Double-click to unzip.
  3. Open READ-ME-FIRST.txt and follow the one-time first-launch steps.

From source

git clone https://github.com/dsward2/LiveAudioServer.git
cd LiveAudioServer
swift build -c release

Homebrew tap

brew install dsward2/tap/liveaudioserver

(Update the tap's formula url to v0.1.2 and recompute the source-tarball sha256 before publishing.)

Checksums

  • LiveAudioServer-v0.1.2-macos-universal.zip — SHA256: c5b000fd7965742bab0ea33276b310ce373b1709f5730ef209bdef8f53ccfd2c

LiveAudioServer v0.1.1

01 Jun 03:34

Choose a tag to compare

LiveAudioServer v0.1.1

The first release with pre-built, signed, and notarized downloads — no need to install Xcode or any package manager to run it.

Highlights

Downloadable binary

  • LiveAudioServer-v0.1.1-macos-universal.zip is attached to this release.
  • Universal binary (arm64 + x86_64), signed with an Apple Developer ID and notarized by Apple.
  • Download → unzip → double-click Start LiveAudioServer.command. See READ-ME-FIRST.txt inside the zip for the one-time first-launch prompt.

swift build now works with zero package-manager dependencies

  • libmp3lame is bundled as a universal static XCFramework at Frameworks/Mp3Lame.xcframework and consumed by SwiftPM as a binary target.
  • No more brew install lame (or port install lame) needed for a fresh clone — swift build works out of the box.
  • Maintainers can reproduce the framework from upstream LAME 3.100 source with scripts/build-mp3lame-xcframework.sh.

New release pipeline

  • scripts/release.sh automates universal build → code-sign with hardened runtime → notarize via notarytool → package the final zip with the launcher, README, license, and third-party-license disclosure.

Documentation

  • New "Install — pre-built binary (recommended for non-developers)" section in the README, with a Gqrx → LiveAudioServer → iPhone walk-through.
  • New THIRD-PARTY-LICENSES.md documenting LGPL-2.1 compliance for the bundled libmp3lame.

Removed

  • The MacPorts/ Portfile and packaging notes. The MacPorts submission has been withdrawn; the bundled XCFramework makes a system lame port unnecessary.

Known issues

  • The Start LiveAudioServer.command script in the release zip is a plain shell script, which macOS doesn't let you notarize. The first time you launch it from a downloaded zip you'll see "Apple could not verify '<name>' is free of malware…". This is a one-time prompt — READ-ME-FIRST.txt and the README walk through how to clear it (right-click → Open on macOS 13–14, or System Settings → Privacy & Security → Open Anyway on macOS 15+). A future release will replace the loose launcher with a properly notarized .app bundle.

Install

Pre-built (recommended for non-developers)

  1. Download LiveAudioServer-v0.1.1-macos-universal.zip below.
  2. Double-click to unzip.
  3. Open READ-ME-FIRST.txt and follow the one-time first-launch steps.

From source

git clone https://github.com/dsward2/LiveAudioServer.git
cd LiveAudioServer
swift build -c release

Homebrew tap

brew install dsward2/tap/liveaudioserver

Checksums

  • LiveAudioServer-v0.1.1-macos-universal.zip — SHA256: fac97af57874d12984d3d428f85429f49d04f213aaa410ef0e05c9c9cec01e29)

LiveAudioServer 0.1.0

23 May 07:46

Choose a tag to compare

First tagged release.

  • Live PCM → MP3 + AAC streaming over HTTP (stdin / UDP / TCP input)
  • Optional HLS playlist + ADTS AAC segments
  • Native HTTPS via PKCS#12 (--tls-port)
  • HTTP Basic auth, IP allow-list, Bonjour advertising
  • Runtime recorder control + now-playing JSON endpoint
  • Homebrew formula in Formula/, MacPorts portfile in MacPorts/

See README for full usage.