Song separation + Scheduling with Language

hi!

I’m getting the hang on using the scheduler, but I’m still lost when trying to use some more advanced scheduling. For a yearly charity event, I need to generate quite some playlists with english, dutch and french songs. Al these songs are in virtual folders (A-Rotation, B-Rotation, 80s-A, 90s-A and so on). In the French-A folder there are old classics, but also new songs. All songs with a different language than english are tagged with their language. I want to have the scheduler pick only a few dutch and french songs per hour and have them separated with songs in the same language. Get it?

But I don’t have a clue how and even IF i could manage it. I now have thought of a workaround by giving the french songs a blue color and the dutch a orange color, so I can visually see it when checking the playlists, but if would be awesome if I could automate it in some way.

I could make a format where for example the 8th song is french and the 12th is dutch (by using a filter) but that would be to rigid for my taste. But maybe this is just to advanced for the scheduler? (which is awesome by the way!)

Grtz
Thomas

1 Like

This is beyond the scope of the Mini Scheduler.

There is a big problem about this kind of constraint, actually any kind of constraint on the attributes in the songs of the resulting playlist (“No two female artists in a row” is another example):

For a 16-song template, it can easily happen that the scheduler picks 15 perfectly matching songs, and then for the 16th song, there is no candidate that satisfies all constraints, and the scheduler has to revise the decision for the first 15 songs, possibly going all way back to the start. (Actually it can happen that it tries all possible combinations for songs 2-15 only to find that it should have picked a different song for position 1.)

So in the worst case, the scheduler has to try all possible combinations of songs for all positions. You can imagine how long that takes. And even worse, when you have 10,000 songs in your library, and you add another song #17 to your template, the scheduling will take 10,000 times as long as before! So there is exponential growth in computing time.

These problems are called “NP-complete” in theoretical computer science, and though noone has found a formal proof so far, it is widely assumed that there is no efficient algorithm that can solve these kind of problems in acceptable time.

That’s why the Mini Scheduler never goes back once it has decided to pick a particular song. It will always keep it, and if there was support to specify such constraints as you mentioned, there is a good chance that it will not be able to find a matching selection of songs, even if there is one.

How do the “big guys” (professional music scheduling software) handle this problem? Well, they have sophisticated approximation algorithms that find a “fairly good” playlist (though not perfect), but in acceptable, non-expotential time. These algorithms have been developed by music scheduling specialists over years.

The Mini Scheduler is “mini” and always will be. If you want more, there are several (expensive) third-party options.

Or just schedule that by hand, if it’s only once a year :wink:

1 Like

I understand completely! I’ve worked with the big boy software for quite some time now (professionally), but never thought about everything under the hood, that’s why I really appreciate your answer!

I’ll find my way :slight_smile:

Cheers!

There might be a way within the limits of the mini-scheduler to do the trick I think. First of all you will have to tag all English songs with an English attribute, with mass-edit this won’t take too long.

Music Block 1: 2 songs, attribute English
Music Block 2: 3 songs, 1 Dutch, two English. Mode: Randomly pick from the list of folders/items
Music Block 3: 2 songs, attribute English
Music block 4: 3 songs, 1 French, two English. Mode: Randomly pick from the list of folders/items
Music Block 5: 2 songs, attribute English
Etc.

Now the dutch song will be scheduled as third, fourth or even fifth song, separated by at least two English songs until the French song, it might also be separated by 6 English songs until the French song. This won’t be too rigid I think.

Another possibility: use !English every now and then as an attribute. Say you have onlay English, Dutch and French songs, this way you know a non-English song will be picked. Downside of this: you might end up with only French and English songs in an hour.

Hope this might help a little.

1 Like