Tag: development

  • What BakBeat Supports Today

    BakBeat has been moving fast, so this is a straightforward snapshot of what is actually supported today in the audio-player layer. Not aspirations. Not “planned.” What is real right now.

    Core library and playback

    BakBeat currently supports:

    • library scan and import

    • three-pane browsing

    • debounced search

    • track sorting in the main library

    • playback queue management

    • repeat modes

    • queue persistence

    • playback statistics

    • favorites

    • playback bar artwork

    • media key / Now Playing integration on macOS

    • mini player

    • playlist management

    • drag and drop in the Mac app

    • column customization

    • full-size artwork viewing

     

    Lyrics

    BakBeat supports static lyrics today.
    That includes:

    • embedded lyrics from tags

    • adjacent .lrc sidecar files during library scan

    • Track Info lyrics display in the Mac app

    • CLI inspection for lyrics data

    The current implementation is focused on read/browse correctness. Synchronized playback-time lyrics overlay is future work.

     

    Tag writing

    Tag writing is implemented with a contract-scoped MVP and verify-after-write behavior.
    Current supported write targets:

    • .mp3

    • .flac

    • .m4a with proven AAC or ALAC

    Current posture:

    • supported combinations are explicitly claimed

    • unsupported combinations are rejected

    • unknown or unproven combinations fail closed

    That means BakBeat does not pretend support where the proof is not there yet.

     

    What is intentionally not in this pass

    Some things people associate with advanced music players are deliberately deferred to a future audio architecture phase:

    • gapless playback

    • crossfade

    • equalizer work

    Those are not being treated as quick checklist features because they depend on deeper engine decisions.

     

    Library mutation model

    BakBeat also does not auto-apply filesystem changes into persisted library state. Scan/import remains explicit by design.

    That is a core product rule, not a temporary limitation.

     

    Why this matters

    The goal with BakBeat is not to claim support for everything. The goal is to build a truthful player and sync system that behaves predictably, especially when old hardware and mixed-format libraries are involved.

    So this support snapshot is intentionally conservative.

    If BakBeat says it supports something, the idea is simple: it should actually support it.

  • BakBeat Crossed a Line: The Audio Player Finally Feels Real

    For a long time, BakBeat had the hard part underneath it.

    It could scan libraries. It could read metadata. It had a growing CLI. It understood devices better than a normal music app ever needs to. It already had the bones of the thing.
    But “has the bones” and “feels like a real music player” are not the same.

    Over the last stretch of work, I did a full audio feature gap evaluation against the stuff people expect from a competent desktop music app. Not the fantasy roadmap version. The real one. Playlists. Repeat. Queue persistence. Ratings and favorites. Lyrics. Drag and drop. Mini player. Artwork. Sorting. Playback stats. Tag writing. The everyday stuff that makes a player usable instead of merely promising.

    And now, for the first time, BakBeat is on the other side of that line.

     

    What changed

    This pass closed a massive amount of ground.

    BakBeat now has a real playlist experience in the Mac app, backed by the same CLI-first system underneath it. Playback statistics are tracked. Favorites are first-class. Repeat modes persist. Queue state persists. Artwork shows up where it should. The app responds to media keys and publishes proper Now Playing info. Lyrics are visible. Drag and drop works. There is a proper mini player. Columns can be customized. Full-size artwork viewing is in.

    More importantly, those features were not bolted on as isolated UI tricks.

    They were implemented under the same rules the rest of the project uses:

    • CLI-first where it matters

    • explicit state over magic

    • deterministic behavior over silent background mutation

    • contract-first support claims instead of hand-wavy “probably works”

    That last one matters a lot.

     

    What BakBeat is not going to fake

    One of the clearest outcomes from this pass was confirming that some “expected” behaviors should stay out unless they can be done correctly.

    BakBeat does not auto-mutate your library because the filesystem changed behind your back. Scan and import remain explicit operations. Filesystem observation may inform the UI later, but it does not get to rewrite persisted library state on its own.

    That is not missing polish. That is the product rule.

    In the same category, gapless playback, crossfade, and EQ were intentionally moved into a later audio architecture review instead of being treated like quick checklist items. They depend on deeper engine decisions, and pretending otherwise would just create another pile of half-truths.

     

    Why this pass mattered

    A lot of software projects get stuck in the uncanny valley where the internals are impressive but the day-to-day experience still feels incomplete.

    This pass was about getting BakBeat out of that valley.

    It was about making sure the app can do the boring, normal, expected things that make people trust a player. The stuff users do constantly, not the fancy demo-path stuff.

    And because BakBeat is aimed at a stranger world than most players — old MP3 devices, MiniDisc workflows, explicit library state, CLI parity, future sync discipline — getting the standard player layer right matters even more. The weird stuff only works if the normal stuff is solid.

     

    What’s next

    This does not mean BakBeat is “done.” Not even close. It means the audio-player foundation is now much more believable.
    The next phase can be more honest and more focused:

    • deeper audio architecture work

    • expanded device flows

    • broader format and metadata support where proof exists

    • more refinement around the player experience itself

    That is a much better place to build from than “still missing half the obvious stuff.”

    BakBeat started as a dream of a modern iTunes for old hardware and honest libraries. After this gap pass, it finally feels less like a pile of promising subsystems and more like an actual player.

    And that is a big damn milestone.