# BakaMusic: an ad-free player that ships no music source of its own

> A cross-platform Electron, React and TypeScript music player whose content arrives entirely through plugins, with one native playback core built on libmpv and LibreMPEG for audio and video alike. Its readme and its manifest name two different Node versions, and the manifest version is well behind the release tags.

**Zencok/BakaMusic** — A pluggable, customizable, ad-free free music player.

- Repository: https://github.com/Zencok/BakaMusic
- Stars: 171 · Forks: 10
- Language: TypeScript
- License: AGPL-3.0
- Published: 2026-08-22 · Updated: 2026-08-22 · Language: en
- Canonical page: https://hysenlabs.com/projects/zencok-bakamusic

## Plugins run in their own process, and the app ships no source

The project's own tagline is the specification: no advertisements, no built-in online music source, extended by plugins. That is an unusual position for a music player and it is repeated in the licensing section, where the readme says the application provides no online source or media content, and that plugins, data sources and content use are the responsibility of their providers and users, who must follow local law, service terms and copyright rules. The plugin story has two halves. There is a first-class plugin type for this player, with a development guide and a type contract in the source tree, and there is support for importing scripts written for a different, existing player ecosystem, treated as a playback interface. Plugins execute in a separate controlled process, with network, storage and media capabilities managed at the application boundary rather than granted freely.

## One native core for audio and video, with the runtime already bundled

Playback is not two code paths. A single native core, built on libmpv and LibreMPEG, handles both audio and music video, and the readme claims broad compatibility with local formats plus remote sources over HTTP and HLS, with custom request headers and several quality levels available. Packaging follows from that choice. Each platform's release bundle already contains the matching libmpv runtime, so there is no separate playback component to install, which removes the single most common reason a media app fails on a fresh machine. The platform table lists three Windows formats including an offline installer, a web installer and a portable archive, a single disk image format for both macOS architectures, and both a Debian package and an AppImage for Linux on two architectures. The system media controls are handled per platform too.

## The spatial audio and HDR claims are conditioned on your hardware

One line under the feature list does more work than the paragraph above it. The readme states that Dolby Vision, HDR10 and Dolby Atmos style capabilities depend on the media source, the operating system, the display or audio device, and driver support. So the feature list's claims about spatial audio tiers, AC-4 and AC-3 surround media, and native recognition and rendering of high dynamic range music video are all conditional, and the condition is not only about your speakers. It names the source of the file and the operating system as well, which means the same track may behave differently on two machines running the same build. If a specific format is why you are considering this player, that sentence is the one to test first rather than the feature list.

## Two playback screens, and now-playing state on all three desktops

The player ships two different playback detail pages and lets you switch between them: a classic immersive record-style interface, and a two-column layout in the style of an existing third-party lyrics project, which is also why part of the source tree is an upstream synchronisation area. Both offer the same set of affordances, dynamic background, word-by-word lyrics, fullscreen and full playback control, so the choice is about layout rather than features. The other cross-platform detail is media key integration. Audio and video state is synchronised to the three desktop media control protocols, so hardware keys and system-level now-playing displays work on Windows, on macOS and on Linux rather than only on the platform the project started from.

## Lyrics get the longest feature list in the project

If you read one section of the readme closely, it should be the lyrics one, because it is the most detailed and the least generic. Five lyric formats are supported, and on top of that the player handles word-by-word timing, translations, romanised text, ruby annotation for Japanese, background vocal tracks, duet tracks, a desktop lyrics window and a mini mode. The two extra renderer processes in the architecture exist for exactly two of those features: one window for desktop lyrics, one for mini mode. The rest of the feature list is broad but conventional by comparison: local library scanning with album, artist and folder browsing, resumable downloads, batch tasks, writing tags and cover art, saving lyrics, and optional transcoding after download, plus playlists, listening statistics and backup over WebDAV.

## Two Node versions and two package versions in one repository

The development section and the manifest do not agree, and both mismatches are checkable in the tree. The readme says local development requires a specific Node version and points at a version file for it, while the manifest's engine constraint asks for a different, later one in the same major line. A contributor following the readme literally can therefore fail the install. The same pattern appears in versioning: the manifest carries a version of 1.0.0 while the release tags are in the 1.9 line, the newest published in September 2026. The commands themselves are conventional. Install and start are the two you need, and three checks run before a commit:

```bash
npm exec tsc -- --noEmit --pretty false
npm exec eslint -- ./src
npm test
```

Changes that touch windows, the preload bridge, inter-process messaging, services, native code or packaging are asked to run two more commands, one that packages and one that smoke-tests the package.

## No Node integration in the renderer, and four capability areas kept out of it

The architecture list is organised by process boundary rather than by feature, which is the right way to read it. There is a main process for system capabilities, a preload directory described as the security bridge, a renderer for the main window, and two more renderers for the lyrics window and the mini mode window. A shared directory holds the contracts and capability modules that cross process boundaries, a web workers directory runs background tasks in separate utility processes, and a resources directory holds language, service and runtime assets. The stated security posture follows from that layout: node integration is off in the renderer by default, the main process is reached only through a minimal preload interface, and plugins, downloads, file tasks and media services all run in isolated processes. Production builds add archive integrity checks and the framework's own fuse settings on top of that.

## Conclusion

Use BakaMusic if you want a desktop player with a native media core, system media-key integration on all three desktop platforms, and a deep lyrics feature set, and you already have or intend to write plugins for the content you want. Do not expect it to play anything on its own, because the readme states plainly that no online source is bundled and that responsibility for content sits with plugin providers. Before you start, resolve the version questions the repository leaves open, since the readme and the manifest name different Node versions and different package versions, and check whether the spatial audio and high dynamic range formats you care about are actually available on your hardware and drivers.

## FAQ

### what is baka music

BakaMusic is a cross-platform desktop music player built on Electron, React and TypeScript, presented as ad-free and with no built-in online music source. Content arrives through plugins: it has its own plugin format and can also import scripts written for an existing player ecosystem as a playback interface, so what ships is a player rather than a music service.

### How does BakaMusic play audio and video?

Both go through one native core built on libmpv and LibreMPEG, covering local formats plus remote sources over HTTP and HLS with custom request headers and several quality levels. Each platform's release bundle already includes the matching libmpv runtime, so no separate playback component has to be installed.

### What can a BakaMusic theme pack change?

A version 2 theme pack is a configuration file, a stylesheet and optional image and iframe resources, and it owns the visuals only; layout and interaction stay consistent in the client. With no custom theme installed, the built-in default follows the system light or dark setting automatically, and the readme says there is no manual override for that.

### What does the BakaMusic licence cover?

The software is provided as-is under AGPL-3.0-only. The project states that it ships no online music source or media content, and that plugins, data sources and content use are the responsibility of their providers and users, who are asked to follow local law, service terms and copyright rules.

## Sources

- [Official README](https://github.com/Zencok/BakaMusic#readme)
- [Project repository](https://github.com/Zencok/BakaMusic)
- [Release notes](https://github.com/Zencok/BakaMusic/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/zencok-bakamusic
