About this project
Mousiki is a terminal (TUI) music player designed for users who prefer keyboard-driven control and minimal interface layers. It is built for speed and lightweight operation, with a strong focus on customization and a workflow that stays entirely within the terminal.
**Key Features:**
- **Local Music Playback:** Browse and play music files from your local library with ease.
- **Online Search & Streaming:** Search and stream tracks directly from online sources, powered by yt-dlp.
- **Synced Lyrics:** Real-time, word-by-word active lyrics highlighting, fetched via a Python script from Better Lyrics (primary) and LRCLIB (fallback).
- **Visualizers:** Real-time FFT spectrum (using kissfft), waveform rendering, and spinning disk art, with configurable fluidity.
- **Queue Management:** Efficient queueing, shuffling, repeat, and folder-based filtering.
- **Highly Configurable:** Adjust colors, visualizer behavior, animations, and hotkeys through a text config file at `$HOME/.config/mousiki/config.txt`.
**Supported Platforms:**
- Native support for Linux, macOS, and Android (via Termux).
- Windows support is unverified by the author but may work; contributions are welcome.
**Getting Started:**
- Clone the repository and run `bash setup.sh` (for macOS with Homebrew, Debian-based Linux, or Termux) to install dependencies, generate a default config, and build the app.
- Manual builds require `cmake`, a C++17 compiler, `ffmpeg`, `yt-dlp`, and Python's `requests` package.
- After building, run `./build/mousiki`.
**Default Keybindings (configurable):**
- Search: `/` (local), `/s: <query>` (online stream)
- Download current stream: `y`
- Play/Pause: `p` or `ENTER`
- Next/Previous: `n` / `b`
- Seek: `ARROW_LEFT` / `ARROW_RIGHT`
- Volume: `1` / `2`
- Shuffle/Repeat: `m` / `r`
- Navigate: `ARROW_UP` / `ARROW_DOWN`
- Switch tabs: `TAB`
- Add/Remove from queue: `a` / `d`
- Folder filter: `f`
- Clear filter: `c`
- Quit: `q`
**Configuration:**
The config file is auto-generated. You can add custom music paths by adding multiple `LocalMusicPath` entries. All keybindings and visual settings are editable there.
**Dependencies & Attribution:**
Mousiki uses miniaudio (audio playback), kissfft (FFT for visualizers), yt-dlp (online streaming), FFmpeg (multimedia handling), and Python's `requests` for lyrics. It is released under the Apache License 2.0.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.