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.