4.1 KiB
Audio privado
Este directorio guarda los archivos completos del catálogo. No se sirve como
estático: nada de lo que hay aquí llega a la web por sí solo. Solo lo entrega
/descargas/…, y únicamente a quien lo ha comprado.
Lo que sí es público es el fragmento de muestra de cada tema, que vive
aparte, en static/muestras/, y es lo que suena en el reproductor.
Subir un tema desde el panel
Lo normal es no tocar este directorio a mano. En /admin, el campo Archivo
de audio de una canción sube el máster; aterriza en media/audio/subidas/
con el nombre que traiga, porque el navegador no puede colocarlo mejor.
Lo demás lo hace npm run medios, que corre solo antes de npm run dev y de
npm run build:
- Mueve el archivo de
subidas/a la carpeta de su disco —o asingles/— con el nombre de la convención, y reescribe la clave en el Markdown. - Recorta el fragmento de muestra en
static/muestras/. - Escribe la duración en el frontmatter si estaba vacía.
Hace falta ffmpeg en el equipo. Sin él el script no rompe nada: avisa de las muestras que no ha podido generar y sigue. En un servidor de despliegue no se necesita, porque las muestras van en el repositorio.
Si un archivo se queda en subidas/ sin que ninguna canción lo reclame, el
script lo dice en cada arranque. Suele significar que falta la ficha del tema.
Convención
media/audio/
<slug-del-album>/
01-<slug-de-la-cancion>.mp3
01-<slug-de-la-cancion>-orquestal.mp3 ← una alternativa musical
singles/
<slug-de-la-cancion>.mp3 ← temas sin álbum
static/muestras/
<la misma estructura, con los fragmentos>
La ruta relativa dentro de cada uno de los dos árboles es la clave que se escribe en el contenido, sin barra inicial:
# src/content/canciones/como-si-nada.md
audio: como-si-nada/01-como-si-nada.mp3
versiones:
- nombre: 'Versión orquestal'
audio: como-si-nada/01-como-si-nada-orquestal.mp3
De esa única clave salen las dos rutas: media/audio/<clave> para la descarga y
/muestras/<clave> para la escucha pública. Por eso no hay que escribirlas dos
veces, y por eso una clave que empiece por / se rechaza al compilar: sería una
ruta pública, y el archivo completo no lo es.
El número delante del nombre es el mismo numero que lleva la canción en su
frontmatter. No es obligatorio, pero mantiene el directorio ordenado igual que
el disco.
Dónde apunta el directorio
La variable MEDIA_DIR decide la raíz del audio privado; por defecto,
./media/audio. Al desplegar hay que copiar este directorio junto a la
aplicación: no lo genera el build.
Formato
- MP3 a 192 kbps o superior para el archivo completo: lo reproduce y lo abre cualquier cosa, y es lo que se entrega al comprador.
- Muestra de 30 a 45 segundos, del mismo archivo, con un fundido de salida. Debe dejar claro cómo suena el tema sin sustituirlo.
- Etiqueta los archivos completos con sus metadatos (título, artista, álbum): es lo primero que ve quien los descarga.
Para generar una muestra a mano, 40 segundos desde el segundo 30. El -ss va
antes del -i: detrás, el filtro sigue viendo los tiempos del original,
el fundido cae seis segundos después de empezar y el resto sale mudo.
ffmpeg -ss 30 -t 40 -i media/audio/album/01-tema.mp3 \
-af "afade=t=out:st=36:d=4" static/muestras/album/01-tema.mp3
Los archivos que hay ahora
Son marcadores de posición: un tono por pista, seis segundos en el archivo completo y dos en la muestra, con una nota distinta cada uno para poder comprobar de oído que el reproductor cambia de tema y que la descarga entrega lo que debe.
Para poner el material real, lo cómodo es el panel: subir el archivo en la
ficha del tema y arrancar. Si prefieres hacerlo a mano, copia el máster en
media/audio/ respetando la estructura, ajusta el campo audio y lanza
npm run medios para la muestra y la duración. En ambos casos, borra después
el .wav de marcador de posición de los dos directorios.
Las portadas provisionales están en static/images/albumes/ y
static/images/canciones/: sustitúyelas manteniendo el nombre, o cambia el
campo portada.