LyrionPlay

A bit-perfect Lyrion Music Server player for Apple Silicon Macs, built on squeezelite.

v0.4.14 Apple Silicon macOS 14+ Bit-perfect DSD over DoP
Download latest Installation

LyrionPlay plays music from your Lyrion Music Server (LMS) on your Mac. LMS sees it as an ordinary squeezelite player. It lives in your menu bar, and its player runs in the background.

Features

Bit-perfect on a DAC

Exclusive (hog) mode, with the DAC switched to each track's sample rate. Samples reach the DAC unchanged at full volume.

Told about your DAC

LMS learns your DAC's highest sample rate and transcodes anything above it. Rates the DAC lacks below that are resampled in the player, only when needed.

DSD

Sent as DoP to DACs you switch DoP on for (macOS can't tell which accept it), and converted to PCM for the rest.

LMS replay gain

Applied by the player, exactly as LMS sends it.

Volume, your choice per player

Device's own volume: the LMS slider moves your Mac's volume or your DAC's hardware volume, and a change made on the Mac moves the LMS slider (the volume keys when the output is the Mac's built-in speakers or Follow the macOS output, with Exclusive mode off). Software, where the Mac can't set the device's volume: the player scales the samples. Fixed, on a DAC: LyrionPlay sets LMS's fixed output level for you; a DAC whose volume the Mac sets holds the level LMS had, and on any other you use the DAC's or amplifier's own volume.

One player, or one per device

Use Follow the macOS output as a single player that plays wherever your Mac's sound goes, or switch a DAC or other output on as a player of its own, or both. Each is its own player in LMS, with its own name, volume and settings.

Menu bar app

Switch LyrionPlay on and off, see what each player is doing (the server, the device and the rate it plays at, the DSD rate for DoP), and set each player's options.

Signed by you

Every user signs their own copy with a certificate made on their own Mac, so no Apple developer account is involved.

One player, or one per device

You choose how LyrionPlay appears in LMS, in Settings:

What it looks like

The menu bar shows each player that is on: its server, and the device with the rate it plays at. In LMS each is an ordinary player, shown in Material with an Apple icon.

The LyrionPlay menu bar panel with two players, each connected, showing its device and sample rate Material's player list with the two LyrionPlay players and their Apple icons

Settings lists Follow the macOS output and every other output the Mac has. Switch a player on or off, and open its options with the cog. The server and the rest are set once for all players.

The Settings window: the players, each with a switch and a cog, then the shared settings

A player's options: exclusive mode, DoP, how the LMS volume slider works, and silence on a rate change. A DAC whose volume the Mac sets offers Device's own volume and Fixed.

The options of Follow the macOS output The options of a DAC player, with the LMS volume choices open

Requirements

Install

Download the latest release, then follow INSTALL.md. It takes one Terminal command.

How it works

part what it does
engine/squeezelite with a native CoreAudio output added (output_coreaudio.c): exclusive mode, per-track rate and format switching, DoP, the device's volume in both directions, and a report of what it plays for the menu.
app/Sources/AgentA background launch agent. It reads the devices' abilities from the engine, runs one engine for each player that is on and keeps it running, passes volume changes made on the Mac to LMS, and keeps LMS's fixed-volume setting in step with each device's choice.
app/Sources/AppThe menu bar app: On/Off, status, settings.
scripts/build.sh builds the app and the release. test.sh is the regression suite. install.sh and uninstall.sh are what users run.

Building from source

You need Apple's Command Line Tools (xcode-select --install). Nothing else is installed system-wide.

scripts/build.sh            # build and check
scripts/build.sh --install  # build, then install with your own certificate
scripts/build.sh --release  # build the two release zips (app, codec source) into dist/
scripts/test.sh             # the regression suite on its own

Every build runs the regression suite (scripts/test.sh) and stops if a test fails. It needs no DAC, server or keychain: the CoreAudio output is tested against a fake audio system.

The first build downloads pinned, checksummed sources and compiles them for Apple Silicon: CMake, and the codec libraries (FLAC, Ogg, Vorbis, Opus, mpg123, FAAD2, soxr, ALAC). This takes a while.

Credits

LyrionPlay's audio engine is squeezelite.

Squeezelite in turn contains:

Also used:

Full notices ship inside the app, in LyrionPlay.app/Contents/Resources/NOTICES.txt, with the full text of each licence in the licences folder beside it.

LyrionPlay is not affiliated with the Lyrion Music Server project.

Licence