Strudel (live coding de música) — fork del hacklab: interfaz multiidioma, pestaña de proyectos, transporte con seek, guía de sonidos y lanzador de escritorio. Upstream: codeberg.org/uzu/strudel
Find a file
hacklab f2a8ce88aa
Some checks failed
Build and Deploy to warm (strudel.cc) / build (push) Has been cancelled
Strudel tests / build (20) (push) Has been cancelled
Remixes retro: producción pro
Reescritura de los remixes con mejoras de producción: kick en dos capas
(click + boom afinado), bajo que sigue las fundamentales del acorde, groove
con swing y ghost notes, armonía con 7as/9as, capa de aire y separación de
frecuencias. Regenerable desde my-patterns/RETRO-TECHNO-REMIXES/.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-26 18:47:35 +02:00
.astro cleanup + tweak bottom panel style 2026-01-20 23:36:09 +01:00
.forgejo send manual deploy to cold.strudel.cc, and autodeploy to strudel.cc 2026-04-05 11:37:40 +01:00
.vscode basic astro docs 2022-12-19 23:23:31 +01:00
bench Polish, rename, and document stepwise functions (#1262) 2025-02-02 20:26:44 +00:00
docs README: captura del REPL con la pestaña Projects y el transporte 2026-07-17 02:07:10 +02:00
examples Merge pull request 'Add packages/edo for edoScale() function' (#1430) from robmckinnon/strudel-edo-fork:main into main 2026-02-14 23:19:16 +01:00
jsdoc Rename group -> tags 2025-10-11 14:11:50 +02:00
kisum Integra KISUM (audio→Strudel) + pestaña Visor + accesos en la cabecera 2026-07-26 18:31:37 +02:00
my-patterns less github 2025-06-12 18:00:39 +01:00
packages Mejoras hacklab: i18n, pestaña Projects, transporte con seek, guía y temas 2026-07-17 01:47:12 +02:00
samples simplify readme 2024-03-30 16:03:43 +01:00
src-tauri chore: update website packages 2025-01-26 13:06:48 +01:00
test snapshot 2026-06-21 14:02:34 +01:00
tools/dbpatch fix(tool/dbpatch): add missing package name 2025-11-26 19:48:48 +01:00
website Remixes retro: producción pro 2026-07-26 18:47:35 +02:00
.dockerignore Added .dockerignore 2026-02-28 13:39:07 +03:00
.eslintrc.json migrate eslint 2025-01-26 13:24:51 +01:00
.gitignore Integra KISUM (audio→Strudel) + pestaña Visor + accesos en la cabecera 2026-07-26 18:31:37 +02:00
.nvmrc fix for node 24 support #1718 2025-11-04 20:54:21 -06:00
.prettierignore ignore .pnpm-store 2025-06-13 08:22:46 +01:00
.prettierrc FIXES: Warning about jsxBracketSameLine deprecation 2023-02-16 14:46:33 +01:00
CHANGELOG.md reverts changelog changes because human... 2026-01-19 10:15:10 +01:00
CONTRIBUTING.md tweaks 2025-12-11 15:07:57 +00:00
Dockerfile chore(docker): basic support added 2025-07-04 18:50:21 -04:00
eslint.config.mjs Revert "Revert "Merge pull request 'supradough poc' (#1362) from supradough into main"" 2025-09-12 10:08:55 +02:00
index.mjs Import packages/edo into strudel 2025-06-29 10:49:04 +02:00
install.sh Integra KISUM (audio→Strudel) + pestaña Visor + accesos en la cabecera 2026-07-26 18:31:37 +02:00
lerna-debug.log patch 2026-01-17 19:02:25 -08:00
lerna.json update lerna 2023-12-30 23:19:22 +01:00
LICENSE Change to Affero GPL 2022-04-27 09:34:47 +01:00
package.json Merge pull request 'Add packages/edo for edoScale() function' (#1430) from robmckinnon/strudel-edo-fork:main into main 2026-02-14 23:19:16 +01:00
pnpm-lock.yaml Merge pull request 'Add packages/edo for edoScale() function' (#1430) from robmckinnon/strudel-edo-fork:main into main 2026-02-14 23:19:16 +01:00
pnpm-workspace.yaml Mejoras hacklab: i18n, pestaña Projects, transporte con seek, guía y temas 2026-07-17 01:47:12 +02:00
README-upstream.md README principal: la documentacion del fork con los enlaces 2026-07-17 02:04:08 +02:00
README.md Integra KISUM (audio→Strudel) + pestaña Visor + accesos en la cabecera 2026-07-26 18:31:37 +02:00
strudel-launcher.sh Integra KISUM (audio→Strudel) + pestaña Visor + accesos en la cabecera 2026-07-26 18:31:37 +02:00
undocumented.json some clarification comments 2025-07-04 22:17:23 +02:00
vitest.config.mjs Turn back on silent 2025-08-24 21:15:47 -05:00
vitest.setup.mjs Change name to setDefaultJoin 2026-01-22 14:24:45 -06:00
warm.js update changelog + fix script to not miss entries 2026-01-16 09:58:14 +01:00

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