Script PAL pour SAM Broadcaster : jouer un style de musique donné pendant un créneau horaire

Un script PAL un peu plus complexe cette fois qui concernera surtout les webradios qui ont des émissions bien déterminées, à heure fixe, avec un créneau horaire bien déterminé.

Les fichiers de chaque style de musique doivent être classés dans les différentes catégories de SAM (fenêtre Playlist > Catégories) : il suffit de créer différents dossiers (instrumental, contemporary et sabbath dans l’exemple suivant) et de placer les fichiers dans ces différents dossiers.


{PAL script : style de musique par créneau horaire par Matt - www.skyminds.net}

{*************************************************************
Définition des variables.
**************************************************************}
PAL.Loop := True;
var mytime : DateTime = now;
var D: Integer;

var start_time_instrumental, end_time_instrumental : DateTime;
var start_time_contemporary, end_time_contemporary : DateTime;
var start_time_sabbath, end_time_sabbath : DateTime;

{*************************************************************
A vous d'ajuster les heures ! Je lance le script 15 minute avant l'heure parce qu'il 
reste toujours 3 ou 4 chansons dans la file d'attente. Si vous souhaitez que cela 
commence à l'heure exacte, il vous suffit d'ajouter la commande Queue.Clear 
**************************************************************}
start_time_instrumental := date + EncodeTime(07,45,00,0);
end_time_instrumental := date + EncodeTime(08,45,00,0);

start_time_contemporary := date + EncodeTime(10,45,00,0);
end_time_contemporary := date + EncodeTime(12,45,00,0);

start_time_sabbath := date + EncodeTime(16,45,00,0);
end_time_sabbath := date + EncodeTime(20,45,00,0);

{*************************************************************
Le script est lancé le Samedi et obéit aux règles catégories/heures.
**************************************************************}
if DayOfWeek(Now) = Saturday then
begin
      if( mytime >= start_time_instrumental) and (mytime <= end_time_instrumental) Then
         begin
            cat['Instrumental'].QueueBottom(smLemmingLogic,EnforceRules);
            PAL.WaitForQueue(1);
         end;
      if( mytime >= start_time_contemporary) and (mytime <= end_time_contemporary) Then
         begin
            cat['Contemporary'].QueueBottom(smLemmingLogic,EnforceRules);
            PAL.WaitForQueue(1);
         end;
      if( mytime >= start_time_sabbath) and (mytime <= end_time_sabbath) Then
         begin
            cat['DemoTracks'].QueueBottom(smLemmingLogic,EnforceRules);
            PAL.WaitForQueue(1);
         end;
end;
Code language: PHP (php)

Vous n’avez plus qu’à vous pencher sur le contenu de l’émission !

Envie d'ajouter des fonctionnalités exceptionnelles à votre site WordPress ou WooCommerce? Je suis là pour vous aider.

Explorons les possibilités ensemble »

Articles conseillés :

Matt

Matt Biscay est développeur WordPress et WooCommerce certifié chez Codeable, ainsi que sysadmin qualifié et enseignant-chercheur. Passionné par le code performant et les solutions sécurisées, je m'efforce d'offrir une expérience utilisateur exceptionnelle sur chaque projet.

Vous avez aimé cet article ? Vous avez un projet en tête et vous pensez que je pourrais vous aider à le concrétiser ? N'hésitez pas à me contacter, je serais ravi de discuter avec vous de votre projet !

