- 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>
121 lines
4.6 KiB
Markdown
121 lines
4.6 KiB
Markdown
# 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`).
|
|
|
|

|
|
|
|
## 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): <https://codeberg.org/uzu/strudel> — su README original: [README-upstream.md](./README-upstream.md)
|
|
- Documentación / tutorial: <https://strudel.cc/learn>
|
|
- TidalCycles, el original en Haskell: <https://tidalcycles.org>
|
|
- Algorave, la escena: <https://algorave.com>
|
|
- Samples para empezar a jugar:
|
|
- Dirt-Samples (la librería clásica de Tidal): <https://github.com/tidalcycles/Dirt-Samples>
|
|
- tidal-drum-machines (Roland TR-808/909 y muchas más): <https://github.com/ritchse/tidal-drum-machines>
|
|
- Para ver de qué va esto en directo: <https://www.youtube.com/watch?v=iu5rnQkfO6M>
|