For Mac · free download

Lysoniq Switcher

Predictive sample-rate switching

Never miss a note.

The Switcher changes your Mac's output sample rate inside the fade-out of the track that's ending, or in the silence at its end, so the next track plays at its true rate: 44.1 to 192 kHz, exactly as Apple Music streams it.

Works with Lysoniq Mac Remote on the same Mac · macOS 14 or later · administrator account

How it works

Predicted, not detected

A Mac never changes its output sample rate on its own, so a 96 kHz track through an output left at 44.1 kHz is resampled before your DAC ever sees it. Anything that waits to detect the new track has already missed its opening. Combined with Lysoniq Mac Remote, the Lysoniq Switcher knows what's coming next.

1

It knows what's next

  • Lysoniq manages the queue, so the next track is known before Music.app plays it.
  • Its rate is read from Apple's own catalog data before it plays.
  • The next track's prediction reaches the Switcher while the current track is still playing.
2

It switches in silence

  • Fade-out: it listens to how loud the last seconds are, and switches once the music has faded to near-silence, where you can't hear it.
  • No fade: Music.app stops at the end of the track, the rate switches in that stop, and the next track starts from its first sample. Nothing is clipped.
  • The next track opens already at its rate, with no relock over the music.
3

It's your call

  • Should a track ever stream at a different rate than listed, the Switcher notices in real time.
  • Correct it on the spot, or hold the current rate and apply it on that track's next play.
  • Either way, the true rate goes into the Rate Library, so the next time that track plays the prediction is certain.

How a rate change is timed

The mute has to land somewhere

Your DAC goes silent for about a second whenever its sample rate changes. The Switcher's whole job is to put that second where you won't hear it: inside the fade-out if the track has one, and in the stop or pause at its end if it doesn't. Pick a method to see exactly when the switch happens.

First choice
When there's no fade
If you'd rather
The mute
The second or so of silence your DAC makes while it changes to a new sample rate. Every method is about where to put it.
Relock Time
How long that mute lasts on your DAC. macOS can't measure it, so it's yours to set, and Measure in Settings times it for you.
Listening Window
The last few seconds of every track, when the Switcher listens for a fade-out.
Silence Threshold
How quiet the music has to get before it counts as silence.
Minimum Quiet
How long the music has to stay that quiet before the Switcher trusts it's a real fade-out and switches.
Pause Point
The moment just before the end of a track where playback is paused, for the methods that pause.
The last moment
The very end of a track. Some methods let it play while the DAC is still muted, so it goes unheard rather than delaying the next track.

Fade-Out Switching

On by default. Most tracks end in a fade-out: the music gets quieter and quieter until it's gone. In the last seconds of every track, the Listening Window, the Switcher listens to how loud Music.app is playing. Once the sound has stayed near-silent for the Minimum Quiet, with at least the Relock Time still to go, it switches the rate right there, inside the fade, where the DAC's mute can't be heard. The next track is handed to Music.app and follows on without a gap, already at its rate. A track with no fade at all is left to the fallback method you choose.

the end of the outgoing track Music.app Output rate ♫ ♫ ♫ ♫ ♪ ♪ ♪ ♪ outgoing track next track current rate relock new rate 1 2 3 4 Listening Window next track kept back from Music.app until the fade Minimum Quiet Relock Time, must end before the track does
  1. The Listening Window opens: the Switcher starts listening to how loud the music is. The next track's rate differs, so it is kept back from Music.app.
  2. The fading music drops below the Silence Threshold: quiet enough to count as silence.
  3. It has stayed quiet for the Minimum Quiet, with at least the Relock Time still to go: the switch is sent and the next track handed over.
  4. The outgoing track ends under the last of the quiet and the next runs on at its rate.
outgoing trackfading outnext trackcurrent ratenew ratethe DAC's mutelost under the mutewaitingMusic.app loading

Each diagram runs from a few seconds before the end of the track to a moment after it; a same-rate track is simply handed over and none of this happens. The window in Settings draws the same diagrams from your own settings, and they move as you change them.

The Live Monitor

See every switch, and why it happened

Live Monitor in the menu opens a Terminal window that tells you, line by line, what the Switcher is seeing and doing as you listen: the next track and its predicted rate, the fade going quiet, the switch and why it happened. Use this to better understand how any switch is triggered and tweak the settings for a better result in your system. Below is a real session, unedited.