19 pensées sur “Script PAL pour SAM Broadcaster : jouer un style de musique donné pendant un créneau horaire”

  1. Bonjour,

    J’ai essayé mais ça me met toujours compiler errors

    {PAL script : style de musique par créneau horaire par Matt - www.skyminds.net}
           
           {QUELQUES INFOS DU SYSTEME -
           Un script PAL un peu plus complexe cette fois qui concernera surtout les
           webradios qui ont des émissions bien déterminées, à heure fixe, avec un
           créneau horaire bien déterminé.
           Les fichiers de chaque style de musique doivent être classés dans les
           différentes catégories de SAM (fenêtre Playlist > Catégories) : il suffit
           de créer différents dossiers (instrumental, contemporary et sabbath dans
           l'exemple suivant) et de placer les fichiers dans ces différents dossiers.}
    
          {*************************************************************
    
          Définition des variables.
    
          **************************************************************}
    
          PAL.Loop := True ;
    
          var mytime : DateTime = now ;
    
          var D : Integer ;
    
           
    
          var start_time_Mix, end_time_Mix : DateTime ;
    
          var start_time_RadioMP3, end_time_RadioMP3 : DateTime ;
    
          var start_time_sabbath, end_time_sabbath : DateTime ;
    
           
    
          {*************************************************************
    
          A vous d'ajuster les heures ! Je lance le script 15 minute avant l'heure parce qu'il
    
          reste toujours 3 ou 4 chansons dans la file d'attente. Si vous souhaitez que cela
    
          commence à l'heure exacte, il vous suffit d'ajouter la commande Queue.Clear
    
          **************************************************************}
    
          start_time_Mix := date + EncodeTime(01,05,00,0) ;
    
          end_time_Mix := date + EncodeTime(03,00,00,0) ;
    
           
    
          start_time_RadioMP3 := date + EncodeTime(03,05,00,0) ;
    
          end_time_RadioMP3 := date + EncodeTime(17,45,00,0) ;
    
           
    
          start_time_sabbath := date + EncodeTime(17,46,00,0) ;
    
          end_time_sabbath := date + EncodeTime(20,45,00,0) ;
    
           
    
          {*************************************************************
    
          Le script est lancé le Samedi et obéit aux règles catégories/heures.
    
          **************************************************************}
    
          if DayOfWeek(Now) = Wednesday then
    
          begin
    
                if( mytime>= start_time_Mix) and (mytime = start_time_RadioMP3) and (mytime = start_time_sabbath) and (mytime <= end_time_sabbath) Then
    
                   begin
    
                      cat['sabbath'].QueueBottom(smLemmingLogic,EnforceRules) ;
    
                      PAL.WaitForQueue(1) ;
    
                   end ;
    
          end ;
    

    Donc un dossier dans playlist qui est sous le nom Mix, RadioMP3 et un sous sabbath.

    Le fichier pal est demandé de se lancé le mercredi chose que j’ai testé 10 minutes avant pour voir si cela execute, et j’ai toujours le message d’erreur.

    En haut du fichier pal ceci (var D : Integer ;) veut il dire qu’il va chercher dans D:( disque dur ) ou c’est comme ça ?

    Pose cette question car je debute dans la chose et que j’y connais pas grand chose et bien dommage qu’il y a pas plus de fichier pal proposé et bien utile.

    Merci d’avance pour vos futurs réponses.
    Amicalement

    Reply
  2. Salut Ludovic,

    Je n’ai pas de problèmes de compilation sur ce script.

    var D : Integer; est une définition de variable. Rien à voir avec la lettre du disque dur. As-tu essayé de ne pas changer le script mais d’utiliser les mêmes noms de catégories ?

    Reply
  3. {PAL script : style de musique par créneau horaire par Matt - www.skyminds.net}
    
    {*************************************************************
    Définition des VARIABLES.
    **************************************************************}
    PAL.Loop := True;
    var mytime : DateTime = now;
    var D: Integer;
    
    var start_time_instrumental, end_time_instrumental : DateTime;
    var start_time_contemporary, end_time_contemporary : DateTime;
    
    
    {*************************************************************
    A vous d'ajuster les heures ! Je lance le script 15 minute avant l'heure parce qu'il
    reste toujours 3 ou 4 chansons dans la file d'attente. Si vous souhaitez que cela
    commence à l'heure exacte, il vous suffit d'ajouter la commande Queue.Clear
    **************************************************************}
    start_time_zic-cool := date + EncodeTime(05,01,00,0);
    end_time_zic-cool := date + EncodeTime(11,59,59,0);
    
    start_time_clubbing := date + EncodeTime(12,01,00,0);
    end_time_clubbing := date + EncodeTime(04,59,59,0);
    
    
    
    {*************************************************************
    Le script est lancé le Samedi et obéit aux règles catégories/heures.
    **************************************************************}
    IF DayOfWeek(Now) = Saturday then
    begin
          IF( mytime >= start_time_zic-cool) AND (mytime = start_time_clubbing) AND (mytime <= end_time_clubbing) Then
             begin
                cat['clubbing'].QueueBottom(smLemmingLogic,EnforceRules);
                PAL.WaitForQueue(1);
             end;
    end;
    

    ca c’est ton script que j’ai modifié et j’ai creer dans sam les cat=zic-cool et cat=clubbing

    je ne vois pas comment je peux mixé les deux pour arrivé a faire se que je veux.

    merci de ton aide matt

    Reply
  4. var start_time_zic-cool, end_time_zic-cool : DateTime;
    var start_time_clubbing, end_time_clubbing : DateTime;

    je viens de corigé ca, desolé je suis allé trop vite lool

    merci encore

    Reply
  5. {PAL script : diffuser un jingle toutes les 5 chansons par Matt - www.skyminds.net}
    {#0# }
    PAL.Loop := True; 
    PAL.WaitForPlayCount(5); 
    CAT['Station IDs (All)'].QueueTop(smLemmingLogic, NoRules);

    et si j’utilisais le script “style de musique par créneau horaire”
    et le script “Un jingle toutes les 5 chansons”

    c’est jouable ca??? lool

    je vous tiens au courant des que j’ai fait les tests ;)

    Reply
  6. Bonjour, moi j’a essayé dans tout les sens, ma playlist ne s’introduit pas dans la liste de queue :/
    Help me please

    {PAL script : style de musique par créneau horaire par Matt - www.skyminds.net}
    {*************************************************************
    Définition des VARIABLES.
    **************************************************************}
    PAL.Loop := True;
    var mytime : DateTime = now;
    var D: Integer;
    var start_time_other, end_time_other : DateTime;
    {*************************************************************
    Heure de départ
    **************************************************************}
    start_time_other := date + EncodeTime(13,58,30,0);
    end_time_other := date + EncodeTime(13,59,45,0);
    {*************************************************************
    Le script est lancé le mardi et obéit aux règles catégories/heures.
    **************************************************************}
    IF DayOfWeek(Now) = Tuesday then
    begin
          IF( mytime >= start_time_other) AND (mytime <= end_time_other) Then
             begin
                CAT['Other'].QueueTop(smLemmingLogic, NoRules);
                 PAL.WaitForQueue(1);
             end;
    Reply
  7. Salut Matt,
    Et bien ça fait déjà plus de 2 semaines que j’me bas avec Sam…
    J’ai l’impression que le script ne s’excute pas.
    Voici mon script, enfin le tien que j’ai adapté!

    PAL.Loop := True;
    var mytime : DateTime = now;
    var D: Integer;
    var DebutSmoothJazz, FinSmoothJazz : DateTime;
    var DebutZouk, FinZouk : DateTime;
    var DebutLatine, FinLatine : DateTime;
    var DebutDivers, FinDivers : DateTime;
    DebutSmoothJazz := date + EncodeTime(00,00,00,0);
    FinSmoothJazz := date + EncodeTime(08,00,00,0);
    DebutDivers := date + EncodeTime(08,00,00,0);
    FinDivers := date + EncodeTime(13,00,00,0);
    DebutLatine := date + EncodeTime(13,00,00,0);
    FinLatine := date + EncodeTime(18,00,00,0);
    DebutZouk := date + EncodeTime(18,00,00,0);
    FinZouk := date + EncodeTime(00,00,00,0);

    IF( mytime >= DebutSmoothJazz) AND (mytime = DebutDivers) AND (mytime = DebutLatine) AND (mytime = DebutZouk) AND (mytime <= FinZouk) Then
    begin
    Cat['Zouk'].QueueBottom(smLRP,EnforceRules);
    PAL.WaitForQueue(1);
    end;

    J'ai donc 4 Dossiers SmoothJazz, Latine, Divers, Zouk, dan sle dossiers PlayList
    Et le script ne fonctionne pas sniffffffff!
    J'espère que tu pourras m'aider!

    Euh, la file d'attente se remplit très aléatoirement. Parfois ça va fonctionner sur 2 morceaux et puis hope, ça va s'arrêter!
    Merki à toi!

    Reply
  8. Salut tout le monde,

    @neteyes, @RMS et @Etann86 : le script est un peu complexe et je pense qu’on peut arriver au même résultat comme ceci :

    – solution 1 : classer les chansons dans une catégorie. Sauver cette catégorie en playlist (.m3u). Utiliser l’Event Scheduler pour charger cette playlist à l’heure désirée.

    – solution 2 : classer les chansons par catégories. Planifier une clockwheel pour piocher dans cette catégorie à l’heure de vos programmes. Planifier votre clockwheel habituelle pour le reste du temps.

    Je suis en vacances et je n’ai pas SAM sur cet ordinateur mais cela devrait fonctionner et être plus simple à mettre à jour. J’écrirai un article à ce sujet lorsque je testerai tout ça.

    Reply
  9. Salut Matt,
    Merci pour ta réponse.
    Ce que tu proposes à l’air plus simple.
    Mais, j’aurai bien aimé savoir pourquoi ça ne fonctionne pas.
    Et puis, si je veux intégrer des jingles, des bips horaires?
    J’attendrai ta rentrée de vacances pour en savoir plus !
    En attendant, les playlist m3u seront une roue de secours!

    Reply
  10. Salut Etann86,

    C’est ) la fin de ton script que ça coince – tu as mis :

    IF( mytime >= DebutSmoothJazz) AND (mytime = DebutDivers) AND (mytime = DebutLatine) AND (mytime = DebutZouk) AND (mytime <= FinZouk) Then
             begin
                Cat['Zouk'].QueueBottom(smLRP,EnforceRules);
                PAL.WaitForQueue(1);
             end;

    La première ligne fait que le script ne peut se lancer : il faut que l'heure soit supérieure à DebutSmoothJazz, égale à DebutDivers/DebutLatine/Debut Zouk et inférieure à FinZouk. Impossible !

    Il aurait fallu mettre :

    IF( mytime >= DebutSmoothJazz) AND (mytime <= FinSmoothJazz) Then
             begin
                cat['SmoothJazz'].QueueBottom(smLemmingLogic,EnforceRules);
                PAL.WaitForQueue(1);
             end;
          IF( mytime >= DebutDivers) AND (mytime <= FinDivers) Then
             begin
                cat['Divers'].QueueBottom(smLemmingLogic,EnforceRules);
                PAL.WaitForQueue(1);
             end;
          IF( mytime >= DebutLatine) AND (mytime <= FinLatine) Then
             begin
                cat['Latine'].QueueBottom(smLemmingLogic,EnforceRules);
                PAL.WaitForQueue(1);
             end;

    Pour les jingles : Script PAL pour SAM Broadcaster : diffuser une publicité ou un jingle toutes les 5 chansons
    et pour les bips horaires : Script PAL pour SAM Broadcaster : jouer un bip horaire

    A+

    Reply
  11. Ouhla,
    Oui, j’ai copié coller un truc un peu bizarre…
    Bon j’ai repris ton script et à l’heure où j’te parle, ça tourne et la file d’attente se remplie mais 2 titre maximum… donc, ça semble normal pour le moment.
    J’vais laisser tourné ça cette nuit et on verra demain à 08H si ça joue enocre et surtout si ça change de catégorie…
    Merci pour ton aide!

    Reply
  12. Salut Matt,
    J’ai laissé la radio toute la nuit tournée et j’ai eu la surprise que ça c’état arrêté ce matin et en fait, mon erreur a été de ne pas avoir mi assez d’artiste différents dans mes playlists et d’avoir mi surtout l’attribut EnForceRules
    Voilà…
    Un grand merci pour ton aide!

    Reply
  13. HELP Matt, j’suis dans la m… totale, je suis scrupuleusement ton script et je ne comprend pas pourquoi lorsque je lance le Scrpit file il programme que la 1ère chanson et ensuite c fini il programme plus la suite. Lorsque j’édit le script il me surligne la 1ère phrase que que g mise en gras et en même temps il est écrit dans le pal script : “waiting for queue to reach 1 item”.
    Peut tu m’aider s’il te plait. Merci

    
    {*************************************************************
    Définition des VARIABLES.
    **************************************************************}
    PAL.Loop := TRUE;
    var mytime : DateTime = now;
    var D: INTEGER;
    
    var start_time_Club, end_time_Club: DateTime;
    var start_time_VipFunkClassic, end_time_VipFunkClassic : DateTime;
    var start_time_ClubBis, end_time_ClubBis : DateTime;
    
    {*************************************************************
    A vous d'ajuster les heures ! Je lance le script 15 minute avant l'heure parce qu'il
    reste toujours 3 ou 4 chansons dans la file d'attente. Si vous souhaitez que cela
    commence à l'heure exacte, il vous suffit d'ajouter la commande Queue.Clear
    **************************************************************}
    start_time_Club := DATE + EncodeTime(22,03,00,0);
    end_time_Club := DATE + EncodeTime(22,10,00,0);
    
    start_time_VipFunkClassic := DATE + EncodeTime(22,12,00,0);
    end_time_VipFunkClassic := DATE + EncodeTime(22,22,00,0);
    
    start_time_ClubBis := DATE + EncodeTime(22,35,00,0);
    end_time_ClubBis := DATE + EncodeTime(22,50,00,0);
    
    {*************************************************************
    Le script est lancé le Samedi et obéit aux règles catégories/heures.
    **************************************************************}
    IF DayOfWeek(Now) = Saturday THEN
    BEGIN
          IF( mytime >= start_time_Club) AND (mytime = start_time_VipFunkClassic) AND (mytime <= end_time_VipFunkClassic) THEN
             BEGIN
                cat['Vip Funk Classic'].QueueBottom(smLemmingLogic,EnforceRules);
                PAL.WaitForQueue(1);
             END;
          IF( mytime >= start_time_ClubBis) AND (mytime <= end_time_ClubBis) THEN
             BEGIN
                cat['Club 90'].QueueBottom(smLemmingLogic,EnforceRules);
                PAL.WaitForQueue(1);
             END;
    END;
    
    Reply
  14. bonjour,

    Merci pour le script pal: Apres 5 chansons un jingle. Pour mon cas la 5e chanson n’est jamais jouée, elle commence elle fait fadeout pour laisser place au jingle. Je perds donc toujours une musique. Merci pour votre aide.

    Reply
    • Bonjour j’ai eu le même problème. Essaies ce code :

        PAL.Loop := True;
        
        PAL.WaitForPlayCount(5); 
        CAT['jingle'].QueueTop(smLRP, NoRules);

      avec “jingle” c’est le nom d’une catégorie dans le dossier playlist par exemple.

      J’espère que ça puisse t’aider.

      Reply
  15. bonjour

    je voudrais utiliser ce script mais pour une fonctione journaliere , tous les jours a la meme heure programmé une playlist special

    je dois modifier quoi exactement

    cdt

    Reply
  16. Salut SAM,

    J’ai copié et collé ton script et j’ai ensuite changé les dossiers en “rotsirosty1”, “rotsirotsy2” et “rotsirotsy3”

    PAL.Loop := True;
    var mytime : DateTime = now;
    var D: Integer;

    var start_time_rotsirotsy1, end_time_rotsirotsy1 : DateTime;
    var start_time_rotsirotsy2, end_time_rotsirotsy2 : DateTime;
    var start_time_rotsirotsy3, end_time_rotsirotsy3 : DateTime;

    start_time_rotsirotsy1 := date + EncodeTime(00,45,00,0);
    end_time_rotsirotsy1 := date + EncodeTime(02,45,00,0);

    start_time_rotsirotsy2 := date + EncodeTime(02,45,00,0);
    end_time_rotsirotsy2 := date + EncodeTime(04,45,00,0);

    start_time_rotsirotsy3 := date + EncodeTime(04,45,00,0);
    end_time_rotsirotsy3 := date + EncodeTime(05,45,00,0);

    if DayOfWeek(Now) = Thursday then
    begin
    if( mytime >= start_time_rotsirotsy1) and (mytime = start_time_rotsirotsy2) and (mytime = start_time_rotsirotsy3) and (mytime <= end_time_rotsirotsy3) Then
    begin
    cat['rotsirotsy3'].QueueBottom(smLemmingLogic,EnforceRules);
    PAL.WaitForQueue(1);
    end;
    end;

    Puis, j'ai attendu les 15 minutes après je n'ai rien obtenu de satisfaisant. Le script s'active mais les musiques dans ces catégories ne sont pas diffusées.

    J'utilise en parallèle le script des jingles :

    PAL.Loop := True;

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

    {#2# Pause le temps que quelques chansons soient jouées pour éviter de surcharger la file d'attente}
    repeat
    PAL.WaitForPlayCount(1);
    until Queue.Count < 3;

    Je ne sais pas s'il y a un rapport.

    Un coup de pouce de ta part serait la bienvenue.
    Merci d'avance

    Reply
  17. Bonjour Matt,
    Cela fait longtemps que je t’ai pas écris j’espère que tu es toujours là , alors mon problème est souvent le morceau qui joue coupe avant la fin de la musique ou de celui qui parle pour passer au suivant , et cela me dérange. Alors comment configurer cela et où on fait cela ?

    Reply

Opinions