MCPcopy Index your code
hub / github.com/MishaSok/audex-player

github.com/MishaSok/audex-player @v1.1.5

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.1.5 ↗ · + Follow
292 symbols 980 edges 6 files 0 documented · 0%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Audex icon

Audex

A minimal desktop music player for your local audio library.

Built with Electron and vanilla JS — no frameworks, no bloat, just a clean charcoal-and-amber player that scans your files, downloads new tracks, and stays out of your way.

Version Platforms License Electron

Download · Features · Build from source · Contact


📸 Screenshots

Library

Now playing Mobile mode
Downloads

✨ Features

🎵 Library & playback

  • Local library scanning — recursive import of .mp3, .wav, .ogg, .flac, .m4a, .aac files.
  • Tag & cover art reading via music-metadata; MP3 tag editing (title, artist, album, year, genre, track/disc number, comment, cover) written back with node-id3.
  • Playlists, Favorites, Recents — organize your music however you like.
  • Artists view — automatically grouped from your library.
  • Search & command palette (Ctrl/⌘ + K) — jump to any track or view instantly.
  • Filters & sorting — sort the library by title, artist, album, and more.
  • Playback controls — shuffle, repeat (off / all / one), seek, volume.
  • Fullscreen "now playing" view with cover art, full transport controls, volume slider, and an upcoming-queue panel.
  • Real-waveform progress bar — the seek bar renders the track's actual audio peaks, in both the bottom playbar and the fullscreen player.
  • Resume on launch — the last track is restored when you reopen the app.
  • Library health-check (optional) — a Health tab that scans your collection for quality problems such as suspected transcodes, alongside a per-track quality badge column showing real bitrate/sample-rate. Off by default; enable it in Settings → Music (it hides the badge column and tab completely when off).

📊 Listening Report

  • A dedicated Report tab that turns your listening history into stats — computed entirely on your device, nothing leaves your machine.
  • (Optional) Off by default — enable it in Settings → Music. Listening statistics are always recorded regardless, so your history is already there the moment you turn the tab on.
  • Switch between Day / Month / Year / All-time periods, each with listening time and a comparison against the previous period.
  • At-a-glance stats: tracks played, artists, additions to your collection, and your current listening streak.
  • A "when you listen" clock visualizing your activity across the 24 hours of the day.
  • Top Artists and Top Tracks cards with play counts and album art.

⬇️ Download from the internet

  • YouTube — search and download tracks by query straight from the app (yt-dlp), with automatic import into your library, embedded cover art and metadata. ffmpeg is bundled, so audio extraction and cover embedding work out of the box on every platform.
  • YouTube Music — paste an album, single, or artist link and parse its full track list (yt-dlp, no browser or login needed). Download any track individually or queue the whole release at once; cover art and tags are embedded automatically.
  • Yandex Music — parse playlists and albums via a bundled headless Chromium. Your login session persists between runs; the browser window can be shown for sign-in / captcha or hidden for silent background parsing.
  • Download queue with live progress, pause and resume. Queue state survives restarts.
  • Configurable download folder — choose where new tracks land, or fall back to a dedicated Audex Downloads folder.

📱 Mobile listening mode

  • A dedicated portrait "mobile player" layout for the fullscreen view.
  • Fully adaptive — cover, titles and spacing scale smoothly from a phone-sized window up to a full screen.
  • Fullscreen-aware — if the OS window is already fullscreen, mobile mode reflows in place instead of shrinking the window.

🎨 Interface

  • Five UI languages — Russian, English, German, French, Ukrainian.
  • Themes — dark / light / system, plus 6 hand-tuned designer color themes, all selectable from a theme picker in Settings.
  • Customizable accent color — choose any accent from a set of presets or a custom color picker; it recolors now-playing highlights, progress bars and primary controls across the app.
  • UI scale setting — make the whole interface larger or smaller, applied instantly.
  • Responsive layout — adapts gracefully to narrow desktop windows.
  • Polished animations for now-playing transitions and UI controls (respecting prefers-reduced-motion).

