{"adoption": {"forks": 136, "observed_at": "2026-08-28T04:05:57.028684+00:00", "stars": 1935}, "canonical_url": "https://ross.abutalabs.com/products/losslessswitcher", "card": {"archived": false, "artifact_type": "application", "description": "Automated Apple Music Lossless Sample Rate Switching for Audio Devices on Macs.", "domain": ["apple-ecosystem", "desktop-applications", "media"], "enriched": true, "function": ["audio-processing", "workflow-automation"], "health_score": 89, "homepage": null, "language": "Swift", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["vincentneo/LosslessSwitcher"], "name": "vincentneo/LosslessSwitcher", "platform": [], "pushed_at": "2026-06-07T07:07:54+00:00", "repo": "vincentneo/LosslessSwitcher", "stars": 1935, "tags": ["apple-music", "lossless-audio", "hi-res-lossless", "sample-rate-switching", "menubar-app", "audio-devices", "dac", "bit-perfect", "oslog", "core-audio", "audio", "automation", "macos", "desktop"], "topics": ["applemusic", "macos", "audio", "automation", "lossless-music", "menubar-app", "oslog", "sample-rate"], "urls": [], "use_cases": ["automatically switch mac audio device sample rate to match the song", "play apple music lossless and hi-res lossless at the correct sample rate", "bit-perfect playback from apple music on an external dac", "avoid manually changing sample rates in audio midi setup", "see the current playing sample rate in the macos menu bar", "match dac sample rate to each track in a lossless playlist"], "what_it_is": "A macOS menu bar application that automatically switches your audio device's sample rate to match the currently playing Apple Music Lossless track. It works by reading Apple Music's system logs (oslog) to detect each song's sample rate, then applying that rate to the active output device for bit-perfect playback.", "when_to_avoid": ["You don't use Apple Music - other lossless services like Tidal or Qobuz are not supported", "You need sample rate switching on Linux or Windows, since this is macOS-only", "You cannot tolerate brief audio interruptions when the sample rate changes between tracks", "You need accurate bit depth switching - enabling it reduces detection accuracy and is not recommended"], "when_to_choose": ["You use the Apple Music app on macOS and want lossless or hi-res tracks played at their native sample rate", "You own a DAC or audio interface and want sample rate switched per song without opening Audio MIDI Setup", "You want a lightweight menu bar utility that shows the sample rate of the current track"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/losslessswitcher", "repo": "vincentneo/LosslessSwitcher", "role": "main", "score": 84}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.028684+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:08:28.120507+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a72d57f2b40d341c04e0c17d23b92bf3b674f4c69cd7df8a372d5bfb374cc4c0", "fetched_at": "2026-08-28T04:05:57.028684+00:00", "kind": "readme", "missing": false, "url": "https://github.com/vincentneo/LosslessSwitcher"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.028684+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:08:28.120507+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a72d57f2b40d341c04e0c17d23b92bf3b674f4c69cd7df8a372d5bfb374cc4c0", "fetched_at": "2026-08-28T04:05:57.028684+00:00", "kind": "readme", "missing": false, "url": "https://github.com/vincentneo/LosslessSwitcher"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:08:28.120507+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a72d57f2b40d341c04e0c17d23b92bf3b674f4c69cd7df8a372d5bfb374cc4c0", "fetched_at": "2026-08-28T04:05:57.028684+00:00", "kind": "readme", "missing": false, "url": "https://github.com/vincentneo/LosslessSwitcher"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.028684+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.028684+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.028684+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:08:28.120507+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a72d57f2b40d341c04e0c17d23b92bf3b674f4c69cd7df8a372d5bfb374cc4c0", "fetched_at": "2026-08-28T04:05:57.028684+00:00", "kind": "readme", "missing": false, "url": "https://github.com/vincentneo/LosslessSwitcher"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.028684+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.028684+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:08:28.120507+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a72d57f2b40d341c04e0c17d23b92bf3b674f4c69cd7df8a372d5bfb374cc4c0", "fetched_at": "2026-08-28T04:05:57.028684+00:00", "kind": "readme", "missing": false, "url": "https://github.com/vincentneo/LosslessSwitcher"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.028684+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.028684+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.028684+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:08:28.120507+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a72d57f2b40d341c04e0c17d23b92bf3b674f4c69cd7df8a372d5bfb374cc4c0", "fetched_at": "2026-08-28T04:05:57.028684+00:00", "kind": "readme", "missing": false, "url": "https://github.com/vincentneo/LosslessSwitcher"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.028684+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.028684+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:08:28.120507+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a72d57f2b40d341c04e0c17d23b92bf3b674f4c69cd7df8a372d5bfb374cc4c0", "fetched_at": "2026-08-28T04:05:57.028684+00:00", "kind": "readme", "missing": false, "url": "https://github.com/vincentneo/LosslessSwitcher"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:08:28.120507+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a72d57f2b40d341c04e0c17d23b92bf3b674f4c69cd7df8a372d5bfb374cc4c0", "fetched_at": "2026-08-28T04:05:57.028684+00:00", "kind": "readme", "missing": false, "url": "https://github.com/vincentneo/LosslessSwitcher"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:08:28.120507+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a72d57f2b40d341c04e0c17d23b92bf3b674f4c69cd7df8a372d5bfb374cc4c0", "fetched_at": "2026-08-28T04:05:57.028684+00:00", "kind": "readme", "missing": false, "url": "https://github.com/vincentneo/LosslessSwitcher"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:08:28.120507+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a72d57f2b40d341c04e0c17d23b92bf3b674f4c69cd7df8a372d5bfb374cc4c0", "fetched_at": "2026-08-28T04:05:57.028684+00:00", "kind": "readme", "missing": false, "url": "https://github.com/vincentneo/LosslessSwitcher"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 86, "longevity": 100, "rhythm": 72}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1593, "days_push": 87, "days_rel": 186, "gap_med": 6, "n_releases_24m": 2}, "score": 84, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}