Script PAL pour SAM Broadcaster : créer une playlist variée par rotation automatique

SAM Broadcaster peut créer une playlist automatique sans que vous passiez votre journée devant la queue. Encore faut-il lui donner des règles claires.

Le principe est simple : vous rangez vos morceaux dans des catégories, vous configurez les règles de rotation, puis vous utilisez un script PAL pour alimenter automatiquement la file d’attente. Résultat : une programmation plus variée, moins de répétitions, et une radio qui ne donne pas l’impression de tourner sur trois MP3 fatigués.

Kinsta: Premium Managed WordPress hosting

Le problème : une playlist automatique trop répétitive

Quand SAM Broadcaster pioche simplement des morceaux au hasard, la programmation peut vite devenir bizarre. Le même artiste revient trop souvent. Deux morceaux du même album s’enchaînent. Un jingle repasse trois fois dans l’heure. Bref, l’algorithme fait de son mieux, mais il a besoin d’un programmateur adulte dans la pièce.

Pour éviter cela, SAM Broadcaster propose deux briques importantes :

  • les catégories, qui organisent votre bibliothèque musicale ;
  • les règles de rotation, qui limitent les répétitions d’artistes, d’albums, de titres et de morceaux.

Le script PAL vient ensuite orchestrer tout cela en ajoutant automatiquement les bons éléments dans la queue.

Préparer les catégories dans SAM Broadcaster

Avant d’écrire le moindre script, commencez par ranger votre bibliothèque. Dans SAM Broadcaster, ouvrez la fenêtre Playlist, puis créez des catégories cohérentes.

Exemple simple :

  • Tracks pour le fonds musical principal ;
  • Rock pour les titres rock ;
  • Blues pour les titres blues ;
  • Station IDs (All) pour les identifiants antenne ;
  • Jingles pour les jingles courts ;
  • Promos pour les annonces ou autopromos.

Le nom exact des catégories compte. Si le script appelle CAT['Rock'], SAM doit réellement trouver une catégorie nommée Rock. Une majuscule oubliée, un espace en trop, et le script partira cueillir des fraises.

Ajoutez ensuite vos fichiers dans les bonnes catégories depuis la fenêtre Playlist. Vous pouvez importer les morceaux depuis l’explorateur Windows, depuis la queue, ou depuis d’autres catégories existantes.

Distingo, le livret à 2%

Configurer les règles de rotation

Ouvrez ensuite :

Config > Playlist rotation rules

Règles de rotation de playlist dans SAM Broadcaster

Dans cette fenêtre, configurez les règles anti-répétition. SAM Broadcaster peut éviter de rejouer trop vite :

  • le même album ;
  • le même artiste ;
  • le même titre ;
  • le même morceau exact.

Pour une petite webradio, vous pouvez commencer avec des valeurs raisonnables, puis ajuster selon la taille de votre bibliothèque.

RègleValeur de départ possiblePourquoi
Même artiste60 à 120 minutesÉvite d’entendre le même artiste trop souvent.
Même album60 à 180 minutesÉvite l’effet “album joué en bloc”.
Même titre180 à 360 minutesÉvite les titres identiques ou reprises trop rapprochées.
Même morceau360 minutes ou plusÉvite la répétition exacte d’un fichier.

Ces valeurs ne sont pas universelles. Si votre bibliothèque contient 150 titres, n’imposez pas des règles prévues pour 30 000 morceaux. SAM ne pourra pas toujours trouver un titre compatible.

Spacial rappelle justement que les règles doivent correspondre à la taille réelle de votre bibliothèque. Si vous définissez des séparations trop longues avec trop peu de titres, SAM Broadcaster risque de ne plus trouver de morceau valide.

Comprendre les méthodes de sélection

Dans un script PAL, chaque appel à une catégorie peut utiliser une méthode de sélection. Les plus utiles ici sont :

MéthodeRôleUsage recommandé
smRandomChoisit un élément au hasard.Jingles, Station IDs, petites catégories.
smLRPChoisit l’élément le moins récemment joué.Catégories musicales équilibrées.
smLemmingLogicUtilise la logique interne de rotation de SAM.Catégorie musicale principale.

La méthode smLRP, pour Least Recently Played, est très pratique pour éviter de rejouer toujours les mêmes fichiers. Spacial indique que smRandom sélectionne un titre aléatoire, tandis que smLRP choisit le titre qui n’a pas été joué depuis le plus longtemps.

EnforceRules ou NoRules ?

Chaque ajout dans la queue peut respecter ou ignorer les règles de rotation.