🖥️ System integration

  • System tray — controls playback (play / pause, previous / next) right from the tray menu, and closing the window keeps the app running in the background so music never stops.
  • MPRIS / Media Session — now-playing metadata and transport controls appear in the GNOME top bar (and other OS media widgets).
  • Discord Rich Presence — show what you're listening to on your Discord profile, with track, artist and album cover (resolved via the iTunes Search API, so even tracks without embedded art get a picture), an optional elapsed/remaining timer, and up to two custom buttons. Cover, timer and buttons are each toggleable in Settings → Discord.
  • Update notifications — on launch the app checks GitHub for a newer release and shows a dismissible in-app banner when one is available, with a one-click link to the download page.
  • Mini-player navigation — click the cover to open fullscreen, click the title/artist to jump to the library or artist page.

⌨️ Keyboard shortcuts

Shortcut Action
Ctrl / + K Open / close the search command palette
Ctrl / + E Edit tags of the current track
Space Play / pause
Esc Close the fullscreen view or any open dialog
/ Move between results in the command palette
Enter Run the highlighted command-palette result

📦 Download

Grab the latest build for your platform from the Releases page:

Platform File
Linux Audex-1.1.4.AppImage (portable) or audex-player_1.1.4_amd64.deb
macOS (Apple Silicon) Audex-1.1.4-arm64.dmg
Windows Audex.Setup.1.1.4.exe

Note: builds are unsigned. - macOS — right-click the app → Open, or run xattr -d com.apple.quarantine /Applications/Audex.app. - Windows — SmartScreen may warn; click More info → Run anyway.

Runtime dependencies

None — the release builds bundle everything they need:

  • The YouTube / YouTube Music downloader and parser ship a standalone yt-dlp binary, so no pip install is required.
  • The Yandex Music parser uses a Chromium build bundled with the app.
  • ffmpeg ships with the app (via ffmpeg-static), so YouTube audio extraction works without a system install.

If a bundled yt-dlp is somehow missing, the app falls back to a system-installed one (pip install -U yt-dlp).


🛠️ Building from source

git clone https://github.com/MishaSok/audex-player.git
cd audex-player
npm install
npm start

npm start runs electron . --no-sandbox (the flag avoids sandbox permission issues on some Linux setups).

To produce distributable packages:

npm run dist

This builds a Linux AppImage and .deb into release/. macOS and Windows builds are produced by GitHub Actions on tag push.


🧰 Tech stack

  • Electron 42 — desktop shell (main + preload + renderer processes).
  • Vanilla HTML / CSS / JS — no UI framework, no bundler.
  • music-metadata — read tags and embedded artwork.
  • node-id3 — write ID3v2 tags back to MP3 files.
  • Puppeteer — drives the bundled Chromium for the Yandex Music parser.
  • yt-dlp — YouTube / YouTube Music search, parsing and download backend.
  • ffmpeg-static — bundled ffmpeg binary for audio extraction and cover embedding.

📬 Contact

Made by Mikhail Sokov.

  • 💬 Telegram: @JuicexNetfound a bug or have a suggestion? Message me here.
  • 🐙 GitHub: MishaSok/audex-player
  • ✉️ Email: mikhail.sokov2006@gmail.com

📄 License

Released under the MIT License.

Core symbols most depended-on inside this repo

$
called by 303
renderer.js
tr
called by 175
renderer.js
escapeHtml
called by 134
renderer.js
setView
called by 16
renderer.js
renderQueue
called by 15
renderer.js
playTrackByPath
called by 14
renderer.js
saveSettings
called by 13
renderer.js
renderYmResults
called by 13
renderer.js

Shape

Function 292

Languages

TypeScript100%

Modules by API surface

renderer.js246 symbols
main.js44 symbols
scripts/fetch-ytdlp.js1 symbols
preload.js1 symbols

For agents

$ claude mcp add audex-player \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact