# Strudel · fork del hacklab Fork de [Strudel](https://codeberg.org/uzu/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](./docs/captura.png) ## 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):** ```bash 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:** ```bash 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` ```ini [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 → *Analizar* → *Cargar en editor*. El mini-servidor (`kisum/kisum_server.py`, en `127.0.0.1:3010`) lo arranca solo `strudel-launcher.sh`. - **Desde la terminal**: ```bash 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`](./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 ```bash git fetch upstream git merge upstream/main ``` ## Enlaces - Strudel (upstream): — su README original: [README-upstream.md](./README-upstream.md) - Documentación / tutorial: - TidalCycles, el original en Haskell: - Algorave, la escena: - Samples para empezar a jugar: - Dirt-Samples (la librería clásica de Tidal): - tidal-drum-machines (Roland TR-808/909 y muchas más): - Para ver de qué va esto en directo: