# G Radio Client — Manual de usuario **Versión 0.1.2** --- ## Índice 1. [Introducción](#1-introducción) 2. [Requisitos del sistema](#2-requisitos-del-sistema) 3. [Instalación](#3-instalación) 4. [Configuración del servidor](#4-configuración-del-servidor) 5. [Conexión al servidor](#5-conexión-al-servidor) 6. [Interfaz principal](#6-interfaz-principal) 7. [Panel Player](#7-panel-player) 8. [Buscador de audio](#8-buscador-de-audio) 9. [Panel Pautaje](#9-panel-pautaje) 10. [Panel Parrilla](#10-panel-parrilla) 11. [Panel Botonera](#11-panel-botonera) 12. [Panel Reportes](#12-panel-reportes) 13. [Conexión por Internet (relay)](#13-conexión-por-internet-relay) 14. [Solución de problemas](#14-solución-de-problemas) --- ## 1. Introducción **G Radio Client** (`gr-client`) es una aplicación GTK4 que permite controlar remotamente un servidor **G Radio Player** desde cualquier computadora de la red local o desde internet a través del sistema de relay. Desde el cliente se puede: - Controlar la reproducción en tiempo real (play, pausa, stop, skip, volumen) - Gestionar la playlist del servidor - Editar la parrilla musical (programación horaria) - Editar el pautaje comercial y de eventos - Buscar archivos de audio en el servidor y arrastrarlos a la programación - Operar la botonera de sonidos de acceso rápido - Consultar reportes de audios emitidos Toda la operación se realiza sobre los archivos del servidor; el cliente no almacena contenido propio. --- ## 2. Requisitos del sistema ### Equipo cliente | Componente | Versión mínima | |---|---| | GTK4 | 4.6 | | glib | 2.72 | | Debian / Ubuntu | 22.04 LTS o posterior | | Red | LAN o internet con acceso al servidor | ### Equipo servidor El servidor debe tener instalado y en ejecución **G Radio Player** (`gradio-player`) versión **0.2.9** o posterior, con el servidor TCP activo. --- ## 3. Instalación ### Desde el paquete .deb ```bash sudo dpkg -i gr-client_0.1.2_amd64.deb ``` O con resolución automática de dependencias: ```bash sudo apt install ./gr-client_0.1.2_amd64.deb ``` ### Ejecutar ```bash gr-client ``` O bien desde el menú de aplicaciones: buscar **G Radio Client**. ### Desinstalar ```bash sudo apt remove gr-client ``` --- ## 4. Configuración del servidor Antes de conectar el cliente es necesario configurar correctamente el servidor G Radio Player para que acepte conexiones remotas. ### 4.1 Archivo de configuración del servidor El servidor lee su configuración desde: ``` ~/.gradio/data/tmp/gradio.config ``` El archivo tiene una línea por campo, en este orden: ``` Nombre de la radio Dispositivo de audio (ej: default) G Radio Duración del crossfade en segundos (ej: 3.0) Puerto del servidor gr-client (ej: 7777) Token de autenticación (vacío = sin contraseña) Relay habilitado (0 = no, 1 = sí) ID del relay (8 dígitos, ej: 12345678) ``` **Ejemplo de archivo `gradio.config`:** ``` Radio Ejemplo FM default G Radio 3.0 7777 mi-token-seguro 0 00000000 ``` > La primera vez que se ejecuta `gradio.sh`, el archivo se crea automáticamente con valores por defecto. Se puede editar con cualquier editor de texto mientras el servidor está detenido, o desde la ventana de configuración dentro de la aplicación. ### 4.2 Puerto del servidor Por defecto el servidor escucha en el puerto **7777** TCP. Para cambiarlo, editar la línea 5 del archivo `gradio.config`. Asegurarse de que el puerto esté abierto en el firewall del equipo servidor: ```bash # Verificar que el servidor está escuchando ss -tlnp | grep 7777 ``` ### 4.3 Token de autenticación El token es una contraseña compartida entre el servidor y todos los clientes. Puede ser cualquier cadena de texto. - Si la línea del token está **vacía**, el servidor acepta cualquier conexión sin contraseña. - Si tiene contenido, el cliente **debe** ingresar el mismo token para conectarse. **Recomendación:** usar siempre token cuando el servidor sea accesible desde internet. ### 4.4 Habilitación del relay (acceso remoto por internet) Para acceder al servidor desde fuera de la red local se usa el sistema de relay. Ver la sección [13. Conexión por Internet (relay)](#13-conexión-por-internet-relay). Para habilitarlo, poner `1` en la línea 7 y un ID de 8 dígitos en la línea 8 del archivo `gradio.config`. El servidor se conectará automáticamente al relay al iniciarse. ### 4.5 Verificar que el servidor está activo Al ejecutar `gradio.sh` el servidor TCP se inicia automáticamente junto con el reproductor. Para verificarlo: ```bash # Ver procesos activos ps aux | grep radio-player # Ver puerto abierto ss -tlnp | grep 7777 ``` El cliente mostrará la versión del servidor al conectarse correctamente (ej: `● Conectado v0.2.9`). --- ## 5. Conexión al servidor ### 5.1 Panel de conexión En la parte superior de la ventana principal se encuentra el panel de conexión: ``` ┌──────────────────────────────────────────────────────────────────┐ │ Servidor: [192.168.1.100] Puerto: [7777] Token: [••••••••] │ │ [ ] Internet ID: [________] [Conectar] ● Desconectado │ └──────────────────────────────────────────────────────────────────┘ ``` ### 5.2 Conexión en red local (LAN) 1. Dejar el checkbox **Internet** desactivado. 2. Ingresar la **IP o hostname** del equipo servidor (ej: `192.168.1.100` o `servidor-radio`). 3. Ingresar el **puerto** (por defecto: `7777`). 4. Ingresar el **token** si el servidor lo tiene configurado. Dejar vacío si no hay contraseña. 5. Hacer clic en **Conectar**. El indicador de estado cambia a: | Estado | Indicador | |---|---| | Desconectado | ● Desconectado (gris) | | Conectando | ⟳ Conectando… | | Conectado | ● Conectado v0.2.9 (verde) | | Error | ✗ Error: descripción (rojo) | ### 5.3 Verificar la conexión Al conectarse correctamente: - El indicador muestra verde con la versión del servidor. - El panel Player se actualiza con el estado actual de reproducción. - La playlist del servidor se carga automáticamente. - Todos los controles se habilitan. ### 5.4 Reconexión automática Si la conexión se interrumpe, el cliente intenta reconectarse automáticamente con retroceso exponencial (primero cada 5 segundos, luego aumenta hasta 120 segundos). --- ## 6. Interfaz principal La ventana principal (1400 × 750 px) se divide en dos áreas: ``` ┌─────────────────────────────────────────────────────────────────┐ │ Panel de conexión (parte superior) │ ├──────────────────────┬──────────────────────────────────────────┤ │ │ ┌──────────────────────────────────┐ │ │ │ │ ▶ Player │ │ │ Buscador │ ├──────────────────────────────────┤ │ │ (siempre visible) │ │ 📅 Pautaje │ │ │ │ ├──────────────────────────────────┤ │ │ - Campo de búsqueda│ │ 🎵 Parrilla │ │ │ - Botón buscar │ ├──────────────────────────────────┤ │ │ - Lista resultados │ │ 🎛 Botonera │ │ │ - Drag-and-drop │ ├──────────────────────────────────┤ │ │ │ │ 📊 Reportes │ │ │ │ └──────────────────────────────────┘ │ └──────────────────────┴──────────────────────────────────────────┘ ``` El **Buscador** permanece visible en todo momento a la izquierda. Los paneles funcionales se acceden por pestañas en el área derecha. --- ## 7. Panel Player El panel Player permite controlar la reproducción en tiempo real sobre el servidor. ### 7.1 Información del track actual ``` ┌─────────────────────────────────────────────────────┐ │ ♪ Nombre del track actual │ │ 01:23 ──────────────●──────────────── 03:45 │ │ Volumen: ────────────●──── 85 │ └─────────────────────────────────────────────────────┘ ``` - **Título:** nombre del archivo en reproducción (sin extensión). - **Barra de progreso:** posición actual / duración total. Solo lectura. - **Slider de volumen:** ajusta el volumen de música (0–100). El volumen se aplica en el servidor. ### 7.2 Controles de reproducción | Botón | Función | |---|---| | ▶ Play | Inicia la reproducción | | ⏸ Pausa | Pausa / reanuda | | ⏹ Stop | Detiene la reproducción | | ⏭ Stop After | Detiene al terminar el track actual | | → Skip | Salta al siguiente track de la playlist | Todos los controles están deshabilitados cuando el cliente está desconectado. ### 7.3 Playlist Lista las canciones en cola para reproducción en el servidor. ``` ┌──┬────┬─────────────────────────────┬──────────┬──────────────┐ │ │ # │ Título │ Duración │ Acciones │ ├──┼────┼─────────────────────────────┼──────────┼──────────────┤ │▶ │ 1 │ Canción actual │ 03:45 │ ▶ ↑ ↓ ✗ │ │ │ 2 │ Siguiente canción │ 04:12 │ ▶ ↑ ↓ ✗ │ │ │ 3 │ Otra canción más │ 02:58 │ ▶ ↑ ↓ ✗ │ └──┴────┴─────────────────────────────┴──────────┴──────────────┘ ``` | Botón | Función | |---|---| | ▶ | Reproducir este track inmediatamente | | ↑ | Mover una posición arriba | | ↓ | Mover una posición abajo | | ✗ | Eliminar de la playlist | ### 7.4 Agregar tracks a la playlist **Método principal: drag-and-drop desde el Buscador** 1. Buscar el archivo en el panel Buscador (izquierda). 2. Hacer clic y arrastrar el resultado hacia la lista de la playlist. 3. Soltar en la posición deseada. La duración se obtiene automáticamente del servidor. La playlist se actualiza en tiempo real: si otro operador modifica la playlist en el servidor o desde otro cliente, los cambios se reflejan automáticamente. --- ## 8. Buscador de audio El buscador permite localizar archivos de audio almacenados en el servidor y arrastrarlos a cualquier panel. ### 8.1 Búsqueda ``` ┌─────────────────────────────────┐ │ Buscar: [adele ] 🔍 │ │ En: [/home/radio/mus ] │ │ ⟳ Índice │ ├─────────────────────────────────┤ │ Nombre │ Duración │ │ Rolling.mp3 │ 03:43.000 │ │ Someone.mp3 │ 04:52.000 │ │ Hello.mp3 │ 04:55.000 │ └─────────────────────────────────┘ ``` - **Buscar:** nombre del archivo (parcial, sin distinguir mayúsculas). - **En:** ruta opcional para limitar la búsqueda a una carpeta específica. Si se deja vacío, busca en todo el servidor. - **Botón 🔍 o Enter:** ejecuta la búsqueda. - **Botón ⟳ Índice:** actualiza la base de datos de búsqueda en el servidor. Necesario si se agregaron archivos nuevos recientemente. > La búsqueda usa una base de datos local del servidor (`~/.gradio/locatedb`). Si los resultados no incluyen archivos recientes, hacer clic en **⟳ Índice** para actualizar. ### 8.2 Menú contextual (clic derecho) | Opción | Función | |---|---| | ▶ Reproducir ahora | Envía el archivo al servidor para reproducción inmediata | | + Agregar al playlist | Lo añade al final de la playlist | | 📋 Copiar ruta | Copia la ruta completa al portapapeles | ### 8.3 Drag-and-drop Los archivos del buscador pueden arrastrarse hacia: | Destino | Efecto | |---|---| | Playlist (panel Player) | Agrega el track a la playlist en la posición soltada | | Panel Pautaje | Crea una nueva entrada comercial con ese archivo | | Panel Parrilla | Agrega el archivo como item en la hora seleccionada | --- ## 9. Panel Pautaje Permite editar la programación de comerciales, eventos y eventos en espera del servidor. ### 9.1 Tipos de pautaje El panel tiene tres pestañas: | Pestaña | Carpeta en servidor | Uso | |---|---|---| | Comerciales | `~/.gradio/data/comerciales/` | Publicidad programada | | Eventos | `~/.gradio/data/eventos/` | Eventos instantáneos | | Eventos-Espera | `~/.gradio/data/eventos-espera/` | Eventos en cola | ### 9.2 Selección de hora y minuto ``` Hora: [10 ▾] Minuto: [30 ▾] [⟳ Cargar] ``` - **Hora:** 00 a 23. - **Minuto:** 00, 05, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55. - Hacer clic en **⟳ Cargar** para ver las entradas de esa franja horaria. ### 9.3 Tabla de entradas ``` ┌──────────────────────────────┬──────────┬──────────┬──────────┐ │ Archivo │ Días │ Inicio │ Fin │ ├──────────────────────────────┼──────────┼──────────┼──────────┤ │ /radio/comerciales/spot1.mp3 │ 12345 │ 20250101 │ 20251231 │ │ /radio/comerciales/spot2.mp3 │ 1234567 │ 20250601 │ 20250630 │ └──────────────────────────────┴──────────┴──────────┴──────────┘ ``` **Columna Días:** máscara numérica donde cada dígito representa un día de la semana: ``` 1 = Lunes 2 = Martes 3 = Miércoles 4 = Jueves 5 = Viernes 6 = Sábado 7 = Domingo ``` Ejemplo: `135` = solo Lunes, Miércoles y Viernes. **Columna Inicio / Fin:** fechas en formato `YYYYMMDD`. Fuera de ese rango el audio no se emite. ### 9.4 Barra de herramientas | Botón | Función | |---|---| | + Nueva | Abre el diálogo para agregar una entrada | | ✏ Editar | Edita la entrada seleccionada | | ✗ Eliminar | Borra la entrada seleccionada | | ↑ / ↓ | Cambia el orden de reproducción | | 💾 Guardar | Envía los cambios al servidor | > Los cambios **no se aplican hasta presionar 💾 Guardar**. ### 9.5 Diálogo de nueva entrada / edición ``` Ruta: [/radio/comerciales/spot1.mp3 ] Días activos: [✓] Lun [✓] Mar [✓] Mié [✓] Jue [✓] Vie [ ] Sáb [ ] Dom Inicio: [20250101] Fin: [20251231] [Cancelar] [Aceptar] ``` - **Ruta:** ruta completa del archivo en el servidor. Se puede pegar desde el buscador. - **Días activos:** marcar los días en que debe emitirse. - **Inicio / Fin:** período de vigencia en formato `YYYYMMDD`. ### 9.6 Drag-and-drop desde el buscador Arrastrar un archivo desde el Buscador hacia la tabla de pautaje crea automáticamente una nueva entrada con: - Ruta = archivo arrastrado - Días = todos (1234567) - Inicio y Fin = fecha actual Editar la entrada para ajustar días y fechas según corresponda. --- ## 10. Panel Parrilla Permite editar la programación musical horaria del servidor. ### 10.1 Selección de día y hora ``` Día: [Lunes ▾] Hora: [10 ▾] [⟳ Cargar] ``` Seleccionar el día de la semana y la hora (00–23), luego hacer clic en **⟳ Cargar**. ### 10.2 Lista de items ``` ┌────┬──────────────────────────────────────────────┐ │ # │ Item │ ├────┼──────────────────────────────────────────────┤ │ 1 │ Hora │ │ 2 │ /radio/musica/pop/* │ │ 3 │ /radio/musica/pop/cancion-especial.mp3 │ │ 4 │ /radio/musica/rock/* │ └────┴──────────────────────────────────────────────┘ ``` Tipos de item: | Item | Comportamiento | |---|---| | `/ruta/archivo.mp3` | Reproduce ese archivo exacto | | `/ruta/carpeta/*` | Elige un archivo al azar de esa carpeta | | `Hora` | Reproduce el jingle de hora correspondiente | | `http://stream.url` | Conecta al stream de internet | ### 10.3 Barra de herramientas | Botón | Función | |---|---| | + Archivo | Agrega una ruta de archivo específico | | + Carpeta/* | Agrega una carpeta para selección aleatoria | | + Hora | Inserta el marcador de jingle de hora | | + URL | Agrega una URL de streaming | | ✗ Eliminar | Elimina el item seleccionado | | ↑ / ↓ | Cambia el orden | | 💾 Guardar | Envía los cambios al servidor | > Los cambios **no se aplican hasta presionar 💾 Guardar**. ### 10.4 Drag-and-drop desde el buscador Arrastrar un archivo desde el Buscador hacia la lista de parrilla lo agrega como item de archivo específico en la posición donde se suelta. --- ## 11. Panel Botonera La botonera es una grilla de botones de acceso rápido para reproducir audios con un solo clic. ### 11.1 Vista de la botonera ``` ┌────────────┬────────────┬────────────┬────────────┐ │ Intro │ Cierre │ Cortina │ Jingle 1 │ │ (rojo) │ (azul) │ (verde) │ (naranja) │ ├────────────┼────────────┼────────────┼────────────┤ │ ... │ ... │ ... │ ... │ └────────────┴────────────┴────────────┴────────────┘ ``` - Hasta 100 botones organizados en filas de 8. - Cada botón tiene etiqueta, color y una ruta de audio asignada. ### 11.2 Usar un botón **Clic izquierdo** sobre cualquier botón → el servidor reproduce ese audio inmediatamente (interrumpe la música con duck de volumen si está configurado). ### 11.3 Editar un botón **Clic derecho** sobre un botón → abre el diálogo de edición: ``` Etiqueta: [Intro programa ] Ruta: [/radio/jingles/intro.mp3] Color: [█ #FF5500 ] (selector de color) [Cancelar] [Aceptar] ``` ### 11.4 Guardar cambios Los cambios en la botonera se envían al servidor con el botón **💾 Guardar** de la barra de herramientas. Para recargar desde el servidor usar **⟳ Cargar**. --- ## 12. Panel Reportes Muestra reportes de actividad generados por el servidor. ### 12.1 Uso ``` Reporte: [Audios emitidos ▾] Fecha: [20260419] [⟳ Cargar] ``` 1. Seleccionar el tipo de reporte. 2. Ingresar la fecha en formato `YYYYMMDD` (por defecto: hoy). 3. Hacer clic en **⟳ Cargar**. ### 12.2 Tipos de reporte disponibles | Tipo | Contenido | |---|---| | Audios emitidos | Lista de todos los audios reproducidos en la fecha indicada | | Playlist actual | Estado actual de la cola de música | | Comerciales activos | Pautaje vigente para el día y hora actual | | Eventos activos | Eventos programados vigentes | El resultado se muestra en una vista de texto de solo lectura, útil para auditoría y verificación de programación. --- ## 13. Conexión por Internet (relay) El sistema de relay permite acceder al servidor desde fuera de la red local sin necesidad de configurar puertos en el router. ### 13.1 Cómo funciona ``` gr-client ──WSS──→ relay.gradio.net ──TCP──→ servidor G Radio Player Internet LAN local ``` El servidor G Radio Player mantiene una conexión persistente con el relay usando un **ID de 8 dígitos**. El cliente se conecta al relay con ese mismo ID y el tráfico se reenvía transparentemente. ### 13.2 Configuración en el servidor Editar `~/.gradio/data/tmp/gradio.config` en el equipo servidor: ``` ... 1 ← línea 7: relay habilitado (1 = sí) 12345678 ← línea 8: ID de 8 dígitos (elegir uno único) ``` Reiniciar el servidor para que tome efecto. Al iniciar, el servidor mostrará en consola: ``` ==> Relay registrado con ID: 12345678 ``` **Importante:** el token de autenticación es obligatorio cuando se usa relay. ### 13.3 Conexión desde el cliente 1. Activar el checkbox **Internet** en el panel de conexión. 2. Ingresar el **ID** de 8 dígitos del servidor. 3. Ingresar el **Token** (obligatorio). 4. Hacer clic en **Conectar**. ``` ┌───────────────────────────────────────────────────────────────┐ │ [✓] Internet ID: [12345678] Token: [mi-token-seguro] │ │ [Conectar] │ └───────────────────────────────────────────────────────────────┘ ``` > En modo relay el campo Servidor y Puerto se ignoran. ### 13.4 Seguridad - Usar siempre un token robusto en conexiones por internet. - El tráfico entre cliente y relay viaja cifrado (WSS/TLS). - El ID del relay no es secreto, pero sin el token correcto no se puede controlar el servidor. --- ## 14. Solución de problemas ### No se puede conectar (LAN) 1. Verificar que el servidor esté ejecutándose: ```bash ps aux | grep radio-player ``` 2. Verificar que el puerto esté abierto: ```bash ss -tlnp | grep 7777 ``` 3. Verificar que el token ingresado en el cliente coincide con el del servidor. 4. Verificar que no hay firewall bloqueando el puerto: ```bash # En el servidor sudo ufw allow 7777/tcp ``` ### No se puede conectar (relay) 1. Verificar que el relay esté habilitado en `gradio.config` (línea 7 = `1`). 2. Verificar que el servidor haya impreso `==> Relay registrado con ID: XXXXXXXX` al iniciar. 3. Verificar que el ID ingresado en el cliente coincide exactamente con el del servidor. 4. Verificar que el token no está vacío (obligatorio en modo relay). 5. Verificar conectividad a internet desde el servidor. ### El buscador no encuentra archivos recientes Hacer clic en **⟳ Índice** en el panel Buscador para actualizar la base de datos del servidor. El proceso puede tardar unos minutos dependiendo de la cantidad de archivos. ### Los cambios en parrilla o pautaje no surten efecto Verificar que se presionó **💾 Guardar** después de editar. Los cambios no se envían al servidor hasta confirmarlos. ### La playlist no se actualiza automáticamente La actualización automática requiere conexión activa. Verificar el indicador de estado en el panel de conexión. Si está en rojo, el cliente perdió la conexión y está intentando reconectarse. ### El servidor muestra "cliente conectado" pero los controles están deshabilitados Cerrar y reabrir la aplicación cliente. Si persiste, verificar que la versión del servidor es compatible (0.2.9 o posterior). --- *G Radio Player / G Radio Client — Sistema de automatización de radio profesional*