OptionEffetQuand l’utiliser
EnforceRulesRespecte les règles anti-répétition.Pour les morceaux musicaux.
NoRulesIgnore les règles anti-répétition.Pour les jingles, IDs, promos courtes.

En général, utilisez EnforceRules pour la musique. Cela évite de rejouer trop vite le même artiste, le même album ou le même titre.

Pour les jingles et les identifiants antenne, NoRules peut être nécessaire, surtout si la catégorie contient peu de fichiers. Spacial précise que, lorsqu’une catégorie contient peu d’éléments, désactiver les règles de séparation peut éviter que SAM refuse de sélectionner un Station ID.

Cependant, n’abusez pas de NoRules. Un jingle répété toutes les cinq minutes lasse vite les auditeurs. Pour les contenus courts, combinez plutôt NoRules avec smLRP afin de faire tourner les fichiers disponibles proprement.

Script PAL simple pour créer une playlist variée

Voici une version modernisée du script original. Elle ajoute plusieurs catégories dans la queue, puis attend que la file redescende sous trois éléments avant de recommencer.

{ PAL script : playlist variée par rotation automatique }
{ Source : SkyMinds.net }

PAL.Loop := True;

while True do
begin
    { Musique principale }
    CAT['Tracks'].QueueBottom(smLemmingLogic, EnforceRules);

    { Variantes musicales }
    CAT['Rock'].QueueBottom(smLRP, EnforceRules);
    CAT['Blues'].QueueBottom(smLRP, EnforceRules);

    { Identifiant antenne }
    CAT['Station IDs (All)'].QueueBottom(smLRP, NoRules);

    { Attendre que la queue se vide un peu avant de la réalimenter }
    repeat
        PAL.WaitForPlayCount(1);
    until Queue.Count < 3;
end;Langage du code : PHP (php)

Ce script construit une rotation simple :

  • un titre depuis Tracks ;
  • un titre depuis Rock ;
  • un titre depuis Blues ;
  • un identifiant antenne depuis Station IDs (All).

Ensuite, il laisse SAM Broadcaster jouer les titres. Dès que la queue contient moins de trois éléments, il ajoute une nouvelle séquence.

Kinsta: Premium Managed WordPress hosting

Pourquoi attendre que la queue redescende ?

Il ne faut pas remplir la queue avec 200 titres d’avance. Cela fige trop longtemps la programmation. Si vous modifiez vos catégories, vos règles ou votre horloge, la queue reste pleine d’anciens choix.

La ligne suivante garde la file sous contrôle :

until Queue.Count < 3;Langage du code : CSS (css)

Vous pouvez ajuster cette valeur. Par exemple :

  • Queue.Count < 2 pour une queue très courte ;
  • Queue.Count < 3 pour un bon équilibre ;
  • Queue.Count < 5 si vous voulez toujours plusieurs titres prêts.

Pour une station automatisée, trois titres d’avance restent souvent suffisants. Cela garde un peu de marge sans transformer la queue en congélateur musical.

Variante : quatre titres puis un Station ID

Si vous voulez une rotation plus classique, vous pouvez jouer quatre titres musicaux, puis un identifiant antenne. Spacial donne d’ailleurs ce type d’exemple dans sa documentation sur la rotation Clockwheel.

{ PAL script : 4 titres puis 1 Station ID }

PAL.Loop := True;

while True do
begin
    CAT['Tracks'].QueueBottom(smLRP, EnforceRules);
    CAT['Rock'].QueueBottom(smLRP, EnforceRules);
    CAT['Tracks'].QueueBottom(smLRP, EnforceRules);
    CAT['Blues'].QueueBottom(smLRP, EnforceRules);

    CAT['Station IDs (All)'].QueueBottom(smLRP, NoRules);

    repeat
        PAL.WaitForPlayCount(1);
    until Queue.Count < 3;
end;Langage du code : PHP (php)

Cette structure est simple à lire et facile à modifier. Pour ajouter une catégorie Pop, il suffit d’ajouter une ligne :

CAT['Pop'].QueueBottom(smLRP, EnforceRules);Langage du code : CSS (css)

Variante : rotation pondérée par style

Si votre radio diffuse surtout un style principal, vous pouvez le faire revenir plus souvent dans la rotation.

{ PAL script : rotation pondérée par style }

PAL.Loop := True;

