Changelog — G Radio Player

Todas las versiones publicadas de gradio-player (paquete .deb).


[0.4.1] — 2026-05-11

Correcciones

  • Plugin DSP — sin crujido al inicio de cada audio: cada pipeline crea su propio DspProcessor con estado limpio (filtros biquad del crossover en cero). En v0.4.0 todos los pipelines compartían el mismo objeto y los registros de retardo del tema anterior contaminaban los primeros frames del nuevo. El compresor ahora arranca con gain_db = makeup_db en lugar de 0, eliminando el pop inicial mientras el compresor converge.
  • Plugin DSP — VU metros activos en la ventana de configuración: los metros ahora leen de variables atómicas globales (DISP_LEVELS, DISP_GRS) escritas directamente por el pad probe. En v0.4.0 la UI leía del master DspProcessor que ya no procesaba audio, por eso las barras aparecían apagadas.
  • Plugin DSP — ajustes de parámetros en tiempo real: el pad probe verifica un contador de versión atómico (PROC_CFG_VER) en cada buffer; si cambió, recarga la config del master y llama update_config() sin bloquear el hilo de audio. En v0.4.0 los cambios de knobs no llegaban al pipeline activo.
  • Tandas de comerciales — botones ▲▼✕ funcionan correctamente: el índice visual de cada ítem no coincidía con la línea real del archivo .com cuando había ítems filtrados por día/fecha. Ahora cada ítem guarda su file_line real y las operaciones de swap/delete lo usan. Además los botones aplican el cambio y reconstruyen el panel inmediatamente.
  • Panel «⬛ Cola activa» en la sección de comerciales: encima de las próximas 4 tandas aparece la cola actual (comercialeslist4) con fondo rojo oscuro, mostrando lo que sonará al terminar el tema en curso. Incluye botón ✕ por ítem para borrado individual y botón 🗑 Vaciar todo. Se refresca en < 200ms cuando el scheduler carga comerciales al segundo :58 o cuando el operador modifica la cola.

[0.4.0] — 2026-05-10

Novedades

Plugin de procesamiento de audio DSP multiband

  • Botón 🎚 Procesador en la barra de herramientas: activa o desactiva el procesador de audio en vivo. El ícono cambia entre processor-off y processor-on según el estado. El estado (activo/inactivo) persiste entre reinicios.
  • Botón ⚙ Config DSP (junto al anterior): abre la ventana de configuración completa del procesador con la interfaz rack de GR-Processor.
  • Cadena DSP: crossover Linkwitz-Riley de 4.° orden → compresor linked-stereo RMS feed-forward por banda → clipper suave (tanh) → limitador brick-wall. Soporta de 2 a 6 bandas configurables.
  • Ajuste en tiempo real: todos los pipelines activos (música, comerciales, eventos) comparten el mismo Arc<Mutex<DspProcessor>>; cualquier cambio de parámetro se refleja inmediatamente en el audio en reproducción sin necesidad de reiniciar o esperar la próxima canción.
  • Ventana de configuración: knobs Cairo idénticos al GR-Processor autónomo (THR, RATIO, ATK, REL, GAIN, CLIP). Sliders de ganancia de entrada/salida y umbral del limitador en paneles laterales.
  • Presets: 6 presets de fábrica (ROCK, BLUE, CLASIC, VOICE, HARD BASS, STRONG). Botones ▶ LOAD y ● SAVE para cargar y guardar presets propios en ~/.config/gradio/presets/. El último preset usado se recuerda al reiniciar.
  • Configuración persistente: ~/.gradio/data/processor.json guarda estado (on/off), todos los parámetros de bandas, ganancias y último preset.

Panel de comerciales — Próximas 4 tandas

  • El panel «📢 Comerciales» reemplaza la lista plana de la cola activa por una vista de las próximas 4 tandas programadas, leyendo directamente los archivos .com del horario.
  • Cada tarjeta muestra: hora de reproducción, duración acumulada de la tanda y botón ▶ Play.
  • Botón ▶ Play en cada tanda: hace fadeout del tema en curso, reproduce la tanda inmediatamente y luego continúa con el playlist. Marca la tanda como ya reproducida para que el scheduler no la vuelva a cargar.
  • Los botones ▲ ▼ ✕ de cada ítem editan directamente el archivo .com del horario (no la cola activa).
  • Cada tarjeta tiene un fondo de color diferente (azul / verde / ámbar / violeta) para diferenciar visualmente los bloques.
  • El panel se refresca automáticamente cada 30 segundos.

Otras mejoras

  • Nombres de comerciales legibles: se decodifica el percent-encoding del URI de GStreamer al mostrar el título en la barra de estado (LAMEGAAVANCE%20KALIMANLAMEGAAVANCE KALIMAN).
  • Íconos del procesador: tres nuevos PNG en assets/processor-off.png, processor-on.png, processor-config.png.

[0.3.9] — 2026-05-05

Correcciones

  • Drop & drop al área extendida del playlist: el playlist_vbox no se
    estiraba con el frame, dejando muerta la zona inferior cuando se ampliaba
    la ventana. Se forzó vexpand+Fill y se agregó un DropTarget catch-all
    en lists_row con ruteo por X.
  • Tooltips de los botones ⬆/⬇/🗑 de la cola: se borraban cada 200 ms
    porque el rebuild del listbox se disparaba con cada escritura de
    playlist-refill, aunque el contenido visible no cambiara. El trigger
    ahora compara un signature de paths+duración.

Novedades

  • Validación de audio antes de encolar (vía symphonia): cualquier
    archivo cuyo decode falle se descarta automáticamente. Aplica a:
    playlist-refill, comercial-scheduler (3 schedulers), drag-drop a la
    cola y a comerciales, botones ⤒/⤓ y doble-click del buscador, y los
    comandos remotos TCP AgregarAlPlaylist / ReproducirAhora /
    PlaylistPlayAhora. Resuelve el cuelgue del player ante audios corruptos.

[0.3.8] — 2026-05-04

Correcciones

  • Drag & drop buscador → playlist: el drop solo funcionaba sobre la mitad superior del panel; los DropTarget ahora cubren playlist_listbox, playlist_scroll y playlist_frame para todo el área visible (incluyendo cuando la ventana se extiende tras abrir el buscador).
  • Reanudar tras pausa larga: si se pausaba un tema y se reanudaba minutos después, el detector de drift wall-vs-pos disparaba un crossfade espurio. action_play ahora realinea current_track_start con la posición real del pipeline al salir de Paused.
  • Editor gr-playlist: aceptaba solo gio::File; ahora también STRING (text/uri-list desde gr-buscador) y FileList, instalados sobre listbox y scroll.

Novedades

  • Buscador: cada fila de resultado lleva dos botones: ⤒ insertar al inicio del playlist y ⤓ agregar al final (íconos up.png / down.png).
  • Comerciales / Eventos / Eventos en espera: cada fila muestra duración (con cache para no relanzar ffprobe) y botones inline ↑/↓ que reordenan las líneas en el archivo correspondiente.

[0.3.6] — 2026-05-01

Novedades

  • Ícono del pisador reemplazado por sello.png.
  • Panel Playlist: nueva cabecera con botón Automático (robot.png) que pausa/reanuda playlist-refill. Verde oscuro = automático activo; rojo oscuro = pausado.
  • Panel Playlist: botón Vaciar (trash.png) para vaciar la cola de reproducción de inmediato.
  • playlist-refill: respeta el archivo tmp/pause_refill; cuando existe, el daemon duerme sin rellenar la cola.

[0.2.0] — 2026-04-01

Novedades

  • (pendiente: describir cambios respecto a 0.1.0)

### Correcciones


[0.1.0] — publicado en gradio.net (versión inicial)

  • Primera versión pública del sistema de automatización de radio.
  • Radio-player GTK4 con crossfading y duck de volumen.
  • Daemons: comercial-scheduler y playlist-refill.
  • Herramientas: gr-pautaje, gr-parrilla, gr-botonera, gr-visor, gr-buscador, gr-playlist, gr-record, gr-reportes.
  • Instalador .deb para amd64.