- 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> |
||
|---|---|---|
| .astro | ||
| .forgejo | ||
| .vscode | ||
| bench | ||
| docs | ||
| examples | ||
| jsdoc | ||
| kisum | ||
| my-patterns | ||
| packages | ||
| samples | ||
| src-tauri | ||
| test | ||
| tools/dbpatch | ||
| website | ||
| .dockerignore | ||
| .eslintrc.json | ||
| .gitignore | ||
| .nvmrc | ||
| .prettierignore | ||
| .prettierrc | ||
| CHANGELOG.md | ||
| CONTRIBUTING.md | ||
| Dockerfile | ||
| eslint.config.mjs | ||
| index.mjs | ||
| install.sh | ||
| lerna-debug.log | ||
| lerna.json | ||
| LICENSE | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| README-upstream.md | ||
| README.md | ||
| strudel-launcher.sh | ||
| undocumented.json | ||
| vitest.config.mjs | ||
| vitest.setup.mjs | ||
| warm.js | ||
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).
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 → Analizar → Cargar en editor. El mini-servidor (
kisum/kisum_server.py, en127.0.0.1:3010) lo arranca solostrudel-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
- Strudel (upstream): https://codeberg.org/uzu/strudel — su README original: 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
