Releases: vincentneo/LosslessSwitcher
Version 3?
An early peek to the next version of LosslessSwitcher!
- Borrows the Process() way of getting logs, rather than relying on OSLogStore, from #195, special thanks to @FantasticSkyBaby, which hopefully solves #115
- Hopefully fixes #190, #134?
- Best effort to match sample rate with track, aims to fix #159
IMPORTANT: a profile is needed, which can be downloaded and installed from https://eclecticlight.co/2023/03/08/removing-privacy-censorship-from-the-log/
Profile Direct Link: https://eclecticlight.co/wp-content/uploads/2023/03/enablelogprivatedata.zip
You should always exercise caution by reading the above blog post to know what you're installing. Do also note that the profile is external, not made by me, and not signed by me either.
This profile lets the app map sample rate data to whichever track its supposed to belong to, which helps with the #159 issue.
Why is the profile needed? In Apple logs, some fields are marked as <private> without it. One of these fields that is privatised is the track name, which comes with the sample rate and bit depth log message.
For beta 1, it will not work properly without the profile (I tried). This is because I'm slightly drained right now after a day spent on this, not logically clear how to infer which data belongs to which track, if that makes sense to you.
As per always, I make no guarantees that it will work. Hopefully it does though.
Version 2
Shell Script Support, Sample Rate Preferences
Here are the new features of this release:
- The remaining missing feature from LosslessSwitcher 1.x: Select Script, is back!
- Suggestion from issue #197 is implemented as a user selectable preference, if they prefer to switch to the closest sample rate multiple that the system supports, rather than the nearest highest sample rate (e.g. 176.4kHz -> 88.2kHz, rather than 96kHz, if 96kHz is the maximum)
- Merged fix from #194 (remains to be seen if it helps)
Thanks to @jiangying000 and @goncalvesnelson for #194 & #197!
Performance & Quit
Selecting of menu options should no longer be laggy and the quit option is now back.
First Beta for Version 2.0
Requires macOS Sequoia 15.0 or later.
With this build, it should:
- Not show a blank window
- Work in macOS 15.4 (I've tested it myself with macOS 15.4.1)
What doesn't work:
- No "Select Script" menu for now
I've named this version 2.0 so that it should be clear that for users on 14 or below, they should use v1, 15 and above for v2.
Sequoia Empty Window
This beta release is yet another attempt to fix the empty window issue as mentioned by many in #146.
Unfortunately, I wasn't able to replicate the exact issue, when tested with macOS 15.0 (24A335), so this release's 'fix' is based on yet another guess.
Built for Sequoia beta users
This beta version is somewhat equivalent to version 1.1, build 18, with 2 differences:
- It's built using the latest Xcode 16 beta 6 (i.e. macOS Sequoia SDK), just in case the high CPU usage/freeze have something to do with this.
- Very minor code change as recommended by Xcode.
In response to #146.
Version 1.1
I think the 'beta' of v1.1 has basically been dragged for way too long now, so build 18 will become the release build for v1.1.
Improvements from v1.0.0
- Improved sample rate detection
- Option to explicitly select an audio device
- Bit Depth detection mode
- Option to run script when sample rate change
- Ability for third party scripts to obtain latest sample rate via AppleScript
Menu for scripting
In this release of LosslessSwitcher,
A new menu has been added to allow for selected shell script to run, with the first argument being the latest sample rate.

Notes
- Selected shell scripts must have a shebang declared, such as
#!/bin/bash - The script will run when the app launches for the first time.
- The script file selection window may sometimes show underneath your current active window. (it's how macOS works)
For HQ Player developers / Call via AppleScript
Just a simple release that adds a way to obtain the latest sample rate via AppleScript.
Effectively it covers #108 use case.
Example:
tell application "LosslessSwitcher"
set rate to get latest sample rate
do shell script "echo " & rate
end tellReturns:
"44100" on a 44.1kHz track.
Note: on first call/launch, -1 will be returned.