strudel/kisum
hacklab 7ace286d8a
Some checks are pending
Build and Deploy to warm (strudel.cc) / build (push) Waiting to run
Strudel tests / build (20) (push) Waiting to run
Integra KISUM (audio→Strudel) + pestaña Visor + accesos en la cabecera
- Pestaña KISUM: sube audio/vídeo y lo convierte en código Strudel vía un
  mini-servidor Python local (kisum/, puerto 3010) que arranca el lanzador.
- Pestaña Visor: piano-roll (pentagrama) + osciloscopio + espectro en vivo
  de lo que suena, sin escribir .pianoroll()/.scope().
- Botones en la cabecera: projects, KISUM, visor, ajustes.
- KISUM empaquetado en kisum/ (código, sin venv) + install.sh de un comando
  y lanzador portable (sin rutas absolutas).
- .gitignore excluye venv/cachés/logs de KISUM. Docs en README.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-26 18:31:37 +02:00
..
install.sh Integra KISUM (audio→Strudel) + pestaña Visor + accesos en la cabecera 2026-07-26 18:31:37 +02:00
kisum Integra KISUM (audio→Strudel) + pestaña Visor + accesos en la cabecera 2026-07-26 18:31:37 +02:00
kisum.py Integra KISUM (audio→Strudel) + pestaña Visor + accesos en la cabecera 2026-07-26 18:31:37 +02:00
kisum_server.py Integra KISUM (audio→Strudel) + pestaña Visor + accesos en la cabecera 2026-07-26 18:31:37 +02:00
README.md Integra KISUM (audio→Strudel) + pestaña Visor + accesos en la cabecera 2026-07-26 18:31:37 +02:00
requirements.txt Integra KISUM (audio→Strudel) + pestaña Visor + accesos en la cabecera 2026-07-26 18:31:37 +02:00

KISUM

musik al revés: le pasas un tema de audio (o el audio de un vídeo) y KISUM lo escucha, saca el tempo y los golpes, y te lo devuelve como código Strudel listo para pegar en tu Strudel local (localhost:3009) y seguir tocándolo en vivo.

tema.mp3 / clip.mp4 ──> análisis (tempo, onsets por bandas, bajo) ──> patrón ──> Strudel

Acepta cualquier archivo con audio: mp3, wav, flac, m4a, ogg... y también vídeo (mp4, mkv, webm, mov...). Los formatos de audio se leen directos; para vídeo u otros contenedores extrae la pista con ffmpeg de forma automática (necesitas tener ffmpeg instalado).

Instalación

cd ~/COFRE/CODERS/MUSIKA/AUDIO/PROYECTOS/KISUM
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt

Uso

.venv/bin/python3 kisum.py tema.mp3               # imprime el código Strudel
.venv/bin/python3 kisum.py clip.mp4               # vale también un vídeo
.venv/bin/python3 kisum.py tema.mp3 --bars 8      # analiza 8 compases
.venv/bin/python3 kisum.py tema.mp3 --bass        # añade línea de bajo (experimental)
.venv/bin/python3 kisum.py tema.mp3 -o tema.strudel

Cómo funciona (v0)

  1. Tempo y rejillalibrosa.beat.beat_track saca el BPM y los tiempos de negra; cada negra se parte en 4 (semicorcheas) → rejilla de 16 pasos por compás (4/4).
  2. Golpes por bandas — detección de onsets en tres bandas: graves (20150 Hz → bd), medios (1502500 Hz → sd), agudos (511 kHz → hh).
  3. Cuantización — cada golpe cae en el paso más cercano de la rejilla.
  4. Salida — un stack() de patrones Strudel, un compás entre [ ] y los compases alternando con < >.
  5. --bass — croma por pulso sobre el audio grave → note("..."). Es aproximado: úsalo como punto de partida, no como transcripción.

Limitaciones conocidas de la v0

  • Asume 4/4 y tempo estable (techno/house van perfectos; jazz no).
  • No separa instrumentos: un golpe grave "es" un bombo aunque fuera otra cosa. La separación por stems (demucs) está en la hoja de ruta.
  • El BPM puede salir al doble o a la mitad; corrígelo en el setcps.

Hoja de ruta

  • v0: batería por bandas + tempo → Strudel (este directorio)
  • Soporte universal de archivos: audio + vídeo (extracción con ffmpeg)
  • Separación por stems (demucs) y transcripción por stem
  • Melodía/acordes (basic-pitch) → note() con más de una voz
  • Elegir samples de Strudel según el timbre detectado
  • Modo directo: escuchar por el micro/monitor y transcribir en vivo