Playlist chaining/linking

I am in the process of trying to wrap my mind around all these actions, containers, scripts, commands, sequences, etc. I just need some basic help to start off with trying to figure out how to simply take 31 days worth of playlists that are all ready generated(by day) and ready to go, and just hit play and mAirlist just does its thing.

For some background info, the playlists were originally generated in DRS2006. I have the process down to import them into SPL Creator to convert them to M3U.

What is the best way to do this? The database playlists are sorted by hour. Is it better to do it by hour? Is it possible to create a container and put the full days log in there and when that one is done playing, automatically jumping/loading to the next days playlist container? If I drag the day’s 24 M3U playlists into the automation screen, it pulls them all in order. I know I can then take that and save it as a .mlp file. Is there a way to get each one into a container to be able to add an action to it? Are containers the only item that can have actions assigned to them or would a script be better? Whats the purpose of containers? I dont need any of this to be timed or date stamped as of right now. Just straight up load and play an .mlp or m3u playlist…bam bam bam, in order, in full automated mode with no user interaction(from regular DJs at least).

Another Idea I had going back to the database playlists… I tried pulling in the m3u of each hour of the day and hit save so they are all in there. To use that method, if its any different from just telling the automation screen which playlists to play when, can I just tell the system to play those playlists in the database in order? The only problem I realize with that is its all time based and they are all not exactly an hour. Can still chain together those playlists? Maybe insert some command into each hour to tell it to jump to the next hour when its done? Eh, thats more work then doing it by day! I would rather one day’s playlist jump to the next day via some command. Thats inserting 31 commands instead of 720 lol! Besides, the only way that I can find to do that is inserting a container at the end of an hour in which I can, on start of that container, run an action of loading and playing a database playlist but it doesnt give me any option of which days or hour’s database playlist to load!

I LOVE the power of the mAirlist program but I just need to find a way to do such an easy series of tasks.

I hope I’m making sense. Any help is appreciated.

Automating M3U playlists (daily or hourly) generated by external software is a pretty simple task, using events.

First of all, the playlist files should all be in the same folder, and should be named in a YYYY-MM-DD.m3u (or similar) format (or YYYY-MM-DD-HH.m3u, if you use hourly playlists).

Then open the event scheduler (click the “Events” button in the toolbar) and add a new event. Set the date/time options so that it runs each day, only once, at 0:00:00 (this is the default settings).

In the “Actions” section, add a new “Load and play playlist” action. A configuration dialog for that action will appear. First, go to the Options tab and check “Enable substitution of variables”. Then go back to the Actions tab and manually enter the file name as follows:


When the action is executed, mAirList replaces the %Y, %M and %D variables by the current date, so the correct playlist file is loaded each day.

Close the action and event configuration dialog, and you’re done.

It’s possible to add more than one action to a particular event. For example, you can add another “append playlist” action that appends some sort of emergency playlist to the daily playlist, so you have some extra items just in case the daily playlist is less than 24 hours long. Another way to handle this emergency is adding that action on the Actions page in mAirListConfig in the “When playlist runs empty in automation mode” category.

One thing to keep in mind when using M3U playlists is that these playlists do only contain file names, but no metadata information, in particular no cue points. When loading the M3U playlist, mAirList will check if it has any metadata available for any items from another data source: mAirList-style file tags, MMD files, or any connected mAirListDB instance. If it doesn’t, it will perform Auto Cue, which can take a very long time for a 24h playlist file. It’s a good idea to set up a mAirListDB and add all audio to it first (Auto Cue is performed during the initial import), that will speed up the process of loading the M3U files alot.

Speaking of mAirListDB, it does in fact use hourly playlists instead of daily playlists. However, the “Import multiple playlists” function (found in the menu when you click the small arrow next to the Import button on the Library tab) has the ability to split daily playlists into hourly playlists. Once the playlists are imported into mAirListDB, you can use the event scheduler to load the next playlist once an hour in the same way as mentioned above, but using the “Load and play database playlist” action.

I’m sure Cad will have a few more tips.

OK, it sounds like what you’re asking is: how do I get mAirList to auto-load and play my hourly playlists, right?

The first thing to do is to use a consistent NAMING scheme for your playlists. The usual one is as follows:
So, for example:

Second, ‘tell’ mAirList you want it to pre-load the ‘next’ hour’s playlist by adding an Event which will run every hour, as follows:

  1. In the main toolbar, click Events (or if you prefer, in the Playlist control bar, click the ‘E’ box).
  2. In the Event Scheduler dialog, click Add.
  3. In the Event Editor dialog:
    • type a Description (for example, Load hourly playlist),
    • leave Date at its default of each day,
    • change Time to each hour, at,
    • change minutes to (say) 57,
    • in Actions, click Add…, Playlist, Append playlist,
    • in the Configure action dialog:
      • on the Action tab, type a ‘template’ Filename of %Y-%M-%D-%h.m3u
      • on the Options tab, select Enable substitution of variables,
        change the Time Adjustment to about 5 minutes (00:05:00) forward,
      • click OK.
    • in the Event Editor dialog, click OK.
  4. In the Event Scheduler dialog, click Save and save your changes as an mle file.
    This will allow you to re-load the Event if necessary.
  5. Note that the ‘E’ box in the Playlist control bar, now shows the time of the next Event
    (the Event you just created).

Now leave mAirList to run, and at the appointed time, the playlist for the NEXT hour will load.

If you have any questions about any of these steps, please let me know. Hopefully anything you might need to change or ‘tweak’ will be reasonably obvious once you’ve followed the steps above.

Hope that helps! ;D

[EDIT: OK, looks like Torben was here first! But between those two replies, you should ‘get it!’]


Thanks guys! This helps a lot.

BUT…It sounds like you guys are saying that its not possible to “chain” or “link” them together even as separate daily playlists regardless of day, time, or hour. Timing is not that crucial for our programming and each top of the hour sweeper is always within five minutes of the hour in how the playlists are put together.

Going back to one of my original questions…is it possible to create a container for each daily playlist?

Please tell me if this idea will work reliably… I have noticed if you highlight all or some of the files in the automation list which was loaded from an mlp, click PFL, it creates a container for the whole days worth. Could I then go to the action tab and insert a load and play for the next days log on the Action On Stop section? Either that or create an action for the very last item in the playlist doing the same thing? Would trying to do that for a whole days playlist cause too much a noticeable delay to be worth it? Maybe a way around that since Ive noticed there is some loading time delay on such large lists, is having the next days playlist always loaded in a second playlist configured in the automation screen. So when one playlist finishes it jumps to the next playlist.

I should have mentioned, I have built the audio database already and all the timings should be in there. I have discovered its better to create a standard m3u playlist without any timings so it pulls it all from the database.

Ok, the delay with adding a action to load the next playlist to the last element is actually not too noticable, if at all. I could be that since I have been just testing and looping the same playlist over and over, its already in ram. I am going to try it with an actual seperate playlist and then another playlist on screen if thats possible.

My other thought to this is fade and transition smoothness. The action only runs when that element is totally stopped, it seems. Is there any way possible to tell it to fade into the action?

I don’t understand your apparent fetish with containers, or keeping playlists ‘separate’? If you have closely-timed playlists which run at an hour each, you should never need to pre-load more than the ‘next’ hour, typically a few minutes before the current list finishes. I’m assuming here this is for fully automated playout: correct?

Ditto, why use an Action in a playlist, or on a specific item? That is what the event scheduler is for: to run events regularly (like, once an hour). Using the Event Scheduler means you can load the next list a few minutes BEFORE the hour, so nothing should ever ‘run out,’ and all your segues will be handled by the normal Automation. You CAN append playlists in WHILE things are playing out, you know! Or am I missing something here that you are not mentioning?

If you use a mAirListDB database, it’s even easier: make up and store playlists in the DB, and the Actions to load those are even easier to put into the Event Scheduler than m3u files.


I don’t know what it is either…I just love containers! lol :wink:

…but no, seriously, It was just something I discovered that looked cool so I was just playing with that idea.

OH ok! I think I get it LOL :smiley: ! Where at a specified time even if the previous days playlist is still playing, say at 23:55, the event scheduler appends the next days log right at the end!

Our playlists are actually originally full days, not by hours. So we have 30 days worth of premade logs/playlists. Although SPL Creator makes it easy to chop them up into hours. I will go ahead and import them by hour into the database because soon, once i get mAirlist mostly figured out, I need to show and convince our PD to move from DRS2006 before we go “live”. mAirlist is definitely the future of radio!

You guys are awesome and patient. Thanks again! :-*

“I think he’s got it!” :wink:

mAirList is ‘sort-of’ built principally to use hourly, not daily, playlists. But it can of course handle either of those. If necessary, you could add a mAirList script (also run by the Event Scheduler) that could ‘fade out’ any running tracks at midnight each day, then ‘jump’ to the start of the next playlist.

Generally speaking, wherever you are ‘now,’ there will be a way to achieve what you need in mAirList for your fully automated playout. And if you’re using SPC, then I think it’s Charlie Davy in here who’s done some work with SPC to integrate it even better with mAirList. Worth doing a search in here for ‘station playlist’ and ‘SPC’ to find those post, if SPC is your scheduling weapon of choice.

Hope that helps!


Correct. Or let’s put it this way: While the database backend (mAirListDB) uses hourly playlists, the playout module can handle any intervals (daily, hourly, whatever), because you can set up the playlist load events (for playlist files created by external software) in whatever way you need then. Let them run once a day, once an hour, twice an hour, it doesn’t matter. Just make sure that there’s once playlist per interval, and that it is named in a way that the event scheduler can find it (e.g. yyyy-mm-dd.m3u).

So it’s just fine to use daily playlists with mAirList. However, your external software should make sure that the playlist is actually 24 hours or more long, not less. If it’s only 23:55:00, you will end up with a gap. Even when you choose to let the event run at five minutes to midnight, use the “append playlist” action, and the new playlist happens to be 23:55:00 as well, the gap will simply build up and will be noticable the next night.

Personally, I would use the “load and play playlist” action at midnight, and add another “append playlist” action into the same event, using some fixed emergency playlist that is simply appended to the daily playlist each night, and that will bridge the gap if there happens to be one.

I believe Charlie Davy has a mAirlist/SPC video on his website. Also, I think this at least some of this info is posted on the mAirList Wiki.

As somewhat of a “mAirList newbie” myself, I would add that the mAirListDB is fairly easy to use and you might wish to consider it. But If you decide to use SPC, then that is easy enough: as for hourly playlist loading, you would simply create a single Event in the Event Schedular (which covers all hours) to Append Playlist. mAirList will add playlists around the clock. That’s it! :wink:

Regards, Alec

Station Playlist Creator will ouput playlists by hour, day or week (or it did the last time I used the pro edition). Check in the run options.

mAirList should load these as a edithourly/daily/weeklyedit event.

Kind Regards Tony