- 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>
67 lines
2.6 KiB
Bash
Executable file
67 lines
2.6 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# Strudel launcher — sirve la build estática local y abre el navegador.
|
|
# Pensado para el lanzador de escritorio (icono clicable): si el servidor ya
|
|
# está corriendo solo abre la pestaña; si no, lo arranca desacoplado.
|
|
#
|
|
# ./strudel-launcher.sh # puerto 3009
|
|
# STRUDEL_PORT=4000 ./strudel-launcher.sh
|
|
#
|
|
# Requiere haber hecho antes: pnpm i && pnpm build (ver README.md)
|
|
set -u
|
|
|
|
DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
APP_DIR="${DIR}/website"
|
|
ASTRO="${APP_DIR}/node_modules/.bin/astro"
|
|
PORT="${STRUDEL_PORT:-3009}"
|
|
URL="http://127.0.0.1:${PORT}/"
|
|
LOG="${DIR}/strudel-server.log"
|
|
|
|
# Si node no está en el PATH (sesión de escritorio), prueba con nvm
|
|
if ! command -v node >/dev/null 2>&1 && [ -d "${HOME}/.nvm/versions/node" ]; then
|
|
NODE_BIN="$(ls -d "${HOME}"/.nvm/versions/node/*/bin 2>/dev/null | sort -V | tail -1)"
|
|
[ -n "${NODE_BIN}" ] && export PATH="${NODE_BIN}:${PATH}"
|
|
fi
|
|
|
|
if [ ! -x "${ASTRO}" ]; then
|
|
echo "Falta la instalación. Ejecuta en ${DIR}:"
|
|
echo " pnpm i && pnpm build"
|
|
exit 1
|
|
fi
|
|
|
|
# Si el servidor no está ya escuchando, lo arrancamos desacoplado del lanzador.
|
|
if ! curl -fsS -o /dev/null "${URL}" 2>/dev/null; then
|
|
cd "${APP_DIR}" || exit 1
|
|
setsid "${ASTRO}" preview --port "${PORT}" --host 127.0.0.1 > "${LOG}" 2>&1 &
|
|
# Espera hasta ~30s a que responda
|
|
for _ in $(seq 1 30); do
|
|
curl -fsS -o /dev/null "${URL}" 2>/dev/null && break
|
|
sleep 1
|
|
done
|
|
fi
|
|
|
|
# ── Servidor KISUM (audio → código Strudel, integrado en la pestaña KISUM) ──
|
|
# Arranca el mini-servidor Python si existe su venv y no está ya escuchando.
|
|
# No es crítico: si falta, Strudel abre igual (la pestaña avisará).
|
|
# Busca KISUM eligiendo la primera copia que TENGA entorno (.venv):
|
|
# 1) variable KISUM_DIR (si la defines tú)
|
|
# 2) empaquetado en el repo (kisum/) ← tras ./install.sh
|
|
# 3) ruta externa del hub MUSIKA (instalación antigua)
|
|
# Si ninguna tiene venv aún, usa el empaquetado (lo tendrá tras ./install.sh).
|
|
if [ -z "${KISUM_DIR:-}" ]; then
|
|
for cand in "${DIR}/kisum" "${HOME}/COFRE/CODERS/MUSIKA/AUDIO/PROYECTOS/KISUM"; do
|
|
if [ -x "${cand}/.venv/bin/python3" ]; then
|
|
KISUM_DIR="${cand}"
|
|
break
|
|
fi
|
|
done
|
|
KISUM_DIR="${KISUM_DIR:-${DIR}/kisum}"
|
|
fi
|
|
KISUM_PORT="${KISUM_PORT:-3010}"
|
|
KISUM_PY="${KISUM_DIR}/.venv/bin/python3"
|
|
if [ -x "${KISUM_PY}" ] && ! curl -fsS -o /dev/null "http://127.0.0.1:${KISUM_PORT}/health" 2>/dev/null; then
|
|
KISUM_PORT="${KISUM_PORT}" setsid "${KISUM_PY}" "${KISUM_DIR}/kisum_server.py" \
|
|
> "${DIR}/kisum-server.log" 2>&1 &
|
|
fi
|
|
|
|
# Abre en el navegador por defecto
|
|
xdg-open "${URL}" >/dev/null 2>&1 &
|