Rotate Cuts

I did a search for “rotate” and found an old post from Tony (,543.msg2691.html#msg2691) but the subject hasn’t came up since… A colleague has asked me if there is (or could be) some form of Rotate Cut feature on the Cartwall - either random or sequential. I suggested the “cart stack” feature but this stops on the last item thus requiring a re-load of the cart set :frowning: I think their long term plans are to fire identical-length items as split audio (ie: Cart1 is a random 5sec sweeper, Cart2 is 10sec etc).

This feature is built into EncoDAD - every audio cut has an ID (it’s a database format) so you edit a button, set it as a Rotator and then select the Cut IDs. Each press of the button triggers a random cut from the list. Perhaps this could be achieved via a script ? We have a “Playlist Randomizer” script, so perhaps there is a way to do this with the Cartwall ?

Interesting idea.

I suspect that this will be easier to do with the DB in mAirList 3.0. For example, set up a ‘category’ of (say) SplitFeedRotation with maybe six or seven cuts in it; then have a means to ‘inform’ a Cartwall player to either request a random cut from that Category, or maybe request the cut from that Category which is the least recently played. Something like that, anyway.

Not sure how feasible it would be with 2.2, though.


Hi Cad,
Yeah - I thought as much… No chance of a script reading a (m3u?) file and pulling a random line from it ?

Not sure if this will help on carts but my original post on this was for a feature similar to that in ZaraRadio.

This uses a playlist of items saved as .rot. This then rotates the cuts until all have been used or shuffled in that playlist.

Its quite handy if you have no need of a scheduler. Just build a series of .rot files, 1 for each category of audio and use these .rot files in a master playlist. Random cut each time.

Will this help?

Kind regards Tony

That’s right - I remember doing the same with Raduga. I think you put the path to the Jingles folder and ended with .dir and it’d play a random file from that folder.

It’s possible I guess, but I’ve never tried reading/writing text files in Delphi.

The Tobasco Clockwheel program uses a technique like this to produce playlists. You maintain a bunch of M3U files and give it a list of an ‘hour’s worth’ of Playlist names. When it encounters one, it pulls the top item from that M3U then replaces it at the bottom of the list.

But, having picked a ‘random’ file by whatever means, I assume this would then need to be at least loaded into (e.g.) a Cartwall Player if not played as well. Is that right?


[quote=“tony wilding, post:4, topic:5290”]EDITED; Not sure if this will help on carts but my original post on this was for a feature similar to that in ZaraRadio.

This uses a playlist of items saved as .rot. This then rotates the cuts until all have been used or shuffled in that playlist.

Its quite handy if you have no need of a scheduler. Just build a series of .rot files, 1 for each category of audio and use these .rot files in a master playlist. Random cut each time[/quote]

Tony, I’ve been using ROT cuts in ZaraRadio for 2 years now and it works a treat, but it’s not random system.

You can however randomise (randomize) the cuts/tracks/material prior to making them into ROT files but they run through the sequence of “play this track and move it to the bottom of the list” so if you have a ROT file with 50 tracks the first track will then replay as 51, 101, etc., in the sequence.

For more information from the ZaraRadio site, check for a programming philosophy using rotation files.

I’m not wishing to be labelled a traitor and I can say that MairList is being developed precisely the way I visualise an ideal playout system should be… ducking for cover yet again…

Thinking more about this, it should be possible to use Action On Stop for the Cartwall player to run a script which will select an item (sequential) from an M3U and load it into that Cartwall player.

You would need one script per Cartwall player because the Player number would need to be hard-coded, but it should be possible. I’m being a bit cagey because I have no clue (at present!) how to read text files line-by-line in Delphi, but I assume that’s fairly easily possible.

I don’t think there’s a ‘pick a random number’ statement in mAirList Script, though I may be wrong. That’s why I said sequential above.


This is actually a feature of mAirList 3.0. The cart players will always use a stack (even if there’s just one item loaded into it), and you can rotate through the items using a new pair of buttons or a set of PREVIOUS/NEXT commands, respectively. Screenshot attached.

PS: Yes, the stack will go back to the first item when the last one has finished.


Stacks look good in v3 - Any news on a release date?

As currently if you have say 3 items in a stack. each will play and then eject from a stack.

It only leaves the last item added (to a stack) in the cart - unless I have a setting wrong in config?

Kind Regards Tony

Yes, that’s how it works at the moment: When the item currently loaded has finished, mAirList looks if there is something in the stack. If so, the current item is closed an the first item from the stack is loaded, removing it from the stack. If the stack is empty, the item remains in the player - just like you hadn’t used the stack at all.

Pretty confusing, actually, but well, there’s a light at the end of the tunnel…

Regarding the release date, apart from preparing mAirListDB (the “audio library” features are almost finished) I have performed some urgently needed tidying of the code and the internal architecture, which unfortunately broke some of the existing features. I’m now in the process of fixing these bugs - probably with the help of a closed beta test during the next few weeks. After that, version 3.0.0 will be ready for release and public testing.

Well then, gentlemen …
[FX: rises from table and shuffles his papers into a neat pile]
(smiling) … as is so often the case, the good Herr Doktor is well ahead of us.
Good day to you, sir!

[FX: bows respectfully to Herr Doktor, then picks up his papers and walks out of the board room]

ANNOUNCER: Tune in for the next gripping instalment of The mAirListErs next Monday evening at nine o’clock!
[GRAMS: End title music to fade]


Greetings Torben…

Two things

As previously alluded to with rotational type files, will there be an option whereby6 rotational files will keep on rotating… an example would be perhaps two programme elements that you wish to rotate 1,2,1,2,1, etc.

Secondly, I see that you’re using the “~” tilde marker for crossfade? points… Have you contructed a stand-alone tilde tagger or is this just part of the file tagger internal to Mairlist?

Appreciate all your hard work…

Actually, Chris, it’s neither. It’s also optional and can be toggled in Config.

It’s merely support for files which already carry the iconic Raduga ~12 type of StartNext cue point in their file name, just before the full stop. When mAirList reads one of these for the first time, it can (optionally) set either Start Next or Fade Out (your choice) based on the existing ‘Raduga tag’ in the filename.

As far as I know (?), and I’m 90+% sure about this, mAirList can’t actually create that style of filename. To be honest though, an MMD (metadata) file is a whole lot more useful than a Raduga tag and is ‘non-invasive’ (= ‘doesn’t require “special” filenames nor mess with your files’ names in any other way [Myriad please note! :P]’).

I also very strongly suspect that mAirListDB will be able to populate itself to a large extent from your existing MMD files (at least, I certainly hope it will!).

Then of course, if you’re a programmer or have a tame one to hand, MMDs (like all mAirList data files) is just an XML file internally, so open to all sorts of code-based abuse and fun!


Thanks to Cad from our 24/7 support center’s night-shift for the excellent explanation :slight_smile:

The ~ feature was actually introduced for eldoradio who haven’t managed to switch their automated programs from Raduga to mAirList, by the way. mAirList can only read these “tags” but does not write them.

Of course, mAirListDB will be able to read MMD files. Just because mAirListDB will be an integral part of mAirList - when you import a new file into mAirListDB, the same file import code and options are used as when importing it into mAirList. All of your MMD files, ID3 tags, Raduga markers etc. will be preserved. Converting an OTF database won’t be a big deal either - the easiest way would be a small script which generates MMD files from the OTF database. Let’s see…

Chris, regarding your question about rotations - I presume you mean something like a pool of jingles which are scheduled one after the other and then again from the start. I think this should not be done “live” by mAirList (because it is not predictable) but should be the job of the database/scheduler - in fact, it’s the same task as music scheduling based on rotations.