while True do
begin
    CAT['Tracks'].QueueBottom(smLemmingLogic, EnforceRules);
    CAT['Rock'].QueueBottom(smLRP, EnforceRules);
    CAT['Tracks'].QueueBottom(smLemmingLogic, EnforceRules);
    CAT['Blues'].QueueBottom(smLRP, EnforceRules);
    CAT['Tracks'].QueueBottom(smLemmingLogic, EnforceRules);

    CAT['Station IDs (All)'].QueueBottom(smLRP, NoRules);

    repeat
        PAL.WaitForPlayCount(1);
    until Queue.Count < 3;
end;Langage du code : PHP (php)

Ici, la catégorie Tracks revient trois fois. Les catégories Rock et Blues servent à varier la couleur musicale sans prendre toute l’antenne.

Variante : rotation sans jingle

Si vous voulez uniquement une playlist musicale, sans identifiant antenne, retirez simplement la ligne qui ajoute Station IDs (All).

{ PAL script : rotation musicale simple }

PAL.Loop := True;

while True do
begin
    CAT['Tracks'].QueueBottom(smLemmingLogic, EnforceRules);
    CAT['Rock'].QueueBottom(smLRP, EnforceRules);
    CAT['Blues'].QueueBottom(smLRP, EnforceRules);
    CAT['Pop'].QueueBottom(smLRP, EnforceRules);

    repeat
        PAL.WaitForPlayCount(1);
    until Queue.Count < 3;
end;Langage du code : PHP (php)

C’est la meilleure base si vous voulez traiter les jingles dans un autre script dédié. Cela évite de mélanger la logique musicale avec les contraintes antenne.

Lancer le script PAL dans SAM Broadcaster

Pour utiliser le script :

  1. ouvrez SAM Broadcaster ;
  2. affichez la fenêtre PAL Scripts ;
  3. créez un nouveau script ;
  4. collez le code PAL ;
  5. vérifiez que les catégories appelées existent ;
  6. compilez le script ;
  7. lancez-le ;
  8. surveillez la queue pendant quelques minutes.

Si SAM affiche une erreur de compilation, vérifiez d’abord les apostrophes, les points-virgules et les noms de catégories. La plupart des erreurs viennent d’un nom de catégorie incorrect ou d’un caractère copié/collé de travers.

Vérifier que la rotation fonctionne correctement

Après le lancement, contrôlez trois choses :

  • la queue se remplit automatiquement ;
  • les catégories alternent comme prévu ;
  • les artistes ne se répètent pas trop vite.

Ensuite, ouvrez l’historique de lecture et observez une heure complète de programmation. C’est le test le plus simple. Une rotation peut sembler parfaite sur le papier, puis devenir monotone au bout de trente minutes.

Dépannage : le script ne joue pas les bons titres

Si le script tourne mais ne joue pas les morceaux attendus, vérifiez ces points dans l’ordre :

  • les catégories existent exactement avec les mêmes noms ;
  • les catégories contiennent bien des fichiers actifs ;
  • les morceaux ne sont pas désactivés ou indisponibles ;
  • les métadonnées Artist, Title et Album sont renseignées ;
  • les règles de rotation ne sont pas trop strictes ;
  • la bibliothèque contient assez de titres pour respecter les séparations ;
  • la queue n’est pas déjà remplie par une autre logique ou un autre script.

Si SAM ne trouve plus de titre compatible, assouplissez temporairement les règles de rotation. Ensuite, augmentez-les progressivement jusqu’à trouver le bon équilibre.

Dépannage : les Station IDs ne passent jamais

Si vos identifiants antenne ne passent jamais, la catégorie contient peut-être trop peu de fichiers pour respecter les règles de séparation.

Dans ce cas, utilisez :

CAT['Station IDs (All)'].QueueBottom(smLRP, NoRules);Langage du code : CSS (css)

La méthode smLRP évite de rejouer toujours le même fichier, tandis que NoRules empêche les règles musicales de bloquer toute la catégorie.

Dépannage : le même artiste revient trop souvent

Dans ce cas, le script n’est pas forcément le problème. Regardez plutôt les règles dans Config > Playlist rotation rules.

Augmentez progressivement la séparation du même artiste. Puis vérifiez que vos tags sont propres. Si certains fichiers ont Beatles, d’autres The Beatles, et d’autres beatles, SAM ne pourra pas appliquer les règles aussi proprement que prévu.

Avant d’accuser le logiciel, nettoyez donc les métadonnées. C’est moins spectaculaire, mais beaucoup plus efficace.

Bonnes pratiques pour une rotation propre

  • Gardez des catégories simples et lisibles.
  • Évitez les catégories avec seulement deux ou trois titres musicaux.
  • Renseignez correctement les champs artiste, titre et album.
  • Utilisez EnforceRules pour la musique.
  • Utilisez NoRules seulement pour les contenus courts.
  • Ne remplissez pas la queue trop longtemps à l’avance.
  • Testez la rotation sur une heure réelle avant de la laisser tourner seule.
  • Sauvegardez vos scripts PAL après chaque modification stable.

Rotation automatique ou Clockwheel natif ?

SAM Broadcaster propose déjà une logique de rotation Clockwheel dans l’interface. Pour beaucoup de radios, elle suffit. Vous pouvez créer une séquence de catégories directement depuis Playlist rotation rules, puis laisser SAM alimenter la queue.

Le script PAL devient intéressant quand vous voulez garder la main sur la structure, documenter votre rotation dans un fichier, ou combiner cette logique avec d’autres scripts.

En clair : utilisez le Clockwheel natif pour une programmation simple. Utilisez PAL quand vous voulez une automatisation plus précise et plus facile à versionner.

Articles connexes sur SAM Broadcaster

Pour aller plus loin sans mélanger les sujets, voici les guides complémentaires :

FAQ

Comment créer une playlist variée dans SAM Broadcaster ?

Créez d’abord des catégories musicales propres, configurez les règles de rotation dans Config > Playlist rotation rules, puis utilisez un script PAL pour ajouter automatiquement les catégories dans la queue.

Pourquoi SAM Broadcaster répète-t-il trop souvent le même artiste ?

Les règles de séparation sont peut-être trop faibles, vos métadonnées sont peut-être incohérentes, ou votre bibliothèque ne contient pas assez de titres. Vérifiez surtout les champs artiste, titre et album.

Quelle différence entre smRandom et smLRP ?

smRandom choisit un fichier au hasard. smLRP choisit le fichier qui n’a pas été joué depuis le plus longtemps. Pour une rotation équilibrée, smLRP donne souvent un meilleur résultat.

Quand utiliser NoRules dans un script PAL ?

Utilisez NoRules pour les contenus courts comme les Station IDs, les jingles ou les promos, surtout si la catégorie contient peu de fichiers. Pour la musique, préférez EnforceRules.

Faut-il utiliser PAL ou le Clockwheel natif de SAM Broadcaster ?

Le Clockwheel natif suffit pour une rotation simple. PAL devient plus utile si vous voulez documenter précisément la rotation, combiner plusieurs comportements, ou intégrer cette logique dans une automatisation plus large.

Sources

Demandez à l'IA son opinion
Gravatar for Matt Biscay

Je suis Matt Biscay, développeur WordPress & WooCommerce certifié chez Codeable, administrateur système et enseignant.

J’aide les entreprises à créer, optimiser et fiabiliser leurs sites WordPress avec une approche technique propre : performance, sécurité, maintenance, développement sur mesure et résolution de problèmes complexes.

Sur Skyminds, je partage des tutoriels WordPress, WooCommerce, Linux et administration système, avec des solutions testées sur des cas réels et pensées pour durer.

Découvrez mes services WordPress et WooCommerce.

