# Audio privado `media/audio` guarda los másteres y archivos de descarga. No se sirve como un directorio estático: `/descargas/…` comprueba la sesión y la compra antes de entregar cualquier archivo. La escucha autorizada usa una representación distinta y completa, generada a calidad reducida en `media/escucha`. De ella sale además un resumen de amplitudes en `static/ondas`, que permite dibujar el audio sin descargarlo ni decodificarlo en el navegador. Ya no se generan ni publican fragmentos recortados: el control de acceso vive en la ruta `/escucha/…`. ## Flujo ```bash npm run medios # genera las escuchas y sus formas de onda npm run db:medios # mide, registra y enlaza todas las representaciones ``` `npm run medios` también corre antes de `npm run dev` y `npm run build`. Recorre todos los másteres de `media/audio`, incluidos los importados como álbum sin ficha Markdown. Los perfiles están centralizados en `scripts/config/audio.mjs`: actualmente produce MP3 a 96 kbps y resume cada pista en 128 picos. ## Convención ```text media/audio/ / 01-.mp3 01--orquestal.mp3 singles/ .mp3 media/escucha/ static/ondas/ ``` La ruta relativa es estable. El máster `media/audio/cupido-sin-flechas/01-tema.mp3` produce `media/escucha/cupido-sin-flechas/01-tema.mp3` y `static/ondas/cupido-sin-flechas/01-tema.json`. En la base, `cancion_audio` distingue explícitamente los usos `master`, `descarga` y `stream`; la URL de la onda se deriva de la del último, por lo que no hay otra columna que pueda quedar desincronizada. ## Subidas Una subida pendiente puede aterrizar en `media/audio/subidas`. Si una ficha Markdown la reclama, el script la mueve a su ubicación canónica y actualiza la ficha. Cualquier archivo que permanezca en la bandeja sin relación se anuncia en cada ejecución para que no pase inadvertido. ## Despliegue `MEDIA_DIR` configura la raíz de los másteres y `ESCUCHA_DIR` la de las copias reducidas; por defecto son `./media/audio` y `./media/escucha`. Ambos almacenes deben copiarse al servidor aparte del build. Solo los resúmenes de `static/ondas`, que no contienen audio, forman parte de los estáticos. Para comprobar la integridad después de migrar o importar: ```bash npm run db:auditar-musica ```