Toute une station, du dossier de musique au flux.
Heron, ce sont cinq petits services et une base de données, lancés avec Docker Compose. Voici ce que fait chaque partie de la station aujourd’hui.
Une bibliothèque qui écoute
Indiquez à Heron votre dossier de musique. Il repère seul les fichiers nouveaux ou modifiés et analyse chaque titre avant sa diffusion.
- Sonie (EBU R128), crête vraie, silences en début et en fin, point d’enchaînement
- Tempo, et une forme d’onde avec les points de cue
- MP3, AAC et ALAC en M4A, FLAC, Ogg Vorbis, WAV et AIFF
- Partages réseau pris en charge : déplacements et renommages gardent l’historique d’un titre

Les nouveautés, classées pour vous
Envoyez des fichiers depuis le navigateur, dossiers compris, ou déposez-les dans le dossier d’arrivée. Ils attendent dans une zone tampon que vous les importiez.
- Identifiés avec AcoustID et MusicBrainz, pochettes comprises
- Doublons, fichiers illisibles ou trop courts signalés avant l’import
- Corrigez les tags et attribuez catégories, étiquettes, humeur et code son avant l’import
- Classés en Artiste/Album/01 Titre, sans jamais écraser un fichier ; chaque changement s’annule
- Les titres supprimés attendent 30 jours dans une corbeille
Deux platines, jamais de blanc
Le moteur est un processus temps réel en Rust qui n’a pas besoin de carte son. Il tient le temps à l’échantillon près, des jours durant.
- Fondus enchaînés au point analysé, ou chevauchements fixes ; plusieurs courbes de fondu
- Suppression des silences ; les jingles courts s’enchaînent sans fondu
- Normalisation de la sonie vers une cible, sans pousser les crêtes au-delà du plafond
- Les titres suivants sont chargés en mémoire : un partage réseau lent ne coupe pas l’antenne
- Un dossier de secours prend le relais quand la file est vide, et une veille de silence saute les titres muets
Des jingles par-dessus la musique
Le lecteur FX joue virgules, liners et indicatifs par-dessus les platines, sans changer ce qui passe à l’antenne.
Des grilles qui s’expliquent
Composez des horloges de créneaux par catégorie, posez-les sur la semaine et laissez la rotation choisir la musique. Chaque choix dit pourquoi.
- Des horloges de créneaux, chacun appelant une catégorie : moins récemment joué, au hasard ou pondéré
- Séparation par titre, artiste, album et piste, assouplie pas à pas quand la bibliothèque manque de titres
- Les artistes aux noms multiples et les artistes proches traités comme un seul
- Restrictions par tranche horaire, par période et par enchaînement, jamais assouplies
- Un journal pour chaque choix, et une simulation du lendemain ou de la semaine

Peignez la semaine
Choisissez une horloge et glissez sur les heures de la semaine. Les heures suivent le fuseau de la station, changements d’heure compris.

Une console dans votre navigateur
Tout se pilote depuis l’interface web : antenne, file d’attente, historique, titres, horloges, grille, sorties et réglages.
- Mises à jour en direct par WebSocket : platines, niveaux, file d’attente et sorties
- Thèmes clair et sombre, français et anglais, dès la largeur d’un téléphone
- Rôles lecteur, opérateur et administrateur

Scriptable de bout en bout
Tout ce que fait l’interface passe par une API HTTP et WebSocket documentée : vos scripts peuvent en faire autant.
- Document OpenAPI généré depuis le code
- Jetons d’API pour les scripts, avec le rôle de leur utilisateur
- Métriques Prometheus et contrôles de santé sur chaque service ; erreurs vers Sentry
Là où vous êtes
Linux sur amd64 et arm64, jusqu’au Raspberry Pi. Les images sont publiées une fois que toute la pile a passé ses tests sur les deux.
▶ Commencer