With SAM Broadcaster PRO, the Ad Trigger files can be programmed to air at certain times of each hour using PAL Scripts. PAL is short for Playlist Automation Language and was developed to give station programmers full power over their station rotation.


  • Step 1- Firstly, you would need to download the 1 minute ad triggers archive and extract the .zip file somewhere on your computer. The ad triggers are available here.

  • Step 2- Next, once you have the ad triggers in your desired hard drive folder, create a new playlist in SAM called "advert-60" and add the ad trigger files to the newly created playlist. It is important to use the name "advert-60" for the playlist because this syntax is currently coded in the .pal script which we are going to provide.

  • Step 3- Right-click on each ad trigger file, then select Song Info and make sure the Type is set to A-Advertisement.

  • Step 4- Navigate to “C:\Users\[Your User]\AppData\Local\SpacialAudio\SAMBC\PAL\” and create a new text file. Give it a name of your preference that would distinguish it from other .pal scripts.
    Please make sure the extension is set to .pal, not to .pal.txt.
  • Step 5- Add the .pal file that you just created to the SAM Broadcaster PAL Scripts window by navigating to the specified path. Once it's in the list, double click to edit it and copy/paste the following code:


PAL.Loop := True;                              // Loop the PAL Script

// Variable Declarations
var Player1 : TPlayer;                         // Declare an instance of TPlayer for the Active Player
var Player2 : TPlayer = DeckB;                 // Declare an instance of TPlayer for the Idle Player

var CountRep : integer;
var AdBreakTotal : integer;
var AdCount : integer;                         // Used to count the number of adverts
var P1Track, P2Track, P3Track : TSongInfo;     // Declare the TSongInfo Containers
// End Of Variable Declarations

// Declare Adjustable Variables
CountRep := 1;
var AdTotal : integer = 1;                     // Set the number of adverts to play
// End Of Declare Adjustable Variables

While Countrep <5 do
  begin
    case CountRep of
      1 : PAL.WaitForTime ('XX:00:00');
      2 : PAL.WaitForTime ('XX:15:00');
      3 : PAL.WaitForTime ('XX:30:00');
      4 : PAL.WaitForTime ('XX:45:00');
      end;
    CountRep := CountRep + 1;

    PAL.LockExecution;                         // Speed up the Script processing

    // Check for the Active Player
    Player1 := ActivePlayer;                   // Assign the Active Player to Player1
    If Player1 = DeckB Then Player2 := DeckA;  // Assign the Idle Player to Player 2

    // Add the required number of adverts to the top of the queue
    for AdCount := 1 to AdTotal do
      begin
      CAT['advert-60'].QueueTop(smLRP,NoRules);
      writeln(AdCount);
    end;

    // Capture the Track Information from the Active Player
    P3Track := ActivePlayer.GetSongInfo;

    // Count the Adverts before reducing the Player Volume
    while (AdCount < AdTotal) AND (P3Track['songtype'] <> 'S') do
      begin
      PAL.WaitForPlayCount(1);                 // Wait for the Advert to Play
      P3Track := ActivePlayer.GetSongInfo;     // Capture the next Track Information
      end;                                     // end for the While loop

    PAL.UnLockExecution;                       // Return PAL Script processing to normal speed
    end;

// Housekeeping
Player1.Free;
Player2.Free;
P1Track.Free;
P2Track.Free;
P3Track.Free;

  • Step 6- Lastly, run the .pal script you've just created by clicking on the play button within the PAL scripts window.


If all the steps have been followed, you should start seeing a timer until the next advert trigger file will be queued. A 1 minute ad break will be triggered and thplaying on your station at :00, :15, :30, :45 each hour.