PAL, pour Playlist Automation Language, permet d’automatiser SAM Broadcaster : rotation musicale, jingles, horaires, encodeurs, métadonnées et émissions distantes. Ce guide explique comment créer, tester et organiser vos premiers scripts PAL sans bloquer la diffusion.
SAM Broadcaster sait déjà enchaîner des titres, gérer plusieurs lecteurs et envoyer un flux vers un serveur de diffusion. Les scripts PAL permettent d’aller beaucoup plus loin en définissant précisément la logique de votre radio.
Vous pouvez, par exemple, programmer un jingle toutes les cinq chansons, imposer une catégorie à une heure donnée, démarrer les encodeurs automatiquement ou modifier les informations affichées dans le flux.
PAL reste propre à SAM Broadcaster. Sa syntaxe rappelle Pascal, tandis que ses classes donnent accès aux catégories, à la file d’attente, aux lecteurs, aux encodeurs et aux informations des morceaux.
Qu’est-ce qu’un script PAL ?
PAL signifie Playlist Automation Language. Il s’agit du langage de script intégré à SAM Broadcaster Pro.
Un script PAL peut intervenir sur presque toutes les étapes de l’automatisation :
- choisir un titre dans une catégorie ;
- ajouter un morceau en haut ou en bas de la file d’attente ;
- respecter ou ignorer les règles de rotation ;
- attendre un nombre déterminé de chansons ;
- attendre une heure ou un intervalle précis ;
- lancer ou arrêter les encodeurs ;
- agir sur les lecteurs ;
- modifier les métadonnées envoyées aux auditeurs ;
- charger une playlist externe ;
- connecter une émission distante ;
- écrire des informations dans le journal de SAM.
PAL convient particulièrement aux tâches répétitives. Dès qu’une action doit suivre une règle prévisible, un script peut souvent éviter une intervention manuelle.
SAM Broadcaster Pro ou SAM Broadcaster Cloud ?
Ce guide concerne principalement SAM Broadcaster Pro, l’application Windows dans laquelle l’environnement PAL est directement intégré.
SAM Broadcaster Cloud propose sa propre logique d’automatisation avec des règles de rotation, des tâches et des blocs de programmation. Ne supposez donc pas qu’un script PAL conçu pour SAM Broadcaster Pro peut être copié tel quel dans l’offre Cloud.
Créer son premier script PAL
La création d’un script s’effectue depuis la fenêtre PAL de SAM Broadcaster.
- Dans SAM Broadcaster, ouvrez Menu → Window → PAL Scripts.
- Cliquez sur le bouton + pour ajouter un script.
- Choisissez l’emplacement du fichier portant l’extension
.pal. - Activez la création du fichier lorsqu’il n’existe pas encore.
- Validez l’ajout du script.
- Sélectionnez-le, puis ouvrez-le dans l’éditeur PAL intégré.
La fenêtre PAL permet ensuite de démarrer, suspendre ou arrêter chaque script. Elle indique également son état et peut le lancer automatiquement au démarrage de SAM.
Choisir un dossier dédié aux scripts
Évitez de disperser les fichiers PAL dans plusieurs répertoires. Créez un dossier dédié, par exemple :
C:\SAM\PAL\
Vous pourrez ensuite organiser les fichiers selon leur fonction :
C:\SAM\PAL\rotation\
C:\SAM\PAL\jingles\
C:\SAM\PAL\horaires\
C:\SAM\PAL\encodeurs\
C:\SAM\PAL\tests\
Cette organisation facilite les sauvegardes et limite les modifications accidentelles d’un script utilisé en production.
Découvrir l’éditeur PAL intégré
L’éditeur PAL intégré à SAM Broadcaster ne se limite pas à une simple zone de texte. Il permet de compiler le script, repérer les erreurs, afficher leur ligne et suivre la sortie produite par les commandes de journalisation.
Le workflow recommandé reste simple :
- modifiez le script ;
- enregistrez le fichier ;
- compilez-le ;
- corrigez toutes les erreurs signalées ;
- exécutez-le sur une copie ou une programmation de test ;
- contrôlez la file d’attente et le journal ;
- activez son démarrage automatique uniquement après validation.
L’éditeur permet également une exécution pas à pas. Cette fonction devient utile lorsqu’un script comporte plusieurs conditions ou manipule plusieurs objets.
Premier exemple : écrire dans la sortie PAL
Commencez par un script sans effet sur la diffusion. Il permet de vérifier que l’environnement fonctionne correctement.
WriteLn('Bonjour depuis mon premier script PAL');Langage du code : JavaScript (javascript)
Compilez puis exécutez le script. Le message doit apparaître dans le panneau de sortie de l’éditeur.
Sur les versions de SAM Broadcaster prenant en charge PAL.Log(), vous pouvez aussi écrire dans le journal des événements :
PAL.Log('Le script PAL a démarré', ltNotice);Langage du code : JavaScript (javascript)
Les niveaux disponibles permettent notamment de distinguer une information normale d’un avertissement. Cette journalisation facilite le diagnostic lorsqu’un script fonctionne en arrière-plan.
Comprendre la structure d’un script PAL
PAL utilise une syntaxe proche de Pascal. Les instructions se terminent généralement par un point-virgule.
Les commentaires
Documentez les réglages modifiables, les catégories utilisées et le but du script.
// Commentaire sur une ligne.
{ Commentaire
sur plusieurs lignes. }Langage du code : JavaScript (javascript)
Les variables
Les variables doivent être déclarées avant leur utilisation :
var
CategoryName : String;
TrackCount : Integer;
IsEnabled : Boolean;
CategoryName := 'Music (All)';
TrackCount := 5;
IsEnabled := True;Langage du code : JavaScript (javascript)
Choisissez des noms explicites. Un script diffusé pendant plusieurs années devient vite incompréhensible lorsqu’il contient uniquement des variables nommées a, b et x.
Les blocs begin et end
Lorsque plusieurs instructions dépendent de la même condition, regroupez-les dans un bloc :
Marre des agences qui sous-traitent ?
Avec moi, vous parlez directement au développeur qui fait le travail. Pas d'intermédiaire, pas de promesses creuses. Juste du code propre et un interlocuteur joignable.
Travaillons directement ensemble →if IsEnabled then
begin
WriteLn('Automatisation activée');
PAL.Log('Automatisation activée', ltNotice);
end;Langage du code : JavaScript (javascript)
Les commandes d’attente : la base d’un bon script PAL
Un script PAL ne doit pas vérifier une condition en permanence dans une boucle rapide. Utilisez les commandes d’attente prévues par SAM.
Les trois commandes fondamentales sont :
PAL.WaitForPlayCount(Count);
PAL.WaitForQueue(Count);
PAL.WaitForTime(Time);Langage du code : CSS (css)
Attendre plusieurs morceaux
PAL.WaitForPlayCount(5);
WriteLn('Cinq morceaux ont commencé leur lecture');Langage du code : JavaScript (javascript)
Le compteur diminue chaque fois qu’un nouveau morceau commence sur un lecteur.
Attendre un état précis de la file
PAL.WaitForQueue(2);
WriteLn('La file contient maintenant deux éléments');Langage du code : JavaScript (javascript)
Cette commande attend que la file contienne exactement le nombre demandé. Elle peut donc rester bloquée si un autre script maintient constamment davantage de titres dans la queue.
Attendre un intervalle
PAL.WaitForTime('+00:00:10');
WriteLn('Dix secondes se sont écoulées');Langage du code : JavaScript (javascript)
Le signe + indique un délai relatif.
Attendre une heure donnée
PAL.WaitForTime('14:30:00');
WriteLn('Il est 14 h 30');Langage du code : JavaScript (javascript)
Vous pouvez utiliser des masques horaires :
PAL.WaitForTime('XX:00:00');
WriteLn('Début de la prochaine heure');Langage du code : JavaScript (javascript)
XX représente ici la prochaine heure correspondante.
Attention aux horaires déjà dépassés
Une attente portant sur une heure fixe du jour peut être immédiatement considérée comme satisfaite lorsque cette heure est déjà passée.
Par exemple, si le script démarre à 17 heures :
PAL.WaitForTime('10:00:00');
WriteLn('Action de 10 heures');Langage du code : JavaScript (javascript)
l’action peut être exécutée immédiatement, puisque 10 heures est antérieur à l’heure actuelle.
Pour une programmation quotidienne plus robuste, prévoyez explicitement le prochain jour lorsque l’horaire est dépassé :
var
NextRun : DateTime;
NextRun := T['10:00:00'];
if NextRun <= Now then
NextRun := NextRun + 1;
PAL.WaitForTime(NextRun);
WriteLn('Exécution quotidienne à 10 heures');Langage du code : JavaScript (javascript)
L’ajout de 1 à une valeur DateTime correspond au jour suivant.
Créer une boucle PAL sans monopoliser le processeur
De nombreuses automatisations doivent se répéter. PAL permet de relancer automatiquement le script avec :
PAL.Loop := True;Langage du code : PHP (php)
Placez ensuite une véritable commande d’attente dans le script :
PAL.Loop := True;
PAL.WaitForPlayCount(5);
WriteLn('Action exécutée après cinq morceaux');Langage du code : PHP (php)
À la fin du fichier, SAM relance le script. Celui-ci attend à nouveau cinq morceaux.
Évitez en revanche les boucles sans pause :
// À éviter : boucle active sans attente.
while True do
begin
WriteLn('Cette boucle ne laisse jamais le script respirer');
end;Langage du code : PHP (php)
Une telle boucle peut gaspiller du processeur, saturer la sortie et rendre SAM moins réactif.
Ajouter un titre aléatoire à la file d’attente
La classe Cat permet d’accéder aux catégories de la bibliothèque musicale.
Cat['Music (All)'].QueueBottom(smRandom, EnforceRules);Langage du code : CSS (css)
Cette ligne choisit aléatoirement un titre dans la catégorie Music (All), applique les règles de rotation, puis l’ajoute en bas de la file.
Pour le placer en tête :
Cat['Jingles'].QueueTop(smRandom, EnforceRules);Langage du code : CSS (css)
Le nom de la catégorie doit correspondre exactement à celui utilisé dans SAM Broadcaster.
Respecter ou ignorer les règles de rotation
EnforceRules demande à SAM de respecter les règles configurées pour la rotation. Selon la commande utilisée, NoRules permet de les ignorer.
N’utilisez NoRules que lorsque la répétition éventuelle du morceau ne pose aucun problème, par exemple pour un signal technique très précis.
Exemple : ajouter un jingle toutes les cinq chansons
PAL.Loop := True;
// Attendre cinq nouveaux morceaux.
PAL.WaitForPlayCount(5);
// Ajouter un jingle en tête de la file.
Cat['Jingles'].QueueTop(smRandom, EnforceRules);
PAL.Log('Un jingle a été ajouté à la file', ltNotice);Langage du code : PHP (php)
Ce script constitue une base simple. Une radio plus complexe devra également tenir compte des autres scripts qui alimentent la file et des éléments déjà programmés.
Le tutoriel SAM Broadcaster : jouer une pub ou un jingle toutes les cinq chansons détaille ce cas d’usage.
Exemple : jouer une promotion toutes les trente minutes
PAL.Loop := True;
// Attendre trente minutes.
PAL.WaitForTime('+00:30:00');
// Ajouter une promotion en tête de la file.
Cat['Promos (All)'].QueueTop(smRandom, EnforceRules);
PAL.Log('Promotion programmée', ltNotice);Langage du code : PHP (php)
Un intervalle relatif de trente minutes signifie que le délai repart après chaque exécution. Il ne garantit pas une diffusion exactement à la minute 00 ou 30 de chaque heure.
Pour viser la demi-heure suivante, utilisez plutôt un masque horaire adapté :
PAL.Loop := True;
PAL.WaitForTime('XX:30:00');
Cat['Promos (All)'].QueueTop(smRandom, EnforceRules);Langage du code : PHP (php)
Exemple : démarrer automatiquement les encodeurs
PAL peut parcourir les encodeurs configurés dans SAM et démarrer ceux qui sont arrêtés.
var
I : Integer;
// Laisser SAM et sa base terminer leur démarrage.
PAL.WaitForTime('+00:00:10');
for I := 0 to Encoders.Count - 1 do
begin
if not Encoders[I].Started then
begin
Encoders[I].Start;
PAL.Log(
'Encodeur démarré : ' + IntToStr(I),
ltNotice
);
end;
end;Langage du code : JavaScript (javascript)
Le délai initial évite de solliciter les encodeurs avant que SAM, la base de données et la connexion réseau soient prêts.
Ce script doit être exécuté une seule fois au démarrage. N’activez pas PAL.Loop sans nécessité.
Exemple : démarrer les encodeurs et lancer un morceau
var
I : Integer;
CategoryName : String;
Player : TPlayer;
Song : TSongInfo;
CategoryName := 'Music (All)';
// Attendre que SAM soit complètement disponible.
PAL.WaitForTime('+00:00:10');
// Démarrer les encodeurs arrêtés.
for I := 0 to Encoders.Count - 1 do
begin
if not Encoders[I].Started then
Encoders[I].Start;
end;
// Choisir un titre.
Song := Cat[CategoryName].ChooseSong(
smRandom,
EnforceRules
);
// Utiliser le lecteur disponible.
Player := IdlePlayer;
Player.QueueSong(Song);
Player.Play;
PAL.Log(
'Lecture démarrée : ' +
Song['artist'] + ' - ' +
Song['title'],
ltNotice
);
// Libérer les objets.
Player.Free;
Song.Free;Langage du code : JavaScript (javascript)
Testez ce script lorsque SAM est arrêté ou inactif. Il n’est pas conçu pour prendre le contrôle d’une diffusion déjà en cours.
Créer une rotation musicale variée
Une rotation cohérente ne consiste pas à sélectionner continuellement un titre au hasard dans toute la bibliothèque. Elle doit répartir les catégories et éviter les répétitions trop rapprochées.
Une logique simple peut alterner plusieurs catégories :
PAL.Loop := True;
Cat['Hits'].QueueBottom(smRandom, EnforceRules);
Cat['Gold'].QueueBottom(smRandom, EnforceRules);
Cat['Découvertes'].QueueBottom(smRandom, EnforceRules);
Cat['Gold'].QueueBottom(smRandom, EnforceRules);
PAL.WaitForQueue(2);Langage du code : PHP (php)
Le script recharge la file lorsqu’elle revient à deux éléments. Vérifiez toutefois qu’aucun autre script n’attend le même seuil ou ne maintient la queue à une autre longueur.
Consultez également le guide Script PAL pour SAM Broadcaster : créer une playlist variée par rotation automatique.
Programmer un style musical sur un créneau horaire
PAL peut modifier la rotation selon l’heure. Vous pouvez ainsi réserver une catégorie à une tranche nocturne, une émission spécialisée ou un rendez-vous hebdomadaire.
La logique générale consiste à :
- attendre le début du créneau ;
- vider ou compléter prudemment la file ;
- ajouter des morceaux de la catégorie souhaitée ;
- attendre la fin du créneau ;
- restaurer la rotation normale.
Le tutoriel Script PAL pour SAM Broadcaster : jouer un style de musique pendant un créneau horaire fournit un exemple spécialisé.
Programmer un signal horaire
Un signal horaire doit être placé suffisamment tôt dans la file pour approcher l’heure cible. La durée du morceau déjà en cours peut empêcher une synchronisation à la seconde près.
PAL.Loop := True;
PAL.WaitForTime('XX:00:00');
Cat['Time Signal'].QueueTop(smRandom, NoRules);Langage du code : PHP (php)
Ce script ajoute le signal lorsque l’heure est déjà atteinte. Il ne peut donc pas interrompre proprement un titre en cours pour garantir une précision absolue.
Pour une programmation plus précise, tenez compte de la durée des éléments présents dans la file et utilisez les fonctions prévues pour les événements fixes.
Le guide SAM Broadcaster : jouer un bip horaire avec un script PAL traite ce cas en détail.
Modifier les informations affichées dans le flux
Les métadonnées envoyées au serveur de streaming permettent d’afficher le titre, l’artiste ou un message personnalisé dans le lecteur des auditeurs.
Cette fonction peut servir à :
- annoncer le nom d’une émission ;
- faire défiler une information ;
- masquer temporairement le titre réel ;
- afficher une URL ou un message de la station ;
- adapter les données pendant une émission distante.
Consultez le tutoriel Script PAL pour SAM Broadcaster : changer ou faire défiler les informations du flux audio.
Importer une playlist externe
SAM Broadcaster inclut traditionnellement un exemple PAL capable de charger une playlist M3U dont le nom dépend de la date.
var
FileName : String;
FileName := FormatDateTime('yymmdd', Now) + '.m3u';
WriteLn('Chargement de : ' + FileName);
Queue.Clear;
Queue.AddList(
'C:\Playlists\' + FileName,
ipBottom
);
PAL.Loop := True;
PAL.WaitForTime('23:59:59');Langage du code : PHP (php)
Ce script suppose qu’un fichier correspondant à chaque date existe dans le dossier indiqué.
Queue.Clear efface toute la file. Utilisez cette commande avec prudence, surtout lorsque d’autres scripts ou animateurs ajoutent déjà des contenus.
Travailler avec des fichiers situés sur un autre disque
SAM Broadcaster peut utiliser des fichiers placés sur un autre disque local. Il suffit d’indiquer leur chemin complet lorsque la commande PAL attend un fichier ou une playlist.
Queue.AddList(
'D:\Radio\Playlists\programme.m3u',
ipBottom
);Langage du code : JavaScript (javascript)
Pour un chemin réseau, utilisez un emplacement accessible au compte Windows qui exécute SAM. Un lecteur réseau visible dans votre session interactive peut ne pas être disponible après un démarrage automatique.
Préférez alors un chemin UNC :
\\serveur-audio\radio\playlists\programme.m3uLangage du code : CSS (css)
Vérifiez les droits de lecture, la disponibilité du partage et le comportement du script lorsque le serveur distant ne répond pas.
Éviter les conflits entre plusieurs scripts PAL
Plusieurs scripts peuvent fonctionner simultanément, mais ils partagent les mêmes lecteurs, encodeurs et files d’attente.
Les conflits les plus fréquents apparaissent lorsque :
- deux scripts remplissent la queue au même moment ;
- un script vide la file préparée par un autre ;
- plusieurs scripts utilisent le même seuil avec
WaitForQueue(); - deux scripts imposent des catégories différentes ;
- un script démarre un encodeur que l’animateur souhaite garder arrêté ;
- plusieurs scripts modifient les mêmes métadonnées ;
- un événement horaire entre en concurrence avec une émission distante.
Attribuez une responsabilité claire à chaque fichier. Un script doit, autant que possible, gérer une seule fonction.
Rendre ses scripts PAL plus fiables
Centraliser les réglages
Placez les noms de catégories et les intervalles au début du fichier :
var
JingleCategory : String;
SongsBetween : Integer;
JingleCategory := 'Jingles';
SongsBetween := 5;Langage du code : JavaScript (javascript)
Vous éviterez ainsi de modifier la même valeur à plusieurs endroits.
Journaliser les actions importantes
PAL.Log(
'Ajout d’un élément depuis la catégorie Jingles',
ltNotice
);Langage du code : JavaScript (javascript)
Un script silencieux paraît souvent fiable jusqu’au jour où il cesse de fonctionner à trois heures du matin.
Ne pas ignorer toutes les règles
Les règles de rotation évitent notamment les répétitions rapprochées d’un artiste, d’un album ou d’un morceau. Utilisez EnforceRules par défaut.
Prévoir les catégories vides
Une catégorie vide ou renommée peut interrompre la logique du script. Contrôlez régulièrement les catégories utilisées et ne modifiez pas leur nom sans mettre à jour les fichiers PAL associés.
Tester les redémarrages
Un script peut fonctionner parfaitement lorsqu’il démarre le matin, puis exécuter immédiatement plusieurs actions lorsqu’il est relancé l’après-midi. Testez donc différents horaires de démarrage.
Sauvegarder les scripts séparément
Conservez une copie versionnée des fichiers PAL. Git convient très bien, même si SAM Broadcaster lui-même n’utilise pas ce système.
N’enregistrez pas dans le dépôt public des mots de passe, URL privées ou informations d’accès aux serveurs de diffusion.
Déboguer un script PAL
Lorsqu’un script ne produit pas le résultat attendu, commencez par distinguer une erreur de compilation d’une erreur logique.
Erreur de compilation
L’éditeur indique généralement la ligne, la colonne et la nature du problème. Vérifiez en priorité :
- les points-virgules manquants ;
- les parenthèses non refermées ;
- les blocs
beginsansend; - les guillemets absents ;
- les variables non déclarées ;
- les noms de fonctions incorrects.
Erreur logique
Le script compile, mais son comportement reste incorrect. Ajoutez alors des messages avant et après chaque étape :
WriteLn('Avant l’attente');
PAL.WaitForPlayCount(5);
WriteLn('Après l’attente');
PAL.Log(
'La commande WaitForPlayCount est terminée',
ltNotice
);Langage du code : JavaScript (javascript)
Cette méthode permet de repérer l’instruction sur laquelle le script reste bloqué.
Le script reste en attente
Une commande d’attente peut fonctionner exactement comme prévu tout en donnant l’impression d’un blocage.
WaitForPlayCount()attend de nouveaux démarrages de morceaux.WaitForQueue()attend une taille exacte de la file.WaitForTime()attend l’heure ou la date calculée.
Affichez la condition attendue dans le journal et observez la file d’attente avant de conclure à une panne.
Checklist avant d’activer un script sur la radio
- Le fichier possède l’extension
.pal. - Le script compile sans erreur.
- Les catégories existent et portent exactement le bon nom.
- Les chemins vers les fichiers sont accessibles.
- Chaque boucle contient une attente ou une condition de sortie.
- Les horaires déjà dépassés sont correctement gérés.
- Le script ne vide pas inutilement la file.
- Les règles de rotation sont respectées lorsque nécessaire.
- Les actions importantes sont journalisées.
- Les autres scripts actifs ne manipulent pas les mêmes éléments.
- Le fonctionnement après redémarrage a été testé.
- Une copie du fichier précédent est disponible.
Aller plus loin avec SAM Broadcaster et Icecast
Les scripts PAL pilotent la programmation dans SAM Broadcaster. Ces guides permettent d’approfondir chaque automatisation et de compléter la chaîne de diffusion.
- Jouer une publicité ou un jingle toutes les cinq chansons
- Créer une playlist variée par rotation automatique
- Jouer un bip horaire avec un script PAL
- Jouer un style musical pendant un créneau horaire
- Changer ou faire défiler les informations du flux audio
- Créer une webradio avec SAM Broadcaster et Icecast
- Scrobbler les titres d’un flux Icecast sur Last.fm
- Servir un flux Icecast en HTTPS avec Cloudflare et Nginx
Questions fréquentes
Que signifie PAL dans SAM Broadcaster ?
PAL signifie Playlist Automation Language. Ce langage intégré à SAM Broadcaster permet d’automatiser les playlists, catégories, horaires, encodeurs, lecteurs et métadonnées.
Où créer un script PAL ?
Ouvrez Menu → Window → PAL Scripts, puis cliquez sur le bouton d’ajout. Choisissez ou créez un fichier portant l’extension .pal, puis ouvrez-le dans l’éditeur intégré.
Comment lancer automatiquement un script PAL ?
Ouvrez la configuration du script dans la fenêtre PAL, puis activez l’option de démarrage automatique. Testez d’abord son comportement lorsque SAM est lancé à différents moments de la journée.
Comment jouer un jingle toutes les cinq chansons ?
Utilisez PAL.WaitForPlayCount(5), puis ajoutez un titre de la catégorie des jingles avec QueueTop() ou QueueBottom(). Activez ensuite PAL.Loop pour répéter l’opération.
Pourquoi mon script PAL reste-t-il bloqué ?
Il attend probablement une condition qui n’est jamais atteinte. Vérifiez notamment la valeur passée à WaitForQueue(), les horaires, les noms des catégories et les actions des autres scripts.
Peut-on utiliser plusieurs scripts PAL en même temps ?
Oui, mais ils partagent les lecteurs, la file, les catégories et les encodeurs. Évitez que plusieurs scripts manipulent simultanément la même ressource sans coordination.
PAL fonctionne-t-il avec SAM Broadcaster Cloud ?
Les scripts présentés ici ciblent SAM Broadcaster Pro. SAM Broadcaster Cloud possède ses propres outils de rotation, tâches et programmation. Les deux environnements ne doivent pas être confondus.
Conclusion
PAL transforme SAM Broadcaster en véritable moteur d’automatisation radiophonique. Une courte instruction peut ajouter un jingle, attendre un horaire, charger une playlist ou démarrer les encodeurs.
Commencez par un script simple. Compilez-le, journalisez ses actions et observez son effet sur la file. Ajoutez ensuite les conditions, horaires et rotations progressivement.
La principale difficulté ne vient pas de la syntaxe. Elle vient des interactions entre les scripts, les règles de rotation et la programmation existante.
Un bon script PAL doit donc faire trois choses : attendre intelligemment, agir précisément et laisser suffisamment de traces pour expliquer ce qu’il a fait.
Sources et documentation
- Spacial : documentation des scripts PAL
- Spacial : environnement de développement PAL
- Spacial : guide de démarrage rapide PAL
- Spacial : premier script PAL
- Spacial : démarrer automatiquement SAM Broadcaster avec PAL
- Spacial : commandes PAL ajoutées aux versions récentes
- Spacial : SAM Broadcaster Pro
Besoin d'un coup de main ?
Ce bug qui traîne depuis des semaines, ce plugin qui casse votre mise en page, cette fonctionnalité que personne n'arrive à implémenter proprement — c'est exactement ce que je règle au quotidien depuis 20 ans.
Parlons de votre problème →


bonjour et merci pour ce code bien pratique .
Pouvez vous m expliquer comment faire si les musiques sont stockées sur un autre disc dur sur le pc que là ou est installé Sam Broadcast svp ?
merci d avance
salut matt ,merci pour le script ,helas ce dernier ne marchait plus avec moi ,il m’indique compilé et nul erreur n’est généré et apparait en fonctionnement mais se ne sont pas les fraguements audio que j’ai choisis qui sont joués seul celles stockeé dans history ,merci pr votre reponse ,aurevoir
@ skudfm : il faut importer les chansons dans la catégorie Tracks : dans la fenêtre Playlist, aller dans le dossier Tracks et appuyer sur la flèche du + vert. Il faut ensuite sélectionner les morceaux ou le répertoire à importer.
@ youssef : il se peut que le fichier soit corrompu. Il suffit alors de le recréer et de ré-enregistrer. Bien veiller également à ce que la catégorie Tracks soit bien à jour de ce que vous voulez jouer.
salut matt ,merci d’avoir repondu mais le probleme persiste ,j’ai enregistré les deux scripts dans 2 fichiers separés .pal ,leur etat ds la fenetre pal script m’indique « waiting for 4 trucks to play »
l’autre de meme « waiting for 1 trucks to play »
voila les changements que j’ai porté au 1er script
et j’ai ajouter mes fichiers audio ds trucks et ds Station IDs (All)comme indiqué merci pr vos explications,et si possible y’a t il une maniere de diffuser des reportages depuis l’exterieure c.a.d moi et un autre pr plus de professionalisme aucune indication sera la bien venu ,merci encore.
salut matt,
stp je demande de bref reponses a ces questions:
1-lister sa radio dans audiorealm est il payant ou bien gratuit.
2-dans la partie station details dans je n’arrive pas a completer l’info sur AIM et ICQ # ,ou pui’je les retrouver.
merci d’avance coordialement
Salut youssef,
Pour vérifier que le script PAL fonctionne bien :
1. crée un nouveau script PAL vierge et copie le script dedans.
2. compile-le et enregistre-le.
3. importe tes fichiers dans la catégorie Tracks.
4. lance le menu Tools > Maintenance > Verify songs pour vérifier que toutes les chansons sont accessibles. Cela devrait fonctionner sans problèmes.
Pour diffuser des reportages depuis l’extérieur – il faut enregistrer le reportage puis le diffuser à l’antenne. On ne peut pas véritablement faire du 100% direct.
Je n’ai pas listé ma radio dans Audiorealm parce que le principe me semble un peu obscur : la documentation est assez floue et on ne sait pas bien s’il y aura quelque chose à payer au bout du compte. Autant dire que cela ne vaut pas vraiment le coup, d’autant plus qu’Audiorealm recense principalement des radios US.
Pour rentrer tes coordonnées, il suffit de remplir les informations dans File > Configuration > Station details.
Bonjour,
Je recherchais des infos sur Sam The B.
J’en ai déjà trouver ici.
Quelqu’un a-t-il déjà mis plusieurs programmes radios différents avec Sam qui doivent tourner sur le même PC et envoyer en streaming ?
Merci par avance de vos réponses d’experts.
Salut Luc,
Essaie ce tutoriel : Script PAL pour SAM Broadcaster : jouer un style de musique donné pendant un créneau horaire.
bonjour,
J’ai un petit problème, mon script fonctionne qu’a moitier.
De temps en temps il n’ajoute que des musiques et pas de jingles, apres il s’arrete tout seul (par dans l’execution) mais il n’ajoute aucune musique dans la Queue :S
Je vais essayer de faire ce que tu as dis, mais c’est très bizzar :S
Si non chapeau, car tu es un des rares sites qui parle de SAM ;)
merci ;)
Salut vtnet,
Essaie de recréer ton script PAL et de l’enregistrer sous un autre nom, il arrive qu’il se corrompe avec l’usage.
Merci pour le compliment :)
Bonjour, pouvez récapitulez l’utilité de ce script ? et est-il possible de creer des listes de diffusion aléatoire ? du style: jingle, musique, jingle ???
Merci d’avance de votre aide.
bonjour,
effectivement grace a un tel script vous pouvez mettre une musique un jingle une musique …
pour la liste de diffusion aleatoire, pour mois cela se fait automatiquement avec le script qui met musique/jingle/musique
bye
Je voudrais savoir comment on fais pour enregistrer la chanson si on l’accélaire car moi sa marche pas.Meme si je l’enregistre, la chanson reste normale. J’ai besoin d’aide.Merci d’avance.
Salut,
Quel est le rapport avec SAM ?
Bonjour,
Quelqu’un pourrai-t-il me dire comment je peux sortir un listing des chansons jouées par le SAM ( la playlist des chansons jouées quoi)
Merci d’avance
Wallace
Bonjour, Serait il possible de nous proposer plus de fichier pal ?
Amicalement
Salut Ludovic,
J’ai écrits ces scripts PAL pour mes propres besoins, je n’ai pas vraiment d’autres idées de script. Ceux-là me permettent d’automatiser les playlists et jingles.
Merci de ta réponse. Moi j’avais pensé a un script de decrochage, exemple, une emission de un des DJ de Toulouse commence et grace au script pal il c’est a quel heure le faire et si pas de son de l’autre coté au bout d’un moment de reprendre la playlist du SB.
Un autre du style de celui ci que tu as proposé pour le titrage dans le player, un message a chaque changement d’emission exemple faire apparaitre 10 Minutes avant que prochainement Rave partie commence a la fin de celle ci le prochain programme.
Sur le site de SB moi l’anglais pas trop pour moi.
Bonjour,
Je gère la radioweb du RIAQ ( http://www.riaq.ca) et certaines émissions doivent partir à heure fixe. J’utilisais le «Event Scheduler» de Sam 4, mais ce n’est pas fiable! J’ai trouvé la programmation suivante que j’ai adaptée. Je clique sur RUN dans «PAL script» et ça débute à l’heure tel que prévu. Seul problème: il arrive que l’émission passe 2 fois de suite! Quelqu’un peut aider ?
René
Salut René,
Je me suis rendu compte que cela ajoutait l’émission deux fois dans la playlist. Je jetterai un coup d’oeil au code à mon retour de vacances.
Bonjour,
je travaille au lancement de la webradio de mon école, on utilise sam et music 1 mais je ne comprends rien quand on me parle de script.
Comment dois-je faire pour exporter de music 1 jusqu’à Sam ?
Merci
Salut Geoffrey : je ne connais pas du tout music1, désolé.
salut Matt,
je reviens à nouveau pour te demander quelque chose au risque que le sujet existe déjà mais j’ai pas trouvé (désolé si c’est le cas) je suis confronté a un problème d’affichage de jaquette sur la page playlist de mon site.En effet après avoir interoger mon hébergeur shoutcast, il m’a précisé qu’il me suffisait d’englober tout ça dans le tag iD3 de mes mp3 et lors de mes diffusions la jaquette apparaitrait ok , dans mon SAM j’ai fait le test en prenant un titre je suis allé dans info song et je lui ai attribué via amazone la jaquette ça pas de prob puis j’ai actualisé le tag et ensuite j’ai envoyé ce titre en direct.Mais là vérification faite la jaquette n’apparait pas sur ma page playlist! Que faire ?? Dois-je activer quelque chose sur le soft mais ou ? Dans l’encoder ? Je ne sais pas j’ai cru lire quelque part une histoire de script pour ça ce qui m’étonne …qu’en penses-tu ?
ps: tous mes mp3 sont taggés avec les jaquettes stockées sur mon HD , elles apparaissent bien sur lors de la lecture dans la fenêtre de SAM
Amicalement,
j-yves
Salut jyes,
Je ne me suis pas encore penché sur l’affichage des pochettes sur un site. A l’époque, cela avait l’air bien compliqué quand on n’utilisait pas le site livré avec SAM.
Il y a une option qui concerne les pochettes dans SAM > General > Local Picture directory. Je l’ai utilisé une fois : à chaque chanson jouée, SAM récupérait la pochette chez Amazon, remplissant le disque d’images qui ne me serviront jamais. Du coup, j’ai abandonné cette option.
J’écrirai un article si jamais je trouve une alternative qui ne demande pas trop de ressources.
salut matt,
peux-tu me dire comment faire pour que ma playlist jouée en mode « auto dj » (elle comporte environ 2000 titres) ne s’arrêtes pas ! car au bout d’un certain moment je me retrouve en mode queue !! Et à la fin elle s’arrête…
merci,
jyes
Salut jyes,
J’ai été confronté à ce problème hier soir, à ma grande surprise ! J’ai édité les options de SAM > Config > Playlist rotation rules > Clockwheel logic module et j’ai ajouté un ReScan du répertoire où se trouvent mes chansons.
Je n’ai plus qu’à attendre et voir si cela fonctionne.
Autre solution manuelle : relancer le script PAL de playlist et se remettre en mode auto-DJ.
Bonjour Matt,
Y’orait-il un script par chez toi qui permettrait de rescaner un répertoire donné et de d’ajouter les morceaux qui ne sont pas présent d’une catégorie donnée et de les rajouté dans celle ci ?
Merki!
Salut Etann86,
Pour scanner automatiquement un répertoire ainsi que tous ses répertoires et ajouter le contenu à SAM, tu peux utiliser cette commande dans un script PAL :
Re salut,
Ce bout de script scan et ajoute à la file d’attente!
Mais puis-je scannet ajouter les nouveau fichier dans une catégorie défini?
Par exemple si je rajoute un nouveau répertoire dans ma catégorie « SmoothJazzé, comment lui dire d’ajouter ce qu’il a scnné dans ma catégorie smoothjazz?
Salut Etann86,
Au temps pour moi, voici comment ajouter un répertoire à une catégorie :
Rebonjour Matt,
J’ai vu dans la doc de pal qu’on pouvait via un script, modifier le volume de chaque des deck avec une propriété volume.
Sais-tu comment ça se programme ?
decka.volume = 255;
DeckB.volume = 100;
A cose de mon handicap visuel, je ne peux pas modifié le volume à la main et cette méthode m’arrangerai.
Merci à toi
Salut Etann86,
Je ne sais pas comment on peut modifier le volume avec un script PAL. Je touche rarement au volume (qui est réglé à la moitié), je laisse aux auditeurs le soin de régler le son comme ils veulent.
Salut Matt,
Encore une p’tite question !!!
Le big boss de Sam :)
Voilà, tout fonctionne à peu près correctement sauf qu’au bout de 2 ou 3 jours, la lecture s’arrête!
Y’at-il un moyen de détecter l’arrêt du deck et de le remettre en play s’il est arrêté, plus de X Secondes ?
Merci !
Salut Etann86,
Regarde dans SAM > Config > Playlist rotation rules. Il ne faut pas que tes règles soient trop restrictives. Baisse les valeurs.
Bonjour Matt,
j’ai vu que tu as laissé un commentaire, ou tu aborde le sujet, concernant le rescan d’un dossier.
Je souhaiterais savoir si il serait possible que SAM, scan le dossier dans lequel il pioche les fichiers pour qu’il soit maintenu à jour.
De cette façon, je n’aurais qu’a ajouter mes fichiers et il en tiendra compte pour sa programmation, sans avoir besoin à chaque fois de supprimer le répertoire et d’y ajouter le dossier.
Imaginons un dossier « Dance » par quel commande devrais-je appeler le scan automatique avant d’en extraire les fichiers?
Merci d’avance pour la réponse, si cela est possible bien évidement.
Bonne journée ;)
Bonjour Matt,
Je pense que tu es passé a côté de ma question, celle-ci à été posté pendant la période ou le nom de domaine étais indisponible, à moins que tu n’ai peut-être pas de réponse à ma question.
Je me permet de la reposer ^^ :
Penses-tu qu’il serait possible que le script scan automatiquement un répertoire avant qu’il ajoute les titres dans la « Queue » ?
De cette manière, je n’aurais qu’a ajouter régulièrement mes fichiers dans les répertoires respectif et il seront automatiquement pris en compte sans avoir a les ajouter au fur et a mesure dans la base de SAM.
Merci pour la réponses ou au moins de sa lecture ! lol
A ++ ;)
Salut Ulrich,
Essaie ceci :
1- crée un script PAL
2- mets-cette ligne de code :
3- sauvegarde le script PAL et lance-le.
Cela scanne un répertoire ainsi que tous ses sous-répertoires et les ajoute à la playlist normalement. Pour ajouter les fichiers trouvés à la suite de ta liste de lecture, rajoute cette ligne :
C’est à tester (je lance SAM sous linux avec Wine et il a un peu de mal avec les chemins des lecteurs), sous Windows cela devrait fonctionner.
Bonjour,voila j’utilise sam depuis maintenant un an ,et je vous remerci de tous vos bon conseil afin de bien l’utiliser !
Une petite question me trotte depusi le début de mon utilisation et j’espére vraimenent que vous allez pouvoir m’aider!
J’utilise sam pour creez mes playlist que je diffuse ensuite avec un autre procédé ! y a t’il moyen d’enregistré les playlists enchainé ?
Il y a bien la fonction » enregisté » mais il me sépare les titres à chaque fois !!
Merci de votre aide !!
Salut SAM,
J’utilise SAM Broadcaster pour une diffusion 24h/24. Je souhaiterai insérer des jingles entre les chansons. C’est la raison pour laquelle j’ai copié le script Pal que tu as proposé.
Ce dernier répond à mes besoins, mais le seul soucis c’est que le jingle se déclenche en coupant la chanson suivante.
En schématisant la situation :
Lorsque la chanson n°1 se termine, la chanson n°2 vient à son tour.Mais au moment où la chanson n°2 commence, le jingle se déclenche et coupe cette dernière. Et au lieu de reprendre la chanson n°2, qu’il a coupé auparavant, ça passe directement sur la chanson n°3.
J’espère que tu aurais une solution à m’apporté. Merci