Skip to content

bay122/stemplayer

Repository files navigation

StemPlayer Logo

StemPlayer

Reproductor y mezclador de stems de audio — con detección de tono, ajuste de pitch/tempo, generación ChordPro con IA y streaming de letras sincronizadas.

License Python Release Downloads Stars Issues

FeaturesDescargarCompilarCómo usarDocsLicencia

StemPlayer es un reproductor multi-pista diseñado para músicos, bandas y técnicos de sonido. Carga tus stems (WAV, MP3, FLAC), ajusta el pitch y tempo por pista, genera sheets de acordes con IA, y transmite las letras sincronizadas a cualquier navegador en la red local.


✨ Features

Reproducción y mezcla

  • Carga de stems — Importa múltiples archivos de audio (WAV, MP3, M4A, FLAC) desde una carpeta
  • Detección automática — Analiza el mix para detectar tonalidad (key) y tempo (BPM)
  • Pitch shift — Cambia la tonalidad en semitonos (-3 a +3) por stem o global
  • Tempo — Ajusta el BPM con Rubber Band
  • Controles por stem — Volumen, paneo, mute, solo, categoría, renombrar y reordenar
  • Count-in y Metrónomo — Compases de entrada configurables, metrónomo persistente
  • Exportación — ZIP o WAV, con configuración actual o stems originales

Librería y organización

  • Librería persistente — Guarda canciones con metadatos JSON y múltiples librerías
  • Setlists — Listas de reproducción con auto-avance, pre-carga y reordenación
  • Filtros de stems — Clasificación automática (click, guía, sin FX) por patrón de nombre
  • Undo/Redo — Historial completo de ajustes con detección de cambios no guardados

ChordPro y sincronización

  • ChordPro — Vista previa, editor con botones de acordes, exportación a PDF, modo Live Chords
  • Editor de Sync — Editor visual con waveform, tabla de tiempos y previsualización ChordPro
  • Streaming Live Chords — Transmite la letra sincronizada a cualquier navegador en la red local vía HTTP + QR
  • Proveedores IA — OpenRouter y Google AI Studio para generación de acordes y sincronización
  • Sync con Whisper — Regeneración de timestamps vía faster-whisper + refinamiento con IA

Extras

  • Temas externos — Sistema de temas plugin con colores, QSS, iconos SVG y layout extensible
  • Caché de audio — Dos niveles (mono WAV + pitch/tempo) para recarga rápida
  • Medidores de sistema — CPU, RAM y pico de audio en tiempo real

📥 Descargar

Descarga la última versión desde Releases.

Plataforma Archivo Requisitos
Linux StemPlayer-v0.1.0-linux-x86_64.tar.gz Ninguno (autocontenido, ~800 MB)
Windows StemPlayer-v0.1.1-win64.zip Ninguno (autocontenido, ~185 MB)

Nota: El binario Linux incluye TensorFlow completo (~800 MB). Para un tamaño menor, compila desde código.


🛠 Compilar desde código

Requisitos

  • Python 3.10 o superior
  • pip
  • FFmpeg (para algunas funciones de audio)

Instalación

git clone https://github.com/bay122/stemplayer.git
cd stemplayer
python -m venv penv
source penv/bin/activate        # Linux/Mac
# .\penv\Scripts\Activate.ps1   # Windows
pip install -r requirements.txt

Uso

python main.py                  # Tema oscuro por defecto
python main.py -theme stemdeck  # Tema StemDeck
python main.py -theme theme3    # Tema con layout extendido

Compilar ejecutable

pip install pyinstaller
pyinstaller StemPlayer.spec

El binario se genera en dist/StemPlayer/.

Flags CLI

Flag Descripción
-theme <nombre> Carga un tema desde app/ext/themes/<nombre>/
-no-splash Desactiva la pantalla de splash inicial

🎯 Cómo usar

  1. Configurar librería — En el panel izquierdo, configura la carpeta de canciones
  2. Cargar stems — Haz clic en "Cargar Carpeta de Stems" y selecciona una carpeta con pistas de audio
  3. Ajustar mezcla — Modifica volumen, paneo, mute/solo de cada pista
  4. Pitch/Tempo — Usa los botones de semitonos o ingresa BPM personalizado
  5. Reproducir — Presiona Play
  6. Guardar — En la librería para persistir la configuración
  7. Setlists — Crea listas de reproducción y navega con Prev/Next
  8. ChordPro — Desde el menú ⋮ genera sheets, edita sync o abre el editor
  9. Stream Live Chords — En el panel de acordes, elige "Stream to browser (Web)" para compartir en la red

⚙️ Configuración

API Keys (requerido para generación ChordPro)

  1. Copia .env_example a .env
  2. Obtén una API key de OpenRouter o Google AI Studio
  3. Colócala en .env:
OPENROUTER_APIKEY=tu-api-key-aqui
  1. Desde la app: Settings → IA → ingresa tu API key y selecciona el proveedor

Variables de entorno

Variable Descripción
OPENROUTER_APIKEY API Key de OpenRouter
GOOGLE_APIKEY API Key de Google AI Studio

📚 Documentación

Documento Descripción
docs/user_guide.md Guía de usuario completa — todas las vistas, controles y flujos
docs/architecture.md Arquitectura, flujo de datos, estructura del proyecto
docs/theming.md Sistema de temas centralizado y guía para crear nuevos temas
docs/threading.md Gestión de hilos y Thread Safety
docs/api.md API de proveedores IA (OpenRouter, Google AI Studio)
docs/building.md Compilación con PyInstaller
docs/tests.md Tests y scripts de prueba

🧪 Tests

python -m pytest test/ -v

Los tests requieren archivos de audio de ejemplo. Consulta docs/tests.md para más detalles.


🛠 Stack técnico

Componente Tecnología
Lenguaje Python 3.10+
GUI PySide6 (Qt6)
Audio I/O soundfile, sounddevice
Procesamiento librosa, pyrubberband, numpy, scipy
IA / LLM OpenRouter API, Google AI Studio, faster-whisper
ChordPro python-chordpro
Empaquetado PyInstaller

🤝 Contribuir

Las contribuciones son bienvenidas. Por favor:

  1. Haz fork del proyecto
  2. Crea una rama: git checkout -b feature/nueva-funcionalidad
  3. Haz commit: git commit -m 'feat: agregar nueva funcionalidad'
  4. Push: git push origin feature/nueva-funcionalidad
  5. Abre un Pull Request

Lee .github/CONTRIBUTING.md para más detalles.


💖 Apoyar

Si StemPlayer te es útil, considera:

  • Dar una estrella — en GitHub
  • Reportar bugs — abre un issue
  • Compartir — recomienda el proyecto a otros músicos
  • Donar — activa las GitHub Sponsors para apoyar el desarrollo continuo

📄 Licencia

Este proyecto está bajo licencia CC BY-NC-SA 4.0.

Puedes:

  • Compartir — copiar y redistribuir el material
  • Adaptar — remezclar, transformar y construir sobre el material

Siempre que:

  • Atribución — des crédito adecuado
  • No comercial — no uses el material para fines comerciales
  • Compartir igual — distribuyas tus contribuciones bajo la misma licencia

Lee el archivo LICENSE para los términos completos.


👤 Autor

Pablo Jiménez
GitHub · Web


Hecho con ❤️ para músicos

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors