Music scheduling in mAirList 5

Hi
A question about the “fill with music” item. For simplicity, say I have a jingle to start the hour and a jingle to finish. I want the rest of the hour filling with music. Again say this is now 58m. Will the scheduler pick the songs to exactly meet 58m, or will it just provide enough songs. What I am trying to avoid is a song starting at say 57:33 but it actually lasts for 5:00 so a fair chunk of it will be faded out.
Thanks
Al

For the time being, it’s “just enough songs”.

Trying to find an exact match, or the optimal selection, is a very complex problem: https://en.wikipedia.org/wiki/Knapsack_problem#Computational_complexity (In a nutshell, you cannot find the optimal selection without trying all possible selections, which means exponential time.)

But I do see the chance to make the algorithm a bit more clever, without making it too complex. For example, for the last song in the block, it could try to pick the shortest one available (of the pool of songs that satisfy all selection and restriction rules), so not the 5:00 one if there is a shorter one available.

The guys from the professional scheduling packages (Music Master, Powergold, Selector, …) have some very clever approximation algorithms for this. But I don’t. That’s why it’s the “Mini Scheduler”.

Hi Torben

Thanks for the reply and this “But I do see the chance to make the algorithm a bit more clever, without making it too complex.”

I will investigate it. But let me elaborate on the last point, and the kind of optimatization that would be possible, and the kind that would not:

Imagine you have 4 minutes that need to be filled. If there is a single candidate song that is just a bit longer than 4 minutes - perfect, just pick that one, and everything is fine. (Generally, if there is more than one song that is longer than the required 4 minutes, the scheduler should pick the shortest one from that pool, assuming that all candidates have the same penalty score wrt. artist/title separation.)

But the real problem starts when there is no song that is 4:00 or longer. In other words, when the scheduler has to pick at least two songs. The knapsack problem, translated to music scheduling, states that you cannot find the “best” subset of songs (lowest overflow) without trying all possible combinations of songs. For 4 minutes, and perhaps a folder with 20 items or so, this is not much of a problem. But imagine a period of 30 minutes to be filled, and a pool of 15,000 songs…

As mentioned above, the pro scheduler packages have approximation algorithms based on years of research - definitely beyong the scope of the Mini Scheduler.

What should be possible:

  1. For the “last song” case, check if there is a single song that fills the remaining gap, in other words, avoid picking the 3:50 song if there is a 4:01 one.

  2. As we cannot avoid any overflow for the last song in general, offer an option to distribute the overflow over all songs in the block, in other words, rather cut 30 songs from each of the four songs in the blocks, than 2 minutes from only the last one.

Thanks again.
I have kind of found a way to minimise the song being cut off by using the attached template. I must stress that I have only used it for 1960s music, which has a lot of instrumentals. The “rules” being: try not to fade an actual song too much, however, it is fully acceptable to fade an instrumental track at any duration.
The template (so far) is:-
Fixed Start of hour.
Specific item (jingle) with a hard fixed time 0f 00:00:00
Fill with Random items from folder = 60s. With Normal timing.
Random item from instrumental folder with a Soft fixed time of 00:58:00
Specific item (a jingle) which is Backtimed
End of hour marker.

Although this indicates an under-run, it actually works in practice.

The results - either the last song fades reasonably and then the fixed jingle, or the last song completes in it’s entirety and the instrumental fills the gap up to the fixed jingle.


60s template.JPG

Yes, that’s a possible solution. Edit item #4 (the filler) and enter 00:02:00 as the estimated duraion, it will make the Underrun go away.

(At the time you set up the template, mAirList does not know the duration of the song that will be picked later - so you have the option to enter an “estimated duration” to make a rough calculation on template-level possible.)

I have investigated the “last song” optimization in the meantime. The updated algorithm works quite well. There are some interesting side effects though. I have some rather long songs in my pool, 6 minutes or longer. With the new “try to find a single song that fills the gap” policy, the scheduler tends to pick one of those very long songs, rather than two 3:30 songs. That’s the downside of this “greedy” approach. Perhaps we should make the whole thing optional. I’ll keep thinking about it.

I have noticed that when an Error is scheduled in the playlist, because a folder is empty for instance, the transition jingles are miscalculated. I have set up jingles every 3 songs. When an error occurs after the third song, no jingle is scheduled and the count starts again. This way it takes 6 songs before a jingle is played. Not a big issue but you might want to have a look at it.

Hello,
I have a schedule question.
I use the following settings and music blocks.
The first music block (#2) is news, with opener and closer and this will create a container.

The problem is that the last track from block 2 will cut off and the new track from block 3 will start.
How do can i get a complete hour with music and the music will not cut off on the half hour or on the end of the hour?


Screen Shot 2014-12-11 at 13.11.18.png

Screen Shot 2014-12-11 at 13.11.59.png

Screen Shot 2014-12-11 at 13.12.10.png

Unless the songs happen to have a total duration of exactly 60 minutes and 0 seconds, at least one song must always be cut off.

By setting the backtimed flag on block 3, you propagate the fixed time of the end-of-hour marker to the first item of block 3, so that item is now “fixed” and will cut off the last item of block 2.

If you want to cut off the last item of block 3 instead, set the timing of block 3 back to normal.

If you don’t want any song to cut off, set the timing of start-of-our and end-of-hour to soft fixed time, so it will play the last song in full before starting the new hour (not at xx:00:00 though).

I just wanted to make a small edition to the scheduling that I’ve found.

If you have a virtual folder with one item in it, and include that with a bunch of other folders in the playlist generation, when it comes across that folder with a single item in it, it will select that item every time instead of obeying the non-repeat within x number of hours rule.

In the image above, Electronic and Progressive House folders have only one item in it, so when the playlist generator cycles through the folders, instead of obeying the non-repeat rules and moving on to the next folder, it selects the item as I mentioned above. This results in a track repeating 5 times an hour.

To work around this I’m going to set-up an A and B playlist, which just adds additional work to music management, but is the quickest solution.

My mistake was assuming that when you include a bunch of folders in the template, it would treat all the items in those folders as one master list of music to randomly select from.

Just thought you might want to know.

Also, I found this post more interesting and useful than the Music scheduling tutorial in the wiki. Perhaps someone could add the info and pictures from this thread to the wiki, to help other newbie users like myself in future.

Thanks for the hint. You are right, when you use “randomly pick from the selected folders”, the scheduler will first pick a folder - regardless of any separations -, and then choose an item from it.

On the pro-side, you can include a folder multiple times in the list to give it additional weight.

The music scheduling tutorial in the Wiki hasn’t been updated for v5 yet.

You could also use this in your advantage. I have a folder for the Top of the Hour with only one item: the current Top of the Hour jingle. This has to be picked every hour and the separation rule should not have an effect, which it doesn’t.

When a new Top of the Hour jingle is made, I only have to replace the jingle in one place: the TOTH folder instead of changing all music-templates.

One other question, how do I do a playlist with a soft start. Example, at the moment I’m automating 24/7, so I would like the last song playing in the previous hour to finish playing, prior to the next hour starting.

I thought I could do this by setting the Start of hour and End of hour makers to Soft fixed time, but it does seem to do it. The next hour always interrupts the last song in the previous hour.

Music I’m playing is dance/club music, so track times are anything between 4 and 7 minutes long.

Strange because that should work. Basically your hour template should look something like the attached screenshot: the first song should start only when the last song of the previous hour has finished.


mairlist.jpg

Use “Append database playlist” as the action for the hourly event, not “Load and play database playlist”, because the latter will always start the first item immediately.

When you use “append”, you can also execute the event a few minutes before the top of the hour, say at :55:xx - just don’t forget to tick the “load the playlist for the next hour” option then in the action settings.

What about if you’re doing an event that last 2 hours, such as a stream spanning 1hr 55 minutes? I’m planning to do just that tomorrow, to repeat the live internet feed from the FM radio station I’m doing a show on Friday, as a test case.

Ok I created a 2hr event. It features a Stream item which I’ve added to the music library to the exact length I need. I also amplified the item by 2db as the stream is a little quiet. Interesting to see if that works. See below:

I added that to the Template Assignments, but as it is a 2hr event I only added it to the first hour, and left the second hour as my standard hour template. That way it shouldn’t (he says) repeat itself.

The playlist generation went a little strange. If I add an Opener and Closer of a jingle to the fixed Stream item, the generator will place the two jingles before the fixed stream item. So instead I added an Opener only, and put in a separate Jingle item to play after the stream had completed. Here’s the corrected playlist generation output:

I ran a dummie test at 1am for 1:55:50, and other than tweaking the time by a few seconds, it executed perfectly. I’m recording it via aircheck to see how it goes at the top of the next hour, and ensure the stream shuts down as expected. I’ll report back with the results.

Think I might make a cheat sheet of tips, and share that as a PDF. This software surprises me the more I use it :slight_smile:

In reply #60 I have mentioned that the transition jingles are miscalculated when an error occurs when a folder is emtpy. The count stops and starts all over again. The last two hours no jingles were scheduled due to this issue which is not desirable.
Could you please have a look at this one of these days?

Sorry, I have a handful of these “minor glitch” issues on my list, all of which need a little time and effort to reproduce and eventually resolve them. Please have some patience if I can’t deal with a particular problem immediately. It is perfectly OK to remind me after a while.

Regarding the issue from post #60, please try build 2559 which I will upload this evening. It should resolve that issue.

No problem Torben, just wanted to make sure it wasn’t missed somehow.
I just updated my software to the 5.1 beta, I don’t think the transitionproblem is solved in this beta version? No problem, I’ll have some more patience.