Installing LyrionPlay

LyrionPlay plays music from your Lyrion Music Server (LMS) on your Mac. LMS sees it as an ordinary squeezelite player.

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

It lives in your menu bar and offers:

What you need

Why you sign it yourself

macOS opens an app without complaint only if it is signed by a developer who pays Apple for a certificate. LyrionPlay isn't, so you sign your own copy instead. That takes one command.

The installer does it for you:

  1. It creates a code-signing certificate called LyrionPlay Signing in your login keychain. It does this the first time only.
  2. It signs LyrionPlay with that certificate.

Some things to know about the certificate:

Install

  1. Download LyrionPlay-<version>.zip and double-click it. Finder unzips it into a folder in your Downloads, containing LyrionPlay.app, install.sh, uninstall.sh and this guide.
  2. Open Terminal. It's in Applications → Utilities, or press ⌘Space and type Terminal.
  3. Type sh and a space. Then drag install.sh from the folder into the Terminal window, and press Return. It should look like this:

    sh ~/Downloads/LyrionPlay-<version>/install.sh

    with your version's number in place of <version>.

    Running it through sh means macOS has no reason to block the script itself.

  4. Watch it work through its steps. It takes a few seconds:

    1. checks your Mac;
    2. creates your certificate, the first time only;
    3. copies the app to Applications;
    4. removes the "downloaded from the internet" flag, which is what would otherwise make macOS block the app;
    5. signs the app with your certificate;
    6. installs it;
    7. opens it.

    If macOS asks for your login password, or asks whether codesign may use the key "LyrionPlay Signing", enter your password and click Always Allow.

  5. Look for the icon: LyrionPlay's play arrow and waveform appears in the menu bar.

First run

  1. Switch the player on: click the menu bar icon and turn on the switch.
  2. Click Allow twice. macOS asks whether LyrionPlay may find devices on your local network: once for the player and once for its audio engine. The player can't reach your server without both.
  3. Play something. The player appears in LMS (in Material or any other LMS interface) under your Mac's name. Material shows it with an Apple icon.
  4. Choose your options: click the icon, then Settings…. See the next section.

The menu shows each player that is on: whether it is connected to your server, its output device with the rate it plays at (for DSD sent as DoP, the DSD rate, such as DSD64), a lock when it has the device to itself, and the track playing.

Quitting from the menu stops the player as well. Both start again when you log in, or when you open LyrionPlay from Applications. If the menu ever disappears while the player is running, it comes back by itself within a few seconds.

Settings

LyrionPlay has one player for each output, and each is its own player in LMS, with its own volume and its own settings. Settings lists them:

Each row has a switch, to turn that player on or off, and a cog, which opens its settings. If the Mac's sound output is a device whose own player is on, Follow the macOS output plays to the Mac's built-in output instead, so two players never share a device.

Below the players are the settings they share: Server is left empty to find your server on the network by itself; enter its name or IP address if it is on another network. Then the release time, Resampling quality, used only when your device lacks a track's rate, and Log detail: Debug writes more to the logs.

Save keeps your changes, Save and Close keeps them and closes the window, and Revert goes back to what is saved. If a save fails, the window says why and keeps your changes on screen.

A player's settings (the cog)

Name is the player's name in LMS; it starts as your Mac's name, or your Mac's name followed by the device's. To rename a player, use its player settings in LMS (or Material); LyrionPlay shows the new name. A player moved to another LMS server keeps its name there.

Remove This Player… (a device's player, not Follow the macOS output) removes it for good: its settings, its identity and logs, and its player in LMS. Use it for a device you no longer have, or to start a device afresh: if it is still connected it is listed again as a new player, switched off, and switching it on makes a new LMS player. If LMS can't be reached, or still shows the player, LyrionPlay says so; forget it in LMS's player settings.

Exclusive mode is on by default for external DACs (USB, Thunderbolt and the like), and off for the Mac's own outputs. While playing, LyrionPlay:

It lets go of the DAC 30 seconds after you stop. You can change that time in the shared settings. At 0 it reads never: LyrionPlay then keeps the DAC for as long as the player is on, even while stopped.

DAC accepts DSD over PCM (DoP). Turn this on only if your DAC supports DoP; macOS cannot detect it.

LMS volume. Each player offers only the choices its device can take: Device's own volume when the Mac can set its volume, Software when it can't, and Fixed only on a DAC, not on the Mac's own outputs (built-in speakers and headphones, Bluetooth, AirPlay, HDMI). Follow the macOS output offers Fixed only while it plays to a DAC whose volume the Mac can't set; on any other output it uses the one choice that output has.

Silence on a rate change. Some DACs mute for a moment after switching rate. If the start of a track gets clipped, add a little silence here.

For bit-perfect playback

Updating

Download the new zip and run its install.sh the same way. It:

macOS won't ask for any permission again.

Uninstalling

sh ~/Downloads/LyrionPlay-<version>/uninstall.sh

This stops the player and removes the app, its background service, its settings and its logs. It keeps your certificate, in case you reinstall. To delete the certificate too, add --remove-certificate.

Two things it can't remove:

Installing by hand, without the script

  1. Create the certificate. Open Keychain Access: press ⌘Space and type Keychain Access. Then, from its menu, choose Keychain Access → Certificate Assistant → Create a Certificate… and set:

    • Name: LyrionPlay Signing
    • Identity Type: Self-Signed Root
    • Certificate Type: Code Signing

    Then click Create.

  2. Install the app: drag LyrionPlay.app into Applications.
  3. Remove the download flag and sign the app. In Terminal, run these four commands. Signing goes from the inside out: the two helpers first, then the app itself.

    xattr -dr com.apple.quarantine /Applications/LyrionPlay.app
    codesign --force --options runtime -s "LyrionPlay Signing" -i com.crystalgipsy.lyrionplay.squeezelite /Applications/LyrionPlay.app/Contents/MacOS/squeezelite
    codesign --force --options runtime -s "LyrionPlay Signing" -i com.crystalgipsy.lyrionplay.lyrionplay-agent /Applications/LyrionPlay.app/Contents/MacOS/lyrionplay-agent
    codesign --force --options runtime -s "LyrionPlay Signing" /Applications/LyrionPlay.app
  4. Open LyrionPlay from Applications.

For an update, quit LyrionPlay from its menu, then repeat steps 2 to 4.

Without signing at all

You can skip signing:

  1. Drag the app into Applications and open it.
  2. When macOS refuses to open it, go to System Settings → Privacy & Security and click Open Anyway.

It works, but every update looks like a new app to macOS. You would approve it again, and click Allow on the Local Network prompts again, after each update.

If something goes wrong

Building from source

You need Apple's Command Line Tools: run xcode-select --install in Terminal. Then:

Licences

LyrionPlay is not affiliated with the Lyrion Music Server project.