This post is part of a series.
- Volume I - You are here
- Volume II
So you are an audiophile?
Let’s say you enjoy listening to music. This enjoyment slowly morphs into a relentless pursuit of quality. You buy some headphones, then some more expensive headphones, then dedicated amplifiers for your headphones. And before you know it, you are reading about USB jitters and why you should never trust a standard 3.5mm audio jack unless it has been blessed by one of three specific companies in the world. Like it or not, you are now an audiophile.
But you are also a modern audiophile. You do not own racks of CD albums, you no longer spend your afternoons browsing through physical catalogues at JB Hi-Fi or Sanity. You use Spotify. You want to use Siri to control your Spotify. This is 2021.
You visit some friends’ homes when there is no lockdown. They mostly use Google Home or Alexa to play their music. “It sounds great!”, they say. Occasionally someone will have a Sonos (or IKEA Sonos) speaker, and you nod slightly in approval, but this is not you.
You have speakers from the era of your grandparents. Your amplifier is older than your father. You have painstakingly imported a DAC from lands far away. You have clearly defined regimes of digital and analog transmission. You will find a way of integrating the best of the Smart Home movement with the best of the Good’ol Days.
The solution here is heavily geared towards the Apple ecosystem.
Inputs & Controls
- From Spotify app
- Initiate from iOS devices & AppleTV
- iOS/tvOS can use Airplay 2 to cast audio to one more more devices (Airplay 2 supports multi-room playback)
- “Hey Siri, play Spotify on <device>”
- Initiate from iOS devices, HomePod Mini
- Siri uses Airplay 2 to cast audio on target device
- iOS devices - bluetooth headphones or wired headphones via adapter
- HomePod Mini - music/podcasts in kitchen, bathroom
- TV built-in speakers - news, tv, youtube
- Headphone amp - music
- Vintage amp - music, vinyl, movies
Diagram for your troubles
That’s a special Raspberry Pi
It is serving a pretty important role! So it deserves some of its own commentary.
- Linux machines can become Airplay receivers via the open source tools “shairport-sync” 
- On Airplay 2 vs Airplay 1
- Airplay 2 supports multi-room playback, room-based audio and splitting stereo channels to multiple devices
- These features aren’t necessarily important for the Airplay Receiver
- So long as Siri can appropriately target the receiver, Airplay 2 vs 1 is not a big deal in this application
- There is not much clarity on how well Siri works with Airplay 1, only testing will tell!
- On audio quality
- Airplay 2 and 1 both stream audio via lossless ALAC, but there are some reports that Airplay 2 may not faithfully represent the lossless audio stream in a bit-perfect way. 
- Without getting into the extreme audiophile territory, I will take the position that both protocols are sufficiently good enough for my case
- The audiophile community also have some misgivings about the noisiness of USB signals coming out of a Raspberry Pi 
- Also avoiding the extreme audiophile territory, I will take the position that the digital signal from the RPi can be sufficiently treated by an external DAC, and that this does not have any realistic impact on analog reconstruction.
Good luck to me while I try to get everything to work together. This solution exists in concept only, and I’m sure many peculiarities will be discovered as I go about assembling the pieces.
References and notes
- shairport-sync: https://github.com/mikebrady/shairport-sync
- shairport-sync development build instructions: https://github.com/mikebrady/shairport-sync/blob/development/BUILDFORAP2.md
- shairport-sync Airplay 2 thread: https://github.com/mikebrady/shairport-sync/issues/535
- Blog post on measuring lossless audio stream in Airplay 1 and 2: https://audiophilestyle.com/ca/bits-and-bytes/apple-music-lossless-mess-part-2-airplay-r1026/
- Forum thread on USB noise in Raspberry Pi: https://www.audiosciencereview.com/forum/index.php?threads/raspberry-pi-usb-noisy.19137/