strudel/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

4.6 KiB

Strudel · fork del hacklab

Fork de Strudel (live coding de música en el navegador, port de TidalCycles a JavaScript) con mejoras de usabilidad para pinchar en directo. Misma licencia que upstream: AGPL-3.0 (ver LICENSE).

El REPL con la pestaña Projects y la barra de transporte

Qué añade

  • Interfaz multiidioma (castellano, inglés, francés, alemán, italiano, portugués y más). Selector en el header.
  • Pestaña Projects: proyectos locales con carpetas, buscador y una librería de tracks de fábrica para empezar a pinchar: bases techno/acid originales y 50 remixes retro (80s/90s/2000s) escritos en código.
  • Barra de transporte bajo el editor: anterior / play-pausa / siguiente, tiempo y barra de progreso arrastrable (seek real sobre el reloj del scheduler). Al cargar un track el loop arranca desde cero; editar y actualizar en vivo no reinicia nada.
  • Pestaña Guía: chuleta de síntesis y sonidos.
  • Pestaña KISUM (musik al revés): sube un audio o vídeo y te lo devuelve como código Strudel (tempo + batería por bandas). Lo procesa un mini-servidor Python local (kisum/) que arranca solo con el lanzador. Ver más abajo.
  • Pestaña Visor: pentagrama (piano-roll), onda (osciloscopio) y espectro en vivo de lo que suena, sin tener que escribir .pianoroll() ni .scope() en el código.
  • Accesos directos en la cabecera: projects, KISUM, visor, ajustes.
  • Packs de temas del editor: neon-madrid y hacklab-pack.
  • Lanzador de escritorio: strudel-launcher.sh.

Instalación (Linux)

Requisitos: git, node >= 20, pnpm (corepack enable) y, para KISUM, python3 + ffmpeg.

Fácil (un comando):

git clone https://gitea.laenre.net/hacklab/strudel.git
cd strudel
./install.sh            # instala Node deps + build + entorno de KISUM
./strudel-launcher.sh   # http://127.0.0.1:3009 (+ KISUM en 3010) y abre el navegador

El install.sh no descarga los paquetes al repo: usa pnpm (Node) y un venv de Python para KISUM. Todo eso queda en .gitignore.

Manual / desarrollo:

pnpm i
pnpm dev                # recarga en vivo, http://localhost:4321
# o, para el uso diario (build estática + lanzador):
pnpm build
./strudel-launcher.sh

Icono de escritorio: ~/.local/share/applications/strudel.desktop

[Desktop Entry]
Type=Application
Name=Strudel
Comment=Live coding de musica
Exec=/ruta/a/strudel/strudel-launcher.sh
Icon=audio-x-generic
Terminal=false
Categories=AudioVideo;Audio;

Packs de proyectos propios

La librería de fábrica está en website/src/repl/components/panel/default-projects.mjs. Para un pack personal crea un módulo con el mismo formato {name, folder, code} y concaténalo en DEFAULT_PROJECTS (los packs personales están en .gitignore). También se pueden crear proyectos desde la propia pestaña.

KISUM (audio → código Strudel)

KISUM escucha una canción (audio o vídeo: mp3, wav, flac, m4a, mp4, mkv…), detecta el tempo y los golpes por bandas (bombo/caja/hats) y lo devuelve como código Strudel listo para pegar. Vive en la carpeta kisum/ (Python + librosa) y se usa de dos formas:

  • Desde Strudel: pestaña KISUM → arrastra el archivo → AnalizarCargar en editor. El mini-servidor (kisum/kisum_server.py, en 127.0.0.1:3010) lo arranca solo strudel-launcher.sh.

  • Desde la terminal:

    cd kisum
    ./kisum tu_cancion.mp3            # imprime el código Strudel
    ./kisum clip.mp4 --bars 8 --bass # vídeo, 8 compases, con línea de bajo
    

Requiere python3 y ffmpeg. Si ./install.sh no lo dejó listo (o quieres reinstalarlo): ./kisum/install.sh. Detalles y limitaciones en kisum/README.md.

Nota: la transcripción de la v0 analiza la mezcla completa (aún no separa instrumentos), así que en temas muy densos el patrón sale cargado. La separación por stems (demucs) está en la hoja de ruta.

Actualizar desde upstream

git fetch upstream
git merge upstream/main

Enlaces