music player for macOS
See the codeA music player for macOS 15.4 or higher. The latest stable version can be downloaded on the releases page, the latest unstable dev version is always available via this link (use with caution!), see below for compiling from source.
Main app:

AVAudioEngine, exact seeking, high-quality resampling with configurable quality)I was a big fan of the legendary foobar2000 until I moved to macOS in 2010. Naturally, for some time I continued using foobar under Wine, but the experience was subpar and eventually I started jumping from player to player. Some notable examples in no particular order:
I remember many other apps, both free and paid, however each and every one of them did lack something important. It's also worth mentioning that with every year the chance to get a decent desktop audio player is only getting lower and lower - it's the age of cloud music now, not many people are still interested in those mammoths of a bygone era. But the urge of having a good desktop player is still here for me, that's why I finally decided to go for it myself.
It's by no means a replacement for foobar2000, just my personal compilation of things I would like to see in an audio player. Nothing is set in stone, however, feel free to create new issues with feedback and suggestions.
iCHM is a Swift package (Swift tools 5.10, no third-party dependencies) for macOS 15.4 or higher.
xcode-select --install) with a Swift 5.10+ toolchain../build.sh to make a dev build: it builds the app for your architecture (arm64), creates dist/iCanHazMusic.app and launches it with its own working directory, ~/Library/Application Support/iCanHazMusic-dev (it runs in the foreground until you quit the app).Other modes:
./build.sh test - generates test fixtures and runs the test suite, no artifacts../build.sh dev-release - universal (arm64 + x86_64) build, tests, dist/ichm-dev.zip, copies the app to /Applications (overwriting any existing copy), and uploads the zip with the share tool (specific to the author's setup, remove that step if you don't have it)../build.sh release - universal build, tests, dist/ichm.zip and dist/ichm.dmg.The plain compile check is swift build -c debug --arch arm64.
Optional requirements:
brew install ffmpeg) for generating the test fixtures (./build.sh test and the release modes).brew install create-dmg) for release.Optional .env file in the repo root (git-ignored), read by build.sh:
ICHM_SIGNING_IDENTITY - the codesigning identity (e.g. Developer ID Application: ...). Without it the app is signed ad-hoc, which is fine for running locally, but system notifications won't work in an ad-hoc signed build.ICHM_NOTARY_PROFILE (a notarytool keychain profile) or ICHM_APPLE_ID + ICHM_TEAM_ID + ICHM_APP_PASSWORD - notarization of the release builds.ICHM_LASTFM_API_KEY + ICHM_LASTFM_API_SECRET - your own Last.fm API credentials. They are embedded (obfuscated) into the bundle's Info.plist; without them the Last.fm integration is disabled.The app keeps its data (config, playlists, caches) in ~/Library/Application Support/iCanHazMusic; pass --workdir /some/dir to the app to use another directory.
music player for macOS
See the codeA music player for macOS 15.4 or higher. The latest stable version can be downloaded on the releases page, the latest unstable dev version is always available via this link (use with caution!), see below for compiling from source.
Main app:

AVAudioEngine, exact seeking, high-quality resampling with configurable quality)I was a big fan of the legendary foobar2000 until I moved to macOS in 2010. Naturally, for some time I continued using foobar under Wine, but the experience was subpar and eventually I started jumping from player to player. Some notable examples in no particular order:
I remember many other apps, both free and paid, however each and every one of them did lack something important. It's also worth mentioning that with every year the chance to get a decent desktop audio player is only getting lower and lower - it's the age of cloud music now, not many people are still interested in those mammoths of a bygone era. But the urge of having a good desktop player is still here for me, that's why I finally decided to go for it myself.
It's by no means a replacement for foobar2000, just my personal compilation of things I would like to see in an audio player. Nothing is set in stone, however, feel free to create new issues with feedback and suggestions.
iCHM is a Swift package (Swift tools 5.10, no third-party dependencies) for macOS 15.4 or higher.
xcode-select --install) with a Swift 5.10+ toolchain../build.sh to make a dev build: it builds the app for your architecture (arm64), creates dist/iCanHazMusic.app and launches it with its own working directory, ~/Library/Application Support/iCanHazMusic-dev (it runs in the foreground until you quit the app).Other modes:
./build.sh test - generates test fixtures and runs the test suite, no artifacts../build.sh dev-release - universal (arm64 + x86_64) build, tests, dist/ichm-dev.zip, copies the app to /Applications (overwriting any existing copy), and uploads the zip with the share tool (specific to the author's setup, remove that step if you don't have it)../build.sh release - universal build, tests, dist/ichm.zip and dist/ichm.dmg.The plain compile check is swift build -c debug --arch arm64.
Optional requirements:
brew install ffmpeg) for generating the test fixtures (./build.sh test and the release modes).brew install create-dmg) for release.Optional .env file in the repo root (git-ignored), read by build.sh:
ICHM_SIGNING_IDENTITY - the codesigning identity (e.g. Developer ID Application: ...). Without it the app is signed ad-hoc, which is fine for running locally, but system notifications won't work in an ad-hoc signed build.ICHM_NOTARY_PROFILE (a notarytool keychain profile) or ICHM_APPLE_ID + ICHM_TEAM_ID + ICHM_APP_PASSWORD - notarization of the release builds.ICHM_LASTFM_API_KEY + ICHM_LASTFM_API_SECRET - your own Last.fm API credentials. They are embedded (obfuscated) into the bundle's Info.plist; without them the Last.fm integration is disabled.The app keeps its data (config, playlists, caches) in ~/Library/Application Support/iCanHazMusic; pass --workdir /some/dir to the app to use another directory.