Skip to content

CMUS++

Reproductor de música para terminal pequeño, rápido y potente escrito en C++17

LicenseLanguagePlatform

Visitar repositorio

CMUS++ es un reproductor de música para terminal ultraligero y controlado por teclado, escrito en C++17. Es rapidísimo, sin dependencias gráficas y con renderizado sin parpadeos.

Características

  • Formatos: MP3, FLAC, WAV, OGG, OPUS, AIFF.
  • Carátulas: Soporte para carátulas incrustadas en MP3, FLAC, OGG/OPUS + archivos cover.jpg/cover.png.
  • Letras: Archivos .lrc sincronizados + letras incrustadas en los tags (USLT/LYRICS), 100% offline.
  • Multiplataforma: Linux (ALSA), macOS (CoreAudio), Windows (WinMM).
  • Personalizable: 86 temas integrados + soporte para temas XML personalizados.
  • Rápido: Cero tiempos de carga, decodificación eficiente y renderizado sin parpadeos.

Carátulas

CMUS++ extrae y muestra carátulas de álbumes automáticamente:

  • MP3: Frame APIC (ID3v2.2/2.3/2.4)
  • FLAC: METADATA_BLOCK_PICTURE
  • OGG / OPUS: METADATA_BLOCK_PICTURE en comentarios Vorbis
  • Fallback: cover.jpg, cover.png, folder.jpg, etc. en el mismo directorio

Terminales compatibles

  • Kitty / WezTerm / ghostty / iTerm2: Imagen nativa (protocolo Kitty)
  • Otras terminales (Alacritty, GNOME, etc.): Renderizado ANSI half-block () con color true-color

Letras

Presiona l dentro del reproductor para ver la letra de la canción a pantalla completa (oculta la lista). 100% offline, sin red ni servicios externos. Las letras se resuelven así:

  • .lrc sincronizado junto a la canción (ej: cancion.mp3cancion.lrc). La línea actual se resalta y avanza sincronizada con la reproducción.
  • Letras incrustadas en los tags del propio archivo (frame USLT en MP3, campo LYRICS en FLAC/OGG). Se muestran como texto estático y se navegan con ↑/↓.

Ejemplo de formato .lrc:

[ti:Título]
[ar:Artista]
[00:12.50]Primera línea
[00:24.00]Segunda línea

Soporta timestamps [mm:ss] / [mm:ss.xx], varias marcas por línea ([00:12][00:24]texto) y el tag [offset:±ms].

Controles

CMUS++ está diseñado para usarse completamente sin ratón.

TeclaAcción
↑ / ↓ (o k/j)Navegar por la lista
EnterReproducir / Entrar a carpeta
EspacioPausar / Reanudar
← / → (o h)Atrás 5s / Adelante 5s (en navegador: subir nivel)
n / pSiguiente / Anterior canción
+ / -Subir / Bajar volumen
sActivar/Desactivar Shuffle (Aleatorio)
rActivar/Desactivar Repeat (Bucle)
lMostrar/ocultar letra (.lrc o incrustada en tags) a pantalla completa
/Buscar una canción en la carpeta actual (escribe para filtrar, Enter reproduce)
tCambiar tema de color
oAbrir explorador de archivos
aVer información (About)
qSalir

Temas Personalizados

Presiona t dentro de la app para cambiar de tema. Puedes crear tus propios temas creando archivos .xml dentro de la carpeta themes/ (junto al ejecutable) o en ~/.config/cmuspp/themes/.

Ejemplo de estructura (themes/mi-tema.xml):

xml
<?xml version="1.0" encoding="UTF-8"?>
<theme name="Mi Tema Custom">
  <!-- Colores de texto (Brillante -> Oscuro) -->
  <fg0 r="248" g="248" b="242"/> <fg1 r="215" g="210" b="195"/>
  <fg2 r="117" g="113" b="94"/>  <fg3 r="75"  g="71"  b="60"/>

  <!-- Acentos -->
  <acc  r="166" g="226" b="46"/> <warn r="230" g="219" b="116"/>

  <!-- Fondos (bgr/bgg/bgb = fondo | fgr/fgg/fgb = texto) -->
  <bghdr  bgr="39" bgg="40" bgb="34" fgr="102" fgg="217" fgb="239"/>
  <bgsel  bgr="73" bgg="72" bgb="62" fgr="248" fgg="248" fgb="242"/>
  <bgplay bgr="30" bgg="44" bgb="18" fgr="166" fgg="226" fgb="46"/>
  <bgstat bgr="29" bgg="29" bgb="24" fgr="117" fgg="113" fgb="94"/>
</theme>

Los temas nuevos se detectarán automáticamente al reiniciar la app.

Inicio Rápido

¿Solo quieres probarlo? Descarga el binario precompilado desde el release v1.1.0 (Linux x86_64):

sh
wget https://github.com/Ars-byte/cmuspp/releases/download/v1.1.0/cmuspp-linux-x86_64
chmod +x cmuspp-linux-x86_64
./cmuspp-linux-x86_64

Necesita la carpeta themes/ (la del repositorio) junto al ejecutable.

Compilación

Dependencias

Necesitas un compilador C++ y las librerías libsndfile, libjpeg y libpng (y ALSA en Linux).

  • Ubuntu / Debian: sudo apt install g++ libsndfile1-dev libasound2-dev libjpeg-dev libpng-dev
  • Arch Linux: sudo pacman -S gcc libsndfile alsa-lib libjpeg-turbo libpng
  • macOS: brew install libsndfile jpeg libpng (requiere Homebrew)

Compilar

Clona el repositorio y usa el script de auto-compilación incluido:

sh
chmod +x bootstrap.sh
./bootstrap.sh
./cmuspp

NixOS

Añade el paquete desde un flake:

nix
inputs = {
  my-pkgs.url = "github:mikuri12/my-lazy-nixos-pkgs";
};

{ inputs, pkgs, system, ... }:
{
  environment.systemPackages = [
    inputs.my-pkgs.packages.${system}.cmuspp
  ];
}

O usa el comando directo: nix profile add github:mikuri12/my-lazy-nixos-pkgs#cmuspp

Licencia

MIT — Siéntete libre de modificar y usar el código.

Lanzado bajo la Licencia BSD-3-Clause.