20 pensées sur “Script PAL pour SAM Broadcaster : créer une playlist variée par rotation automatique”

  1. Maniant ce logiciel depuis plus d’un an, j’informe quand même que la rotation rules est bien qu’à une seule condition : avoir une très grosse playlist.

    Aussi, cette méthode n’est pas forcément la meilleure vu qu’il éxiste dans la fenêtre screenée un module vers le bas qui contient le module Configure.

    Dans ce module se trouve une interface de scripting où l’on met juste ces lignes :

    CAT[‘Tracks’].QueueBottom(smLemmingLogic,EnforceRules);
    CAT[‘Rock’].QueueBottom(smLRP,EnforceRules);
    CAT[‘Blues’].QueueBottom(smLRP,EnforceRules);
    CAT[‘Station IDs (All)’].QueueBottom(smLRP,NoRules);

    Revenez dans la fenêtre de config et mettez l’option « Keep X songs in the queue » et mettez-y 10.

    Appliquez, faites File > Save configuration (très important pour sauver dans la core de SAM pour être sûr de garder les paramètres au prochain démarrage).

    Et là, comme par magie SAM se débrouillera pour qu’il y ai toujours 10 éléments dans la queue. Lorsqu’un élément ou plus sont enlevés, il recomplète de telle sorte à ce que la queue fasse 10 éléments ;)

    Vous pouvez évidemment placer vos propres musiques manuellement en tête de queue. S’il y en a plus que 10 il ne supprimera rien ;)

    Tchaw

    Répondre
  2. Pour Adrien
    Il faut que Sam soit en AutoDJ….si t’es en Play queue..il n’en lis qu’un..

    Répondre
  3. salut tout le monde
    Voila j ai beau essayer et rien a faire ca veut pas lire ou alors ca me fait une erreur.
    que faire.
    Merci

    Pour la soluce de kermi je comprend vraiment pas

    Répondre
  4. @Sebbabas : selon tes réglages de playlist, il faut avoir pas mal de chansons dans ta playlist. Par exemple, si tu as mis qu’il ne faut pas jouer le même artiste ou le même album pendant 30 minutes, il faut avoir quelques albums/artistes différents dans ta playlist. Autrement, un titre sera joué seulement (et le reste 30 minutes après).

    Répondre
  5. Merci Matt pour tes conseil il me sont très utile tu as une adresse mail ou msn pour te contacter ?

    Répondre
  6. Salut,

    Je veux que SAM Broadcaster lise en boucle mes différentes playlists dans l’ordre mais pas les musiques dans ces dossiers de playlists, je suis un peu paumé, j’ai besoin d’un script PAL ou il y a déjà une fonctionnalité dans le logiciel ? Est-ce que c’est tout bêtement ce qu’offre le script dans l’article ?

    Répondre
    • Bonjour,

      Désolé pour le retard, je n’avais pas vu votre commentaire.

      Il faut utiliser :

      Queue.AddList('C:\rock.m3u',ipTop); 
      Queue.AddList('C:\metal.m3u',ipTop); 
      Répondre
  7. bonsoir pourriez vous me donné des renseignement sur sambroadcaster voici mon un message d’erreur voici se qui me dit warning clockwel rotation failed to pick track from la catégory please check separation rules or add more tracks merci

    Répondre
    • Bonjour,

      Il faut que le nom de vos catégories soient les mêmes que dans le script (ou alors modifier le script avec le nom de vos propres catégories).

      Répondre
      • pourtant j’ai la programmation débute a 16 heures jusqu’à 21 heures en arrivant a 20 heures cet là qui ma mis se message d’erreur et cet la seul catégory qui me le fait avez-vous teamviewer9

      • Salut,

        Je pense qu’il faut que tu vérifies tes règles Clockwheel : elles sont peut-être trop restrictives et ne permettent pas d’ajouter suffisamment de morceaux. Du coup, au bout d’un moment, le script ne peut ajouter de nouveaux morceaux dans la liste.

        Ps : non, je n’ai pas team viewer.

      • rebonjour je te remercie de ta réponse hier il a fonctionner impeccable j’ai ajouté des titres et sa fonctionner une deux autres question
        la 1ere comment on peut mettre un lecteur sur le site web de la radio et la deuxième je voudrais intégrer un top horaire peut tu me donner des renseignement je te donne mon adresse E-MAIL cet christian.viano@sfr.fr mercis pour ton aide

  8. salut et merci pour tes exemples et tutos

    j’ai une question voila dans mon script je peux utiliser et ajouter une piste avec Queue.AddFile(‘C:tophoraire.mp3’,ipTop);

    mais cela ne fonctionne pas avec Cat (je voulais dans ce scripts qu’il place une musics aléatoire dans la playlists COMBLAGE

    if (ActivePlayer.Duration>0) and ((ActivePlayer.Duration-ActivePlayer.CurTime) <Delta) then
    begin
    Cat['COMBLAGE'].QueueTop(smLRP, EnforceRules);

    voici le script pour mieux comprendre et il servira à d’autres en plus

    PAL.Loop := True;

    function ActivePlayer:TPlayer; forward;

    {Le test de la chanson commence à}

    const Debut = ‘XX:57:00’;

    {Durée de 57 jusqu’à 00: 60-57=03min en millisecondes !!!}

    const Delta = 180*1000;

    {Attendre la bonne minute}

    PAL.WaitForTime(T[Debut]);

    {Si le titre se termine dans les 3 minutes suivantes on place la musique d’attente}

    if (ActivePlayer.Duration>0) and ((ActivePlayer.Duration-ActivePlayer.CurTime) <Delta) then

    begin

    Queue.AddFile('C:comblage.mp3',ipTop);

    end;

    {On attend 00 on place le top horaire et on l'envoie en suivant}

    PAL.WaitForTime('XX:00:00');

    Queue.AddFile('C:tophoraire.mp3',ipTop);

    ActivePlayer.FadeToNext;

    function ActivePlayer:TPlayer;

    begin

    if DeckA.Status = psPlaying then

    Result := DeckA

    else

    Result := DeckB;

    end;

    merci d’avance

    Répondre

Opinions