Lysoniq Switcher — Live Monitor
▗▖ ▐▌ ██ ▗ ▗██▖ ▖ ▐▌ ▐██▌ ▐▌ ▖ █▙ ████ ▟█ ▗ ▖ ▙ ▗██ ▗████▖ ██▖ ▟ ▗ ▄▄▄▄▄▌ ▙ █ ▐██▖ ▐████▌ ▗██▌ █ ▟ ▐▄▄▄▄▄ ▝▀▀▀▀▀▀▀▀ ▛ █ ▐██▘ ▐████▌ ▝██▌ █ ▜ ▀▀▀▀▀▀▀▀▘ ▘ ▛ ▝██ ▝████▘ ██▘ ▜ ▝ ▘ █▛ ████ ▜█ ▝ ▐▌ ▐██▌ ▐▌ ▝ ▝██▘ ▘ ██ ▐▌ ▝▘ █ ▀▄ ▄▀ ▄▀▀▀▀ ▄▀▀▀▄ █▄ █ ▀█▀ ▄▀▀▀▄ █ █ ▀▀▀▄ █ █ █ ▀▄█ █ █ ▄▀ ▀▀▀▀ ▀ ▀▀▀▀ ▀▀▀ ▀ ▀ ▀▀▀ ▀▀ ▀ S W I T C H E R · live monitor
legend
▶ now playing — Music: the stream, per its own log │ DAC: the rate macOS reports the device at
▶ the next track and where its rate comes from
⇄ the DAC switched, and why
↳ an explanation or a tip
♪ fade meter near the end of a track (audio tap)
✎ Rate Library updated — a track's remembered rate
⚠ something to look at
⚙ a Music setting changed
· heartbeat — nothing changed
─── right now ──────────────────────────────────────────────────────────────────────────────────────
Now playing Hi-Res Lossless · 96 kHz · 24-bit — Stream started 15:30:44
Output SMSL USB AUDIO · 96 kHz — Matches the stream ✓
Mode Hold the target rate · pause, switch, resume at track changes
Lysoniq Connected
─── the last 30 minutes ──────────────────────────────────────────────────────────────────────────
15:21:28 ▶ next: "Always with Me" — Nicolas Horvath · also 96 kHz — nothing to switch
15:21:29 ▶ Music: Hi-Res Lossless · 96 kHz · 24-bit │ DAC: 96 kHz ✓
15:21:33 ▶ Music: Hi-Res Lossless · 96 kHz · 24-bit │ DAC: 96 kHz ✓ (changing track…)
15:21:34 ♫ "Always with Me" — Nicolas Horvath started · ALAC 96 kHz 24-bit · 5.7 s after the change — Music.app's stream took a while to arrive
15:21:34 ▶ Music: Hi-Res Lossless · 96 kHz · 24-bit │ DAC: 96 kHz ✓
15:21:39 ✎ Rate Library: "Always with Me" — Nicolas Horvath confirmed at 96 kHz under Hi-Res Lossless — the prediction was right
15:21:39 ▶ Music: Hi-Res Lossless · 96 kHz · 24-bit │ DAC: 96 kHz ✓
15:22:33 ▶ Music: Hi-Res Lossless · 96 kHz · 24-bit │ DAC: 96 kHz ✓ (scrubbed — reloading…)
15:22:33 ▶ Music: Hi-Res Lossless · 96 kHz · 24-bit │ DAC: 96 kHz ✓
15:22:49 ▶ next: "Ceremony for Flute and Orchestra: Pt. V" — Jonathan Stockhammer, Emmanuel Pahud & Dresdner Philharmonie · also 96 kHz — nothing to switch
15:22:49 ▶ Music: Hi-Res Lossless · 96 kHz · 24-bit │ DAC: 96 kHz ✓
15:22:53 ♫ "Ceremony for Flute and Orchestra: Pt. V" — Jonathan Stockhammer, Emmanuel Pahud & Dresdner Philharmonie playing · ALAC 96 kHz · the same stream runs on (no new queue) · 4.5 s after the change
15:22:53 ▶ Music: Hi-Res Lossless · 96 kHz · 24-bit │ DAC: 96 kHz ✓
15:22:58 ✎ Rate Library: "Ceremony for Flute and Orchestra: Pt. V" — Jonathan Stockhammer, Emmanuel Pahud & Dresdner Philharmonie confirmed at 96 kHz under Hi-Res Lossless — the prediction was right
15:22:59 ▶ Music: Hi-Res Lossless · 96 kHz · 24-bit │ DAC: 96 kHz ✓
15:23:12 ▶ Music: Hi-Res Lossless · 96 kHz · 24-bit │ DAC: 96 kHz ✓ (scrubbed — reloading…)
15:23:12 ▶ Music: Hi-Res Lossless · 96 kHz · 24-bit │ DAC: 96 kHz ✓
15:23:20 ▶ next: "再一次见面" — Zhou Shen · predicted 48 kHz from Apple's catalog
15:23:20 ♪ listening for a fade-out: quieter than -55 dBFS for 400 ms…
15:23:20 ♪ -67 dBFS · ends in 3887 ms
15:23:20 ♪ silence detected (below -55 dBFS) · ends in 3887 ms
15:23:20 ♪ -74 dBFS · ends in 3788 ms
15:23:20 ♪ -68 dBFS · ends in 3688 ms
15:23:20 ♪ -77 dBFS · ends in 3588 ms
15:23:20 ♪ -74 dBFS · ends in 3488 ms
15:23:20 ⇄ 96 kHz → 48 kHz · inside the fade-out (Fade-Out Switching) · 3387 ms before the end
15:23:21 ↳ switched inside the fade-out, so the DAC's mute lands in the quiet. If you heard the fade cut off, make the threshold stricter (a lower dBFS) or lengthen the quiet time
15:23:21 ↳ keeping 48 kHz for the next track while the last 96 kHz moments play out
15:23:21 ▶ Music: Hi-Res Lossless · 96 kHz · 24-bit │ DAC: 48 kHz (set for the next track)
15:23:25 ▶ Music: Hi-Res Lossless · 96 kHz · 24-bit │ DAC: 48 kHz (held — this step is resampled)
15:23:31 ▶ Music: Hi-Res Lossless · 96 kHz · 24-bit │ DAC: 48 kHz (held — this step is resampled) (changing track…) ⋯ Apple's streams: 96k now · 48k loading → DAC set for it
15:23:31 ♫ "再一次见面" — Zhou Shen started · ALAC 48 kHz 24-bit · 11.7 s after the change — Music.app's stream took a while to arrive
15:23:31 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 48 kHz ✓
15:23:31 ↳ Music.app waited 6.9 s for Apple's stream to start "再一次见面" after Music.app's own advance. Music.app moved on to it by itself; Apple's stream took that long to arrive.
15:23:35 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 48 kHz ✓
15:23:36 ✎ Rate Library: "再一次见面" — Zhou Shen confirmed at 48 kHz under Hi-Res Lossless — the prediction was right
15:23:37 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 48 kHz ✓
15:23:47 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 48 kHz ✓ (scrubbed — reloading…)
15:23:47 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 48 kHz ✓
15:23:55 ▶ next: "Avril" — Curbside Lambsear · predicted 44.1 kHz from Apple's catalog
15:23:55 ♪ listening for a fade-out: quieter than -55 dBFS for 400 ms…
15:23:55 ♪ -23 dBFS · ends in 3882 ms
15:23:55 ♪ -25 dBFS · ends in 3785 ms
15:23:55 ♪ -25 dBFS · ends in 3685 ms
15:23:55 ♪ -26 dBFS · ends in 3685 ms
15:23:55 ♪ -27 dBFS · ends in 3485 ms
15:23:55 ♪ -29 dBFS · ends in 3385 ms
15:23:56 ♪ -29 dBFS · ends in 3285 ms
15:23:56 ♪ -29 dBFS · ends in 3185 ms
15:23:56 ♪ -31 dBFS · ends in 3085 ms
15:23:56 ♪ -34 dBFS · ends in 2985 ms
15:23:56 ♪ -36 dBFS · ends in 2885 ms
15:23:56 ♪ -37 dBFS · ends in 2785 ms
15:23:56 ♪ -38 dBFS · ends in 2685 ms
15:23:56 ♪ -39 dBFS · ends in 2582 ms
15:23:56 ♪ -39 dBFS · ends in 2485 ms
15:23:56 ♪ -40 dBFS · ends in 2389 ms
15:23:57 ♪ -40 dBFS · ends in 2289 ms
15:23:57 ♪ -41 dBFS · ends in 2189 ms
15:23:57 ♪ -41 dBFS · ends in 2090 ms
15:23:57 ♪ -42 dBFS · ends in 1989 ms
15:23:57 ♪ -42 dBFS · ends in 1889 ms
15:23:57 ♪ -43 dBFS · ends in 1789 ms
15:23:57 ♪ -44 dBFS · ends in 1689 ms
15:23:57 ♪ -45 dBFS · ends in 1689 ms
15:23:57 ♪ -46 dBFS · ends in 1489 ms
15:23:57 ♪ -47 dBFS · ends in 1389 ms
15:23:58 ♪ -48 dBFS · ends in 1286 ms
15:23:58 ♪ -49 dBFS · ends in 1186 ms
15:23:58 ♪ -51 dBFS · ends in 1086 ms
15:23:58 ♪ -52 dBFS · ends in 986 ms
15:23:58 ♪ -53 dBFS · ends in 886 ms
15:23:58 ♪ -55 dBFS · ends in 786 ms
15:23:58 ♪ -56 dBFS · ends in 686 ms
15:23:58 ♪ silence detected (below -55 dBFS) · ends in 686 ms
15:23:58 ♪ -58 dBFS · ends in 587 ms
15:23:58 ♪ -61 dBFS · ends in 487 ms
15:23:58 ♪ -68 dBFS · ends in 386 ms
15:23:59 ♪ -75 dBFS · ends in 286 ms
15:23:59 ↳ silence came with 0.2 s left — under the 400 ms Pause Point, too late for even a brief pause, applying Stop to Switch instead
15:23:59 ♪ -83 dBFS · ends in 188 ms
15:23:59 ♪ quiet for 400 ms — but only 188 ms left, less than the 400 ms Pause Point — too late for even a brief pause, so the switch waits for the stop between the tracks. To switch inside fades like this one, raise the Silence Threshold or lengthen the Listening Window
15:23:59 ♪ -87 dBFS · ends in 89 ms
15:23:59 ♪ -114 dBFS · ends in 89 ms
15:23:59 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 48 kHz ✓
15:23:59 ⇄ 48 kHz → 44.1 kHz · in Music.app's stop between the tracks (Stop to Switch)
15:23:59 ↳ stopped for the Relock time (1100 ms) plus Music.app's own start. If the next track's first note was clipped, raise Relock time
15:23:59 ↳ Lysoniq asked Music.app for "Avril" at once — the next ♫ line says how long Music.app took to start it
15:24:00 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 44.1 kHz (held — this step is resampled)
15:24:00 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 44.1 kHz (held — this step is resampled) (changing track…) ⋯ Apple's streams: 48k now · 44.1k loading → DAC set for it
15:24:00 ♫ "Avril" — Curbside Lambsear started · ALAC 44.1 kHz 24-bit · 1.0 s after the change
15:24:00 ▶ Music: Lossless · 44.1 kHz · 24-bit │ DAC: 44.1 kHz ✓
15:24:05 ✎ Rate Library: "Avril" — Curbside Lambsear confirmed at 44.1 kHz under Hi-Res Lossless — the prediction was right
15:24:05 ▶ Music: Lossless · 44.1 kHz · 24-bit │ DAC: 44.1 kHz ✓
15:24:32 ▶ Music: Lossless · 44.1 kHz · 24-bit │ DAC: 44.1 kHz ✓ (scrubbed — reloading…)
15:24:32 ▶ Music: Lossless · 44.1 kHz · 24-bit │ DAC: 44.1 kHz ✓
15:24:52 ▶ next: "Knutmo 1-5" — Formal Sppeedwear · also 44.1 kHz — nothing to switch
15:24:52 ▶ Music: Lossless · 44.1 kHz · 24-bit │ DAC: 44.1 kHz ✓ (changing track…)
15:24:56 ♫ "Knutmo 1-5" — Formal Sppeedwear started · ALAC 44.1 kHz 16-bit · 4.0 s after the change
15:24:56 ▶ Music: Lossless · 44.1 kHz · 16-bit │ DAC: 44.1 kHz ✓
15:25:02 ✎ Rate Library: "Knutmo 1-5" — Formal Sppeedwear confirmed at 44.1 kHz under Hi-Res Lossless — the prediction was right
15:25:03 ▶ Music: Lossless · 44.1 kHz · 16-bit │ DAC: 44.1 kHz ✓
15:25:05 ▶ Music: Lossless · 44.1 kHz · 16-bit │ DAC: 44.1 kHz ✓ (changing track…)
15:25:05 ▶ Music: Lossless · 44.1 kHz · 16-bit │ DAC: 44.1 kHz ✓
15:25:13 ▶ next: "The Knife" — Gracie Abrams · predicted 48 kHz from Apple's catalog (Atmos doesn't play on this output — learned from plays)
15:25:14 ♪ listening for a fade-out: quieter than -55 dBFS for 400 ms…
15:25:14 ♪ -14 dBFS · ends in 3820 ms
15:25:14 ♪ -18 dBFS · ends in 3720 ms
15:25:14 ♪ -16 dBFS · ends in 3620 ms
15:25:14 ♪ -17 dBFS · ends in 3520 ms
15:25:14 ♪ -18 dBFS · ends in 3420 ms
15:25:14 ♪ -13 dBFS · ends in 3319 ms
15:25:14 ♪ -17 dBFS · ends in 3220 ms
15:25:14 ♪ -14 dBFS · ends in 3025 ms
15:25:14 ♪ -18 dBFS · ends in 2925 ms
15:25:15 ♪ -19 dBFS · ends in 2825 ms
15:25:15 ♪ -14 dBFS · ends in 2724 ms
15:25:15 ♪ -17 dBFS · ends in 2623 ms
15:25:15 ♪ -19 dBFS · ends in 2523 ms
15:25:15 ♪ -21 dBFS · ends in 2424 ms
15:25:15 ♪ -20 dBFS · ends in 2325 ms
15:25:15 ♪ -15 dBFS · ends in 2225 ms
15:25:15 ♪ -21 dBFS · ends in 2125 ms
15:25:15 ♪ -16 dBFS · ends in 2025 ms
15:25:15 ♪ -18 dBFS · ends in 1921 ms
15:25:16 ♪ -15 dBFS · ends in 1821 ms
15:25:16 ♪ -15 dBFS · ends in 1720 ms
15:25:16 ♪ -17 dBFS · ends in 1620 ms
15:25:16 ♪ -17 dBFS · ends in 1521 ms
15:25:16 ♪ -19 dBFS · ends in 1421 ms
15:25:16 ♪ -25 dBFS · ends in 1320 ms
15:25:16 ♪ -40 dBFS · ends in 1221 ms
15:25:16 ♪ -48 dBFS · ends in 1120 ms
15:25:16 ♪ -54 dBFS · ends in 1021 ms
15:25:16 ♪ -58 dBFS · ends in 921 ms
15:25:16 ♪ silence detected (below -55 dBFS) · ends in 921 ms
15:25:17 ♪ -61 dBFS · ends in 825 ms
15:25:17 ♪ -64 dBFS · ends in 725 ms
15:25:17 ♪ -65 dBFS · ends in 624 ms
15:25:17 ♪ -68 dBFS · ends in 525 ms
15:25:17 ⇄ 44.1 kHz → 48 kHz · inside the fade-out, with a brief pause to finish the relock (Fade-Out Switching) · 424 ms before the end
15:25:18 ↳ switched inside the fade-out; a brief pause at the Pause Point covered the rest of the relock. If the next track's first note was clipped, raise Relock Time; if the pause felt long, the fade came late — raise the Silence Threshold or lengthen the Listening Window
15:25:18 ▶ Music: Lossless · 44.1 kHz · 16-bit │ DAC: 48 kHz (set for the next track)
15:25:18 ▶ Music: Lossless · 44.1 kHz · 16-bit │ DAC: 48 kHz (set for the next track) (changing track…)
15:25:18 ♫ "The Knife" — Gracie Abrams started · ALAC 44.1 kHz 16-bit · 4.4 s after the change — Music.app's stream took a while to arrive
15:25:18 ↳ keeping 48 kHz for the next track while the last 44.1 kHz moments play out
15:25:18 ▶ Music: Lossless · 44.1 kHz · 16-bit │ DAC: 48 kHz (set for the next track) (paused)
15:25:18 ▶ Music: Lossless · 44.1 kHz · 16-bit │ DAC: 48 kHz (held — this step is resampled) (changing track…) ⋯ Apple's streams: 44.1k now · 48k loading → DAC set for it
15:25:18 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 48 kHz ✓ ⋯ Apple's streams: 44.1k ending · 48k now
15:25:23 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 48 kHz ✓
15:25:24 ✎ Rate Library: "The Knife" — Gracie Abrams confirmed at 48 kHz under Hi-Res Lossless — the prediction was right
15:25:25 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 48 kHz ✓
15:25:49 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 48 kHz ✓ (scrubbed — reloading…)
15:25:49 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 48 kHz ✓
15:25:59 ▶ next: "Cello Sonata, Op. 6: II. Adagio" — Andreas Brantelid & Søren Rastogi · predicted 96 kHz (hi-res, exact rate unknown until played)
15:25:59 ♪ listening for a fade-out: quieter than -55 dBFS for 400 ms…
15:25:59 ♪ -41 dBFS · ends in 3839 ms
15:25:59 ♪ -42 dBFS · ends in 3747 ms
15:25:59 ♪ -42 dBFS · ends in 3647 ms
15:25:59 ♪ -43 dBFS · ends in 3647 ms
15:25:59 ♪ -43 dBFS · ends in 3448 ms
15:25:59 ♪ -43 dBFS · ends in 3347 ms
15:25:59 ♪ -44 dBFS · ends in 3247 ms
15:26:00 ♪ -44 dBFS · ends in 3146 ms
15:26:00 ♪ -45 dBFS · ends in 3047 ms
15:26:00 ♪ -45 dBFS · ends in 2947 ms
15:26:00 ♪ -47 dBFS · ends in 2847 ms
15:26:00 ♪ -47 dBFS · ends in 2747 ms
15:26:00 ♪ -48 dBFS · ends in 2639 ms
15:26:00 ♪ -46 dBFS · ends in 2539 ms
15:26:00 ♪ -45 dBFS · ends in 2440 ms
15:26:00 ♪ -45 dBFS · ends in 2340 ms
15:26:00 ♪ -45 dBFS · ends in 2239 ms
15:26:01 ♪ -46 dBFS · ends in 2139 ms
15:26:01 ♪ -47 dBFS · ends in 2039 ms
15:26:01 ♪ -47 dBFS · ends in 1939 ms
15:26:01 ♪ -47 dBFS · ends in 1839 ms
15:26:01 ♪ -47 dBFS · ends in 1739 ms
15:26:01 ♪ -55 dBFS · ends in 1639 ms
15:26:01 ♪ -62 dBFS · ends in 1639 ms
15:26:01 ♪ silence detected (below -55 dBFS) · ends in 1639 ms
15:26:01 ♪ -66 dBFS · ends in 1440 ms
15:26:01 ♪ -68 dBFS · ends in 1339 ms
15:26:01 ♪ -72 dBFS · ends in 1239 ms
15:26:02 ♪ -75 dBFS · ends in 1139 ms
15:26:02 ⇄ 48 kHz → 96 kHz · inside the fade-out, with a brief pause to finish the relock (Fade-Out Switching) · 1038 ms before the end
15:26:02 ↳ switched inside the fade-out; a brief pause at the Pause Point covered the rest of the relock. If the next track's first note was clipped, raise Relock Time; if the pause felt long, the fade came late — raise the Silence Threshold or lengthen the Listening Window
15:26:03 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 96 kHz (set for the next track)
15:26:03 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 96 kHz (set for the next track) (changing track…)
15:26:03 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 96 kHz (set for the next track) (paused)
15:26:03 ♫ "Cello Sonata, Op. 6: II. Adagio" — Andreas Brantelid & Søren Rastogi started · ALAC 48 kHz 24-bit · 4.3 s after the change — the opening; the 192 kHz stream is loading
15:26:03 ↳ keeping 96 kHz for the next track while the last 48 kHz moments play out
15:26:04 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 96 kHz (set for the next track)
15:26:05 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 96 kHz (held — this step is resampled)
15:26:16 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 96 kHz (held — this step is resampled) (scrubbed — reloading…)
15:26:16 ♫ now ALAC 192 kHz 24-bit · 16.8 s after the change — Music.app's stream took a while to arrive
15:26:16 ↳ Lysoniq predicted 96 kHz but the stream settled at 192 kHz — relocking mid-track because Mid-Track Correction is on (Upward Only). One gap now, none next time: the Rate Library learns 192 kHz for this track. To never relock inside a track, turn Mid-Track Correction off — this play would then have stayed at 96 kHz, resampled
15:26:16 ⇄ 96 kHz → 192 kHz · corrected to the stream's settled rate (Mid-Track Correction · Upward Only)
15:26:16 ▶ Music: Hi-Res Lossless · 192 kHz · 24-bit │ DAC: 96 kHz ≠ relocking…
15:26:16 ↳ this rate was learned after the track started — Lysoniq will predict it next time, so the switch lands before the music
15:26:17 ▶ Music: Hi-Res Lossless · 192 kHz · 24-bit │ DAC: 192 kHz ✓
15:26:21 ✎ Rate Library: "Cello Sonata, Op. 6: II. Adagio" — Andreas Brantelid & Søren Rastogi learned at 192 kHz under Hi-Res Lossless — the prediction (96 kHz) was wrong; corrected for its next play — this play relocked mid-track (Mid-Track Correction)
15:26:21 ▶ Music: Hi-Res Lossless · 192 kHz · 24-bit │ DAC: 192 kHz ✓
15:26:24 ▶ next: "Drivin’ Nails In My Coffin (feat. Cory Walker)" — AJ Lee & Blue Summit · predicted 44.1 kHz from Apple's catalog
15:26:24 ♪ listening for a fade-out: quieter than -55 dBFS for 400 ms…
15:26:24 ♪ -48 dBFS · ends in 3936 ms
15:26:24 ♪ -50 dBFS · ends in 3736 ms
15:26:24 ♪ -50 dBFS · ends in 3636 ms
15:26:24 ♪ -51 dBFS · ends in 3536 ms
15:26:24 ♪ -52 dBFS · ends in 3436 ms
15:26:24 ♪ -51 dBFS · ends in 3336 ms
15:26:24 ♪ -51 dBFS · ends in 3236 ms
15:26:24 ♪ -51 dBFS · ends in 3136 ms
15:26:25 ♪ -51 dBFS · ends in 3036 ms
15:26:25 ♪ -51 dBFS · ends in 2936 ms
15:26:25 ♪ -53 dBFS · ends in 3628 ms
15:26:25 ♪ -53 dBFS · ends in 3528 ms
15:26:25 ♪ -52 dBFS · ends in 3428 ms
15:26:25 ♪ -52 dBFS · ends in 3328 ms
15:26:25 ♪ -51 dBFS · ends in 3228 ms
15:26:25 ♪ -54 dBFS · ends in 3228 ms
15:26:25 ♪ -54 dBFS · ends in 3028 ms
15:26:25 ♪ -54 dBFS · ends in 2928 ms
15:26:26 ♪ -52 dBFS · ends in 2828 ms
15:26:26 ♪ -52 dBFS · ends in 2728 ms
15:26:26 ♪ -53 dBFS · ends in 2628 ms
15:26:26 ♪ -55 dBFS · ends in 2530 ms
15:26:26 ♪ -54 dBFS · ends in 2530 ms
15:26:26 ♪ -54 dBFS · ends in 2328 ms
15:26:26 ♪ -55 dBFS · ends in 2230 ms
15:26:26 ♪ -55 dBFS · ends in 2129 ms
15:26:26 ♪ -55 dBFS · ends in 2029 ms
15:26:26 ♪ silence detected (below -55 dBFS) · ends in 2029 ms
15:26:26 ♪ -56 dBFS · ends in 1930 ms
15:26:27 ♪ -57 dBFS · ends in 1829 ms
15:26:27 ♪ -61 dBFS · ends in 1729 ms
15:26:27 ♪ -65 dBFS · ends in 1630 ms
15:26:27 ⇄ 192 kHz → 44.1 kHz · inside the fade-out (Fade-Out Switching) · 1529 ms before the end
15:26:28 ↳ switched inside the fade-out, so the DAC's mute lands in the quiet. If you heard the fade cut off, make the threshold stricter (a lower dBFS) or lengthen the quiet time
15:26:28 ▶ Music: Hi-Res Lossless · 192 kHz · 24-bit │ DAC: 44.1 kHz (set for the next track)
15:26:28 ↳ keeping 44.1 kHz for the next track while the last 192 kHz moments play out
15:26:28 ▶ Music: Hi-Res Lossless · 192 kHz · 24-bit │ DAC: 44.1 kHz (set for the next track) (changing track…) ⋯ Apple's streams: 192k now · 44.1k loading → DAC set for it
15:26:29 ♫ "Drivin’ Nails In My Coffin (feat. Cory Walker)" — AJ Lee & Blue Summit started · ALAC 44.1 kHz 24-bit · 5.6 s after the change — Music.app's stream took a while to arrive
15:26:29 ▶ Music: Lossless · 44.1 kHz · 24-bit │ DAC: 44.1 kHz ✓ ⋯ Apple's streams: 192k ending · 44.1k now
15:26:33 ▶ Music: Lossless · 44.1 kHz · 24-bit │ DAC: 44.1 kHz ✓
15:26:34 ✎ Rate Library: "Drivin’ Nails In My Coffin (feat. Cory Walker)" — AJ Lee & Blue Summit confirmed at 44.1 kHz under Hi-Res Lossless — the prediction was right
15:26:35 ▶ Music: Lossless · 44.1 kHz · 24-bit │ DAC: 44.1 kHz ✓
15:26:39 ▶ Music: Lossless · 44.1 kHz · 24-bit │ DAC: 44.1 kHz ✓ (changing track…)
15:26:39 ▶ Music: Lossless · 44.1 kHz · 24-bit │ DAC: 44.1 kHz ✓
15:26:46 ▶ next: "Let 'Em Know" — Shaboozey · predicted 48 kHz from Apple's catalog (Atmos doesn't play on this output — learned from plays)
15:26:46 ♪ listening for a fade-out: quieter than -55 dBFS for 400 ms…
15:26:46 ♪ -31 dBFS · ends in 3805 ms
15:26:46 ♪ -32 dBFS · ends in 3704 ms
15:26:46 ♪ -33 dBFS · ends in 3604 ms
15:26:46 ♪ -34 dBFS · ends in 3504 ms
15:26:46 ♪ -35 dBFS · ends in 3404 ms
15:26:46 ♪ -36 dBFS · ends in 3304 ms
15:26:46 ♪ -37 dBFS · ends in 3204 ms
15:26:46 ♪ -38 dBFS · ends in 3104 ms
15:26:46 ♪ -40 dBFS · ends in 3004 ms
15:26:47 ♪ -41 dBFS · ends in 2904 ms
15:26:47 ♪ -43 dBFS · ends in 2805 ms
15:26:47 ♪ -45 dBFS · ends in 2704 ms
15:26:47 ♪ -47 dBFS · ends in 2604 ms
15:26:47 ♪ -50 dBFS · ends in 2504 ms
15:26:47 ♪ -52 dBFS · ends in 2404 ms
15:26:47 ♪ -56 dBFS · ends in 2304 ms
15:26:47 ♪ silence detected (below -55 dBFS) · ends in 2304 ms
15:26:47 ♪ -58 dBFS · ends in 2204 ms
15:26:47 ♪ -62 dBFS · ends in 2104 ms
15:26:47 ♪ -66 dBFS · ends in 2004 ms
15:26:48 ♪ -69 dBFS · ends in 1904 ms
15:26:48 ♪ -74 dBFS · ends in 1804 ms
15:26:48 ♪ quiet for 400 ms — threshold reached · ends in 1804 ms
15:26:48 ⇄ 44.1 kHz → 48 kHz · inside the fade-out (Fade-Out Switching) · 1704 ms before the end
15:26:48 ↳ switched inside the fade-out, so the DAC's mute lands in the quiet. If you heard the fade cut off, make the threshold stricter (a lower dBFS) or lengthen the quiet time
15:26:49 ↳ keeping 48 kHz for the next track while the last 44.1 kHz moments play out
15:26:49 ▶ Music: Lossless · 44.1 kHz · 24-bit │ DAC: 48 kHz (set for the next track)
15:26:50 ▶ Music: Lossless · 44.1 kHz · 24-bit │ DAC: 48 kHz (set for the next track) (changing track…) ⋯ Apple's streams: 44.1k now · 48k loading → DAC set for it
15:26:50 ♫ "Let 'Em Know" — Shaboozey started · ALAC 48 kHz 24-bit · 4.7 s after the change — Music.app's stream took a while to arrive
15:26:50 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 48 kHz ✓ ⋯ Apple's streams: 44.1k ending · 48k now
15:26:55 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 48 kHz ✓
15:26:56 ✎ Rate Library: "Let 'Em Know" — Shaboozey confirmed at 48 kHz under Hi-Res Lossless — the prediction was right
15:26:57 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 48 kHz ✓
15:27:10 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 48 kHz ✓ (scrubbed — reloading…)
15:27:11 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 48 kHz ✓
15:27:16 ▶ next: "Neighbours" — Ninush · also 48 kHz — nothing to switch
15:27:17 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 48 kHz ✓
15:27:21 ♫ "Neighbours" — Ninush playing · ALAC 48 kHz · the same stream runs on (no new queue) · 4.7 s after the change
15:27:21 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 48 kHz ✓
15:27:26 ✎ Rate Library: "Neighbours" — Ninush confirmed at 48 kHz under Hi-Res Lossless — the prediction was right
15:27:26 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 48 kHz ✓ (changing track…)
15:27:26 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 48 kHz ✓
15:27:33 ▶ next: "Princess Mononoke" — LAWA · also 48 kHz — nothing to switch
15:27:33 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 48 kHz ✓
15:27:37 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 48 kHz ✓ (changing track…)
15:27:37 ♫ "Princess Mononoke" — LAWA started · ALAC 48 kHz 24-bit · 4.8 s after the change — Music.app's stream took a while to arrive
15:27:37 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 48 kHz ✓
15:27:41 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 48 kHz ✓ (changing track…)
15:27:41 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 48 kHz ✓ ⋯ Apple's streams: 48k ending · 48k now
15:27:43 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 48 kHz ✓
15:27:46 ✎ Rate Library: "Princess Mononoke" — LAWA confirmed at 48 kHz under Hi-Res Lossless — the prediction was right
15:27:47 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 48 kHz ✓
15:27:48 ▶ next: "Orbit" — Miley Cyrus · also 48 kHz — nothing to switch
15:27:49 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 48 kHz ✓
15:27:53 ♫ "Orbit" — Miley Cyrus playing · ALAC 48 kHz · the same stream runs on (no new queue) · 4.4 s after the change
15:27:53 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 48 kHz ✓
15:27:58 ✎ Rate Library: "Orbit" — Miley Cyrus confirmed at 48 kHz under Hi-Res Lossless — the prediction was right
15:27:59 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 48 kHz ✓
15:28:39 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 48 kHz ✓ (scrubbed — reloading…)
15:28:39 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 48 kHz ✓
15:28:49 ▶ next: "Unstern! – Sinistre, S. 208" — Yulianna Avdeeva · predicted 96 kHz (hi-res, exact rate unknown until played) (Atmos doesn't play on this output — learned from plays)
15:28:49 ♪ listening for a fade-out: quieter than -55 dBFS for 400 ms…
15:28:49 ♪ -21 dBFS · ends in 3821 ms
15:28:49 ♪ -20 dBFS · ends in 3721 ms
15:28:50 ♪ -19 dBFS · ends in 3621 ms
15:28:50 ♪ -18 dBFS · ends in 3495 ms
15:28:50 ♪ -17 dBFS · ends in 3395 ms
15:28:50 ♪ -16 dBFS · ends in 3295 ms
15:28:50 ♪ -17 dBFS · ends in 3196 ms
15:28:50 ♪ -16 dBFS · ends in 3095 ms
15:28:50 ♪ -15 dBFS · ends in 2995 ms
15:28:50 ♪ -13 dBFS · ends in 2895 ms
15:28:50 ♪ -11 dBFS · ends in 2790 ms
15:28:50 ♪ -10 dBFS · ends in 2695 ms
15:28:51 ♪ -9 dBFS · ends in 2595 ms
15:28:51 ♪ -7 dBFS · ends in 2495 ms
15:28:51 ♪ -7 dBFS · ends in 2387 ms
15:28:51 ♪ -6 dBFS · ends in 2287 ms
15:28:51 ♪ -5 dBFS · ends in 2187 ms
15:28:51 ♪ -6 dBFS · ends in 2087 ms
15:28:51 ♪ -6 dBFS · ends in 1984 ms
15:28:51 ♪ -5 dBFS · ends in 1984 ms
15:28:51 ♪ -5 dBFS · ends in 1787 ms
15:28:51 ♪ -6 dBFS · ends in 1687 ms
15:28:52 ♪ -43 dBFS · ends in 1587 ms
15:28:52 ♪ -103 dBFS · ends in 1487 ms
15:28:52 ♪ silence detected (below -55 dBFS) · ends in 1487 ms
15:28:52 ♪ -118 dBFS · ends in 1387 ms
15:28:52 ⇄ 48 kHz → 96 kHz · inside the fade-out, with a brief pause to finish the relock (Fade-Out Switching) · 984 ms before the end
15:28:53 ↳ switched inside the fade-out; a brief pause at the Pause Point covered the rest of the relock. If the next track's first note was clipped, raise Relock Time; if the pause felt long, the fade came late — raise the Silence Threshold or lengthen the Listening Window
15:28:53 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 96 kHz (set for the next track)
15:28:53 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 96 kHz (set for the next track) (changing track…)
15:28:54 ♫ "Unstern! – Sinistre, S. 208" — Yulianna Avdeeva started · ALAC 48 kHz 24-bit · 4.2 s after the change — the opening; the 192 kHz stream is loading
15:28:54 ↳ keeping 96 kHz for the next track while the last 48 kHz moments play out
15:28:54 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 96 kHz (set for the next track) (paused)
15:28:55 ♫ now ALAC 192 kHz 24-bit · 5.5 s after the change — Music.app's stream took a while to arrive
15:28:55 ↳ Lysoniq predicted 96 kHz but the stream settled at 192 kHz — relocking mid-track because Mid-Track Correction is on (Upward Only). One gap now, none next time: the Rate Library learns 192 kHz for this track. To never relock inside a track, turn Mid-Track Correction off — this play would then have stayed at 96 kHz, resampled
15:28:55 ⇄ 96 kHz → 192 kHz · corrected to the stream's settled rate (Mid-Track Correction · Upward Only)
15:28:55 ▶ Music: Hi-Res Lossless · 192 kHz · 24-bit │ DAC: 96 kHz ≠ relocking… ⋯ Apple's streams: 48k ending · 192k now
15:28:55 ↳ this rate was learned after the track started — Lysoniq will predict it next time, so the switch lands before the music
15:28:56 ▶ Music: Hi-Res Lossless · 192 kHz · 24-bit │ DAC: 192 kHz ✓ ⋯ Apple's streams: 48k ending · 192k now
15:28:59 ▶ Music: Hi-Res Lossless · 192 kHz · 24-bit │ DAC: 192 kHz ✓
15:29:00 ✎ Rate Library: "Unstern! – Sinistre, S. 208" — Yulianna Avdeeva learned at 192 kHz under Hi-Res Lossless — the prediction (96 kHz) was wrong; corrected for its next play — this play relocked mid-track (Mid-Track Correction)
15:29:01 ▶ Music: Hi-Res Lossless · 192 kHz · 24-bit │ DAC: 192 kHz ✓
15:30:22 ▶ Music: Hi-Res Lossless · 192 kHz · 24-bit │ DAC: 192 kHz ✓ (scrubbed — reloading…)
15:30:22 ▶ Music: Hi-Res Lossless · 192 kHz · 24-bit │ DAC: 192 kHz ✓
15:30:39 ▶ next: "Illuminations" — Ancient Infinity Orchestra · predicted 96 kHz (hi-res, exact rate unknown until played)
15:30:39 ♪ listening for a fade-out: quieter than -55 dBFS for 400 ms…
15:30:39 ♪ -65 dBFS · ends in 3905 ms
15:30:39 ♪ silence detected (below -55 dBFS) · ends in 3905 ms
15:30:39 ♪ -66 dBFS · ends in 3714 ms
15:30:39 ♪ -65 dBFS · ends in 3613 ms
15:30:39 ♪ -64 dBFS · ends in 3613 ms
15:30:39 ♪ -67 dBFS · ends in 3413 ms
15:30:39 ♪ -69 dBFS · ends in 3314 ms
15:30:39 ♪ quiet for 400 ms — threshold reached · ends in 3314 ms
15:30:40 ⇄ 192 kHz → 96 kHz · inside the fade-out (Fade-Out Switching) · 3213 ms before the end
15:30:40 ↳ switched inside the fade-out, so the DAC's mute lands in the quiet. If you heard the fade cut off, make the threshold stricter (a lower dBFS) or lengthen the quiet time
15:30:40 ↳ keeping 96 kHz for the next track while the last 192 kHz moments play out
15:30:40 ▶ Music: Hi-Res Lossless · 192 kHz · 24-bit │ DAC: 96 kHz (set for the next track)
15:30:43 ▶ Music: Hi-Res Lossless · 192 kHz · 24-bit │ DAC: 96 kHz (set for the next track) (changing track…) ⋯ Apple's streams: 192k now · 96k loading → DAC set for it
15:30:44 ♫ "Illuminations" — Ancient Infinity Orchestra started · ALAC 96 kHz 24-bit · 4.7 s after the change — Music.app's stream took a while to arrive
15:30:44 ▶ Music: Hi-Res Lossless · 96 kHz · 24-bit │ DAC: 96 kHz ✓ ⋯ Apple's streams: 192k ending · 96k now
15:30:47 ▶ Music: Hi-Res Lossless · 96 kHz · 24-bit │ DAC: 96 kHz ✓
15:30:50 ✎ Rate Library: "Illuminations" — Ancient Infinity Orchestra confirmed at 96 kHz under Hi-Res Lossless — the prediction was right
─── live ─────────────────────────────────────────────────────────────────────────── Ctrl-C to stop

A real session, unedited: fourteen tracks and ten switches between 44.1, 48, 96 and 192 kHz. Four inside a fade-out, three in a late fade with a brief pause, one in the stop between tracks, and two corrected mid-track as a hi-res stream settled at 192 kHz. Scroll to follow it.

Learn moreShow less

Live Monitor in the menu opens a Terminal window that narrates what the app sees and does, one line per event, as you listen: the next track and where its rate came from, the loudness meter counting down through a fade, the switch and why it fired, and after each track change a tip on how to tune the settings if needed. It opens with the last 30 minutes of switching history, so you can check a previous switch, then streams live.

Every kind of line

▶ now playing — Music: the stream, per its own log · DAC: the rate macOS reports the device at
▶ the next track and where its rate comes from
⇄ the DAC switched, and why
↳ an explanation or a tip
♪ fade meter near the end of a track
✎ Rate Library updated — a track's remembered rate
⚠ something to look at
⚙ a Music setting changed
· heartbeat — nothing changed

Reading a track change

22:45:45 ▶ next: "Manchild" — Sabrina Carpenter · predicted 48 kHz from Apple's catalog
22:45:47 ♪ silence detected (below -55 dBFS) · ends in 2586 ms
22:45:48 ♪ quiet for 400 ms — threshold reached, switching now · ends in 2087 ms
22:45:48 ⇄ 44.1 kHz → 48 kHz · inside the fade-out, ready for the next track · 1987 ms before the end
22:45:49 ↳ keeping 48 kHz for the next track while the last 44.1 kHz moments play out
22:45:51 ▶ Music: Lossless · 48 kHz · 24-bit │ DAC: 48 kHz ✓
22:45:56 ✎ Rate Library: "Manchild" — Sabrina Carpenter confirmed at 48 kHz — the prediction was right

The next track was named and its rate predicted. The outgoing track faded, the DAC switched inside the quiet and held through the last moments, and the new track started already locked. Then its rate was confirmed into the Rate Library.

The Rate Library

Every track's true rate, remembered

Lysoniq reads each track's rate from Apple's catalog before it plays, and that's right nearly every time. When it isn't, the Switcher hears the real rate and remembers it, so that track is exact from its next play on. The Rate Library is where all of that is stored. There's no need to open it, but you can at any time and make adjustments if you choose. The Rate Library can be exported for backup or sharing.

The Rate Library window: the two conditions (Music.app's Hi-Res Lossless setting and the SMSL USB AUDIO output), the five-step prediction order with the last play's step lit, a history line of the last eight plays, and the table of tracks with their setting, rate, source and when each was confirmed

An afternoon's listening: the two conditions, the prediction order with the step the last play used, the last eight plays, every one predicted right, between 96 and 192 kHz, and the table beneath.

Getting started

Three steps to get going

  1. 1

    Download and open

    Drag it to Applications and open it. The app lives in the menu bar, next to the clock. A short Welcome explains each permission macOS will ask for and what it's used for.

  2. 2

    Open Lysoniq Mac Remote and play through Music.app

    The two apps pair on the Mac itself. No account, no setup. The menu shows Lysoniq Mac Remote connected.

  3. 3

    Listen

    The menu-bar mark shows your output's rate. Click it to see what's playing, the last switch applied, and to open the Live Monitor, the Rate Library and Settings. Most DACs are fine on the defaults; if a switch ever lands where you can hear it, the three steps below make them yours.

To make further adjustments

Two settings do nearly all the work

Every DAC mutes for a different length of time, and every ear hears a fade differently. Measure the first, listen for the second, and let the Live Monitor point at anything else.

  1. 1

    Measure the Relock Time

    Measure in Settings, with a track playing. One press switches the rate; press again the moment you hear the music back, or let a microphone hear it for you: your Mac's own, or a spare iPhone placed by the speaker. That's your DAC's true mute, and every method is timed by it.

  2. 2

    Watch a fade go quiet

    Open the Live Monitor and let a track with a fade-out end. Its ♪ lines show how quiet the music got, and for how long, as it faded. Set the Silence Threshold to the level where you can no longer hear it, and the Minimum Quiet to how long you're happy to wait to be sure.

  3. 3

    Let the tips guide you

    After every track change the monitor adds a ↳ tip: which setting to move, and which way, if that switch could have landed better. Follow a couple and the defaults are yours. And if you'd rather never hear the stop between tracks, pick Pause to Switch as the fallback.

Good to know

Worth knowing before you download

It needs Lysoniq Mac Remote and an administrator account
It switches only while paired with Lysoniq Mac Remote on the same Mac. And macOS lets only administrator accounts read what Music.app reports about its stream, which is the whole basis of the app.
The permissions, and why
Three, plus one optional, each explained in the Welcome before macOS asks. Media & Apple Music reads one setting: whether Lossless or Hi-Res Lossless is on. Automation for Music asks Music.app for your local files' rates, for the Rate Library. System Audio Recording lets it listen to how loud Music.app is playing, for the fade-out switch only. It only measures loudness; nothing is recorded. The optional one, the Microphone, is asked for only if you let Measure listen for your DAC's mute, and never otherwise.
It updates itself
Once a day, in the background, it checks for a new version and offers it with a note of what changed. Nothing is installed until you say so, unless you turn on Install Automatically. Check Now is in Settings.
Bit depth takes care of itself
Set your DAC's format to 24-bit once in Audio MIDI Setup and leave it. A 16-bit track through a 24-bit device is bit-perfect (the extra bits are zeros), while a 24-bit track through a 16-bit device is not. The Switcher shows each track's bit depth and never needs to change the device's.

FAQ

Common questions

Is it free?
The Switcher is a free download. It works only with Lysoniq Mac Remote, which you get from the App Store.
Which DACs work?
Any output device whose rate macOS can set: USB DACs, most audio interfaces. A rate is written only if the device lists it exactly; a DAC that tops out at 96 kHz is left alone for a 192 kHz track.
Does it switch on the first play of a track?
Yes. The first play is predicted from Apple's catalog data for the track, which is nearly always right; from a rate confirmed for another track of the same album; or, for local files, from the file itself. In the rare case the catalog is wrong, the Switcher can correct it on the spot, and the Rate Library remembers the real rate. From then on it's certain.
What about iPhone, iPad and Apple TV?
They don't need it. iOS and tvOS switch the output rate per track on their own. The Switcher exists because the Mac doesn't.

Get it

Predictive sample-rate switching for the Mac.
Never miss a note.

Requires Lysoniq Mac Remote on the same Mac · macOS 14 or later · administrator account