Repeat-one is right twice
With repeat set to one, a track that reaches its end replays. Press Next and it advances. Those are two different intentions, and treating them as one is the most commonly reported bug class in music players.
Fadenza · macOS music player
You hand it files, folders, playlists or stream URLs. It plays them in order. It remembers exactly where you were — down to the shuffle seed.
In development — 10 of 11 phases done. Nothing to download yet.
Subtraction
Every one of these is something a competing player has. None of them is missing by accident, and this is the first thing you should read — if one of them is a dealbreaker, you have saved yourself a download.
Nothing to import into, nothing to scan, nothing to organize. Fadenza never moves your files and never writes to them — its sandbox entitlement is read-only.
Apple frameworks cannot write MP3, FLAC or Ogg tags. That was measured, not assumed. Rather than ship an editor that works for one format in seven, there is no editor.
Live albums and DJ mixes will click between tracks. The playback engine sits behind a protocol so this can be fixed later without disturbing anything else.
No hog mode, no DSD, no sample-rate following, no upsampling. Audio goes through the system mixer like everything else on the machine.
Nothing to sign into, nothing syncing. The only network traffic is the streams you point it at.
A fixed feature set. No component ecosystem, no effect chains, no crossfade, no pitch or speed control, no ReplayGain.
MP3, AAC/M4A, ALAC, WAV, AIFF, FLAC and Ogg Vorbis. No trackers, no chiptunes, no console audio — each of those needs a C decoder, and there are none here.
No tabs, no multiple playlists, no CUE sheets, no nested remote playlists. One list, the one you are listening to.
“Innovation is saying no to 1,000 things.” — Steve Jobs
Scope
Play, pause, seek, volume, mute. Repeat off, one or all. Shuffle. App volume is its own level and never touches the system output. A live or chunked stream disables the scrubber rather than showing you one that silently does nothing.
Reorder by dragging, multi-select, remove, clear. Every row carries its state — loading, missing, unsupported, failed — with the reason behind it. Right-click for Play, Play Next, Reveal in Finder, Copy Source URL and Remove.
Local files and folders, recursive to 32 levels and 20,000 files per import. HTTP and HTTPS streams. M3U, M3U8 and PLS playlists, local or remote. Watched folders, with a dismissal set so a track you removed does not come back on the next scan.
Drag and drop, the Open panel, Finder’s Open With, file-type associations and the
fadenza:// URL scheme — all landing in the same queue. An import never aborts
on one bad file: the rest goes in and you are told what was rejected.
Title, artist, album, track number, genre, duration, artwork. Read-only. Loaded after the queue populates, so paths appear immediately and titles fill in behind them.
Now Playing and media keys through the system’s own command centre — no private APIs, no global event taps. Dock menu and a menu bar extra. Output device selection, including aggregate and multi-output devices.
Labels on every control, real list rows with stable identifiers so VoiceOver navigation works, and a scrubber that speaks elapsed-of-duration. Reduce Motion and Increase Contrast are respected.
Behaviour
None of these is a feature you would put on a box. All of them are the reason a player either feels correct or quietly annoys you for years.
With repeat set to one, a track that reaches its end replays. Press Next and it advances. Those are two different intentions, and treating them as one is the most commonly reported bug class in music players.
Fadenza builds a seeded permutation of the queue — no repeats within a pass, and reproducible. The seed is saved with the session, so reopening resumes the same order it would have played rather than reshuffling behind your back.
More than three seconds into a track, Previous seeks back to the start. Less than that, it moves to the previous track.
Queue order, current track, position, repeat mode, shuffle state and seed, volume, mute, output device, watched folders. Reopen Fadenza and it is exactly where you left it — stopped, waiting, never playing at you.
Media keys, Now Playing, AppleScript, Shortcuts, the loopback HTTP API and MCP all enter through the same command layer. No integration reaches into another’s state. Remove any one of them and nothing else notices.
No Swift packages, no CocoaPods, no vendored C, no bundled decoders. Apple frameworks and Swift, sandboxed from the first commit, shipped as a universal binary.
The format support table is produced by a probe that runs against the operating system and re-runs whenever macOS changes. It is also why there is no tag editor: the probe proved Apple frameworks cannot write MP3, FLAC or Ogg tags, so the feature was dropped rather than faked.
Competitors
Fadenza is narrow on purpose. Being clear about where it is not the answer is cheaper for everyone than finding out after installing it.
All of them, side by side, on the competitors page.
Status
10 of 11 phases are complete — most recently automation, with hardening next. The capability probe passes for all seven formats on macOS 26, and the project builds as five targets whose dependencies point one way only. There is nothing to download; the first release will be private.