strudel/kisum/README.md
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

63 lines
2.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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
```bash
cd ~/COFRE/CODERS/MUSIKA/AUDIO/PROYECTOS/KISUM
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
```
## Uso
```bash
.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 rejilla**`librosa.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
- [x] v0: batería por bandas + tempo → Strudel (este directorio)
- [x] 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