FreeShow Live Song Ticker Bridge es un servidor intermedio (middleware) que permite mostrar dinámicamente las canciones del proyecto activo en FreeShow dentro de una diapositiva tipo Web / Browser.
Diseñado para:
- Pantalla de escenario (músicos)
- Seguimiento del orden del culto
- Entornos 1080p
- Integraciones técnicas avanzadas
Uso:
Cuando se están proyectando distintas cosas distintas a las alabanzas en la pantalla de la audiencia, los músicos se quedan sin retroalimentación de lo que sigue en el programa, con esto se puede configurar un nuevo tema de escenario en donde se agregue una diapositiva con contenido web, y esa URL es la que entrega el server.js, con esto se puede elegir entre ver lo que viene en cada sección del programa, tanto como alabanzas, versículos, oportunidades especiales, etc., en distintos formatos disponibles, en formato lienzo de 1 o 2 lineas, o en formato vertical.
┌───────────────────┐
│ FreeShow │
│ (WebSocket 5505) │
└─────────┬─────────┘
│
WebSocket Client
│
┌─────────▼─────────┐
│ Node.js Bridge │
│ (Express Server) │
├───────────────────┤
│ - get_projects │
│ - Scan .show │
│ - Render HTML │
└─────────┬─────────┘
│
HTTP (localhost:3000)
│
┌─────────▼─────────┐
│ Web Slide Item │
│ dentro FreeShow │
└───────────────────┘
Conexión a:
ws://localhost:5505
Acción utilizada:
get_projects
Detecta automáticamente el proyecto más recientemente usado.
Escanea:
Documents/FreeShow/Shows
Formato esperado:
["showId", { "name": "Nombre Canción" }]Construye un mapa interno:
showId → showName
Endpoint dinámico:
/api/ticker
Actualización automática:
setInterval(refresh, 2000)No requiere recargar la diapositiva.
/songs
/songs/ticker/coro
Formato:
CORO: ALABANZA 1 • ALABANZA 2
/songs/ticker/conjunto
/songs/ticker
/songs/ticker2
Por defecto el sistema detecta las secciones:
Coro
Conjunto
Estas pueden modificarse fácilmente en el archivo:
server.js
Busca la función:
function buildSongsBySection(project) {Dentro encontrarás este bloque:
if (isSection(item)) {
const key = String(item.name || "").trim().toLowerCase();
// 👇 MODIFICAR AQUÍ LAS SECCIONES PERMITIDAS
current = (key === "coro" || key === "conjunto") ? key : null;
continue;
}current = (
key === "coro" ||
key === "conjunto" ||
key === "especial"
) ? key : null;current = (
key === "coro" ||
key === "banda"
) ? key : null;
El nombre debe coincidir exactamente con el nombre de la sección en FreeShow.
- Títulos en MAYÚSCULAS
- Acordes respetan formato original
- Acordes en amarillo
- Encabezados azules subrayados
- Scroll infinito
- Optimizado para 1080p
git clone https://github.com/usuario/repo.git
cd repo
npm install
node server.jsnpm install -g pm2
pm2 start server.js --name freeshow-bridge
pm2 save
pm2 startup| Variable | Descripción |
|---|---|
| FREESHOW_SOCKET | URL WebSocket |
| FREESHOW_DATA_DIR | Carpeta FreeShow |
| PORT | Puerto del servidor |
- Velocidad adaptativa automática
- Parámetros configurables vía URL
- Selección manual de proyecto
- Panel web de administración
- Docker oficial
- Multi-pantalla simultánea
- API pública opcional
MIT License
Uso libre para iglesias y ministerios.
FreeShow Live Song Ticker Bridge is a middleware server that dynamically displays the active FreeShow project songs inside a Web/Browser slide item.
Designed for:
- Stage displays
- Musicians monitoring
- 1080p environments
- Technical integrations
Use:
When different things other than the praises are being projected on the audience's screen, the musicians are left without feedback on what follows in the program. With this, a new stage theme can be configured where a slide with web content is added, and that URL is what server.js provides. This allows choosing to see what comes in each section of the program, such as praises, verses, special opportunities, etc., in various available formats, in a canvas format of 1 or 2 lines, or in vertical format.
FreeShow (WebSocket 5505)
↓
Node.js Bridge (Express)
↓
HTML Slide inside FreeShow
- Connects to WebSocket
- Calls
get_projects - Detects active project
- Scans
.showfiles - Builds dynamic HTML
- Updates every 2 seconds
Inside server.js locate:
function buildSongsBySection(project)Modify this line:
current = (key === "coro" || key === "conjunto") ? key : null;Add or change section names as needed.
Example:
current = (
key === "coro" ||
key === "band"
) ? key : null;Section names must match exactly those defined in FreeShow.
/songs
/songs/ticker/coro
/songs/ticker/conjunto
/songs/ticker
/songs/ticker2
MIT License
Free for church and ministry use.


