Contents

Developed by Jay Lichtenauer
© 2007-2008 MacinMind Software

Radiologik Scheduler Manual
Program Icon
Radio Automation Scheduler for Radiologik DJ


Overview


This documentation is not yet complete. This release of the Scheduler component of Radiologik is a public development build of the features of Radiologik Scheduler Basic. This version expires on January 15, 2009. It offers picking and filling from iTunes playlists, Top of the Hour figuring for IDs, artist separation, and DJ preference set setting. Basic is a free complement to Radiologik DJ.

Radiologik Scheduler Advanced will sell as an addition to Radiologik DJ and will feature many other addtions such as time announcements and voice tracking.

Latest version of Radiologik is available here:
http://macinmind.com/Radiologik/Download

Questions, bug reports, and feature suggestions can be emailed to jay@macinmind.com


Requirements


- Mac OS X 10.3.9 or higher
- iTunes
- Radiologik DJ 1.2.7 or higher
- Display of 1024x768 or higher


Basics of Basic

What it does
Radiologik Scheduler chooses tracks from playlists in iTunes with a little bit of extra logic to figure out times and artist separation. It builds these segments in 30 or 60 minute blocks anywhere inside of a week schedule. The resolution of the script statements are in seconds.

Playlists, and particularly smart playlists in iTunes, give programming tracks enormous power. Because Radilogik DJ tells iTunes when it plays a track, you can use smart playlists to be sure you are not playing certain songs again for a specified period of time. This can give you a reservoir of tracks that have not played recently but enough tracks to still pick at random, effectively giving a random rotation. You can use many smart playlists for the same segment, giving you the ability to set when to play fast, medium, or slow songs or how often to play tired songs versus new songs that you may want to play more often.

Radiologik Scheduler runs the appropriate script 20 minutes before the start time and sends that set of tracks and directions to Radiologik DJ's program queue.

The Segment

Use the + button to add a segment. When you have a segment selected and you press the + button, you'll get a new copy of that segment. You can create segments of 30 or 60 minutes and assign that to any 30 minute interval of any day of the week. You can name it anything you want. The name is for your organizational purposes. You can reorder your segments by dragging them around in the list. This has no bearing on how it schedules and is also for your own organization. Then you can choose the artist separation desired and the preference set that should be set for the DJ for each segment. For instance, my Rock segment I like 15 track artist separation with 1.8 second overlaps but for my softer classical which has a lot of Bach, I need the artist separation lower at about 10 since it's hard to avoid Bach and I like the overlaps at just under a second since most of these tracks have a long buffer but I like all of the other pieces used elsewhere in the station to sound less rushed.

The Script
You can add and remove script lines using the + and - buttons below the script list. If you have an item selected, pressing the + button makes a copy of that line. You can remove multiple lines by selecting them and pressing the - button. You can also copy and paste lines.

Times in the script are relative to the start time of the segment so if your start time is 8:30 PM, 05:02 would be 8:35:02 PM.

There are two commands for Basic:
  1. Pick will select one track. Most times you won't need minimum or maximum time values but they do work for pick.
  2. Fill will select tracks attempting to fill to the minumum time without filling past the maximum time. It requires a minimum time or else it will assume the minimum to be and outside value of 15 minutes past the length of the segment.
The next field is for single letters representing the attributes
This script line only runs if the previous line failed. This is a good choice when you need to change not just the playlist but the command. eg. from date matching to pick.
Scheduler chooses tracks at random from the playlists
Checks to make sure the track has not been programmed in the segment being scheduled nor currently in queue in the DJ
Checks to make sure the same artist is not chosen within a certain number of tracks regardless of whether other script lines had this attribute
Tell the DJ to tick the Station ID button when this track is played


The last column is where you specify the playlists and fallback playlists. The scheduler will use the fallback playlist if too many errors are encountered or if there aren't enough items in the playlist.

An interface is provided to help build script lines at the bottom right of the window which also serves as a reference particularly if you need to remember an attribute or exact spelling of a playlist. You can use the script field to type, cut, copy paste to reorganize and edit the scripts.

Interrupts
If you want to fade down the last segment or start from silence at the start time of the segment, then use 00:00 in the interrupt field along with the other parts of the script for that selected track or first of many tracks to play at that time.

If you want to fade down a segment to silence and not play anything at a specified time, you can make your last script with a 30:00 or 60:00 interrupt time (respective of the segment length) and have it pick a silent track from a playlist containing a short 5 second silent file. Make sure your minimum fill before the interrupt is enough to cover us to the interrupt. The scheduler makes a really good attempt to get all the times figured correctly but to be safe make your minimum something like 3 minutes extra past the overlap to make-up for any differences in the reality of playing. So you would fill to a minimum of 33:00 or 63:00 depending on the lenght of the segment.

Minimum, Maximum and exact time searching
If you put your maximum and minimum times too close together, you'll make it difficult for the scheduler to find a fit. I like to use about 3 minutes between these but your use may depend on your purpose.
However, if you set the minimum and maximum to the exact same time, you'll invoke the exact time searching feature. It will run through all the possibilities from that playlist for times that fall within 1 second after the time. If nothing is found or the tracks are excluded for other reasons such as artist separation, it will try again with 2 seconds, then 3 and so on until it at last tries 20 seconds. If that fails then it only uses the minimum time.

Top of the Hour figuring
Use "TOTH" in the minimum time field with a fill command if your segment starts at the top of the hour and you want to continue the same music format without interrupting at the exact top of the hour. This will find the best place to put a Station ID.

For the previous segment, make sure you have not completely filled the segment since each new segment can fill the short in the previous segment in figuring the best placement of the station ID. Consider where most of your song times are. To consider all songs between 5 mins and 3:30 length fill minimum to 55:00 and maximum to 56:30 for the last script line.

This function uses a search to find the best time fit to the top of the hour searching either side of the top of the hour in incrementally larger widths up to 10 seconds on either side of the hour. Failing that it falls back to looking at the track that crosses over the top of the hour to determine what the best position is either before or after the hour depending on how much the track crosses over the hour. If it determines before the actual top of the hour, it will place the next script line, say a pick from a station ID playlist and continue with the script. If it places the TOTH before the actual top of the hour, it is possible that the next script line will program a song that would have put the top of the hour postion closer on the over side but in most cases this will still be the best position of the top of the hour.

TOTH only works for the top of hour at the beginning of the segment for a segment starting at the top of the hour or for the first top of the hour encountered when a segment starts at the bottom of the hour.

Script Example #1
Script Example 1

This script above for 9:30 PM starts with an interrupt at the bottom of the hour. It is a 30 minute segment. The Station ID plays at exactly the bottom of hour (not legally required but still nice since in my case I'm changing formats) and is followed by a single file I have in the ModMixIntro playlist. After that it fills from between 9:38 and 9:41 with engergizing songs from the ModernStarter smart playlist in iTunes. I put in a sweep to let people know what they are listening to and continue with the music and another sweep. I stop short of filling to the top of the hour at 10:00 PM since I want that segment to figure when to put the ID.


Script Example #2
Script Example 2

Here is a script above from 12:00 AM. This format ends at 1:00 AM. First we fill with Tired old songs as we approach the top of the hour at 12:00 AM, then ID and kick back into engergizing songs from ModernStarters. In this particular example I've included the fallback playlists which do not limit the number of songs by last played in case the original playlist runs dry because it only contains songs not played in the last 5 days. I've chosen to make sure my sweeps are different tracks using the "i" attribute but since my sweeps are all the same artist (the station) I don't want to use the artist separation attribute "a" on them. My sweeps generally run in a strict rotation since I didn't set the random attribute for them. I put some cross-promotions in for other segments (Old-time Radio and Sacred segements). At the end of the segment I put an interrupt time of 60:00 which is 1:00 AM to a silent 5 second track I have in the Silent playlist. The fade in the DJ is halfway over the interrupt time so if I have a fade down time of 6 seconds, it will start the fade at 12:59:57 AM and finish the fade at 1:00:03 AM, blending nicely with whatever is being played next by other software perhaps. If you want to fade to silence by 1:00:00 AM then make the interrupt short by half the overlap time, in this case use 59:57 as your value for a 6 second fade. If my next segment were in Radiologik, I would instead fill to a minimum of 63:00 and a maximum of say 65:00 or no value for maximum. This extra amount of track time scheduled for minimum will makeup for most any variance the reality of the playing time of the segment. The next segment's interrupt will do the interrupting.

Fallback procedures
If qualifying tracks cannot be found, Radiologik Scheduler runs through several fallbacks to help ensure it is programming something. For each fallback, up to 20 failures are allowed before proceding to the next fallback. The first fallback is to the fallback playlist if it exists and has items. If that fails then it tries turning artist separation off it is is on.. If that fails then it turns off unique tracks. If that fails, then that line fails. It will then start fresh on the next line.

If you make your minimum and maximum times too close together such as 30:00 minimum and 30:05 maximum, there's a really good chance the scheduler will not find a track to match.

You can have a specific line that runs on in the case a script line fails. Add a script line after the potentially failing script line and use the failover attribute to indicate this line should only run if the previous line failed.

Week View
This is a useful reference to see if you've filled all of the week you expect to and also to check for conflicts of segments. If there's a conflict, it will show on that block in this view.


Advanced features

Advanced features are available when Radiologik Scheduler is running in Advanced mode. Either Advanced or Basic will show in the title of the scheduler window to indicate which mode it is running in. You are asked which mode you want to run on the first launch but you can bring this dialog back up by holding option when launching Radiologik Scheduler.

The advanced features currently implemented are Time Annoucements and Date Matching. Voiceovers will be implemented before Radiologik Scheduler is made final 1.0.


Time Announcements
Use the 'time' command to place a time announce marker in the script like you would a pick or fill. Time Announce will only work if the AIFF files ranging from 0000.aif for 12 o'clock to 1159.aif for 11:59 are in ~/Documents/Radiologik/Time Announce/. You can create these files yourself in your own voice or download them in my voice from http://macinmind.com/Radiologik/Download/. Time annoucment files are dynamically selected by Radiologik DJ to always be the correct time. Radiologik DJ will announce 5 seconds or so before the next minute as the next minute. Time announce tracks will always have their overlap set to zero seconds to make sure they are never overlapped by other content.

Date matching
Use the 'date' command to do a search for the matching day of the year in the playlists indicated in the command. Dates are searched in two formats: YYYY-MM-DD and YYMMDD. The year is only used as a placeholder to determine it is a date format and the year itself is not matched. The search looks for these patterns anywhere in the title so you can have text before and after your date and it will still find it.

Example titles: 'This day in History 1958-03-29' will only match on March 29th of any year. '520404 (36) Fools Gold' will only match on April 4th of any year.

If no match is found it resorts to the fallback playlist and if no match is found there it fails the script line. You'll need to have other script lines ready to make up the time should it fail.

Voiceovers
Voiceovers are done using the intro command. This command has no settings and should be placed in the script before the line that picks the track you want to voiceover. The command that follows can be pick, fill, or even date.

The intro command will look to match the artist and title in a pattern of artist-title.aif in the folder ~/Documents/Radiologik/Intros/. If it doesn't find this it looks for just the artist in the pattern artist.aif. So you can have a specific voiceover intro file for an artist and song or a general fallback to just announce the artist. If neither of these are found, no track is placed. The intro files should be AIFF files with the aif extension.

When the intro file is brought into the DJ after it is scheduled, it is set with voiceover on so you'll see the checkbox in the VO column is on. With this box checked the voiceover file will overlap the next track no more than the ramp time on the next track. It will also duck the next track while playing by the amount set in the preferences. Usually 20-40% is good. For this reason you'll need ramp times set properly for your tracks or else if they are zero, the voice over will not duck and overlap the next track but just start it when the voiceover is done playing. In some cases with vocals that start right away or certain genres, this would be the desired behavior.

Outros are selected the same basic way using the outro command which should be placed after the command in order to announce the last track. The out command will look to match the artist and title in a pattern of artist-title.aif in the folder ~/Documents/Radiologik/Outros/. If it doesn't find this it looks for just the artist in the pattern artist.aif. Like the intro you can have a specific voiceover outro file for an artist and song or a general fallback to just announce the artist. If neither of these are found, no track is placed. The outro files should also be AIFF files with the aif extension.

One caution: When placing an outro just before an intro, be sure that the outro is at least one second and that you have added at least the default overlap of silence to the end of the file so that the intro isn't talking over the outro and also so that the outro is long enough that it doesn't require a triple-segue on the 3rd player thus interfering with the intro being a voiceover on the 3rd player.


Tips

If you need your Mac to be exactly on time. See Apple's support article on Network Time clients lose synchronization


Radilogik File Locations

Files for Radiologik are stored in the following locations:

Preferences
~/Library/Preferences/Radiologik/
Database & Saved States
~/Documents/Radiologik/
Scheduler
~/Documents/Radiologik/Schedule/
Time Announcements
~/Documents/Radiologik/Time Announce/
Voiceover intros
~/Documents/Radiologik/Intros/
Voiceover outros
~/Documents/Radiologik/Outros/
Logs
~/Library/Logs/Radiologik/


Version Notes

Known Issues
Changes to 1.0b22 (2008-11-30)
Changes to 1.0b21 (2008-10-06)
Changes to 1.0b17 (2008-09-19)
Changes to 1.0b16 (2008-09-08)
Changes to 1.0b15 (2008-09-04)
Changes to 1.0b14 (2008-09-01)
Changes to 1.0b13 (2008-08-28)
Changes to 1.0b12 (2008-06-27)
Changes to 1.0b11 (2008-05-14)
Changes to 1.0b10 (2008-04-05)
Changes to 1.0b9 (2008-03-29)
Changes to 1.0b8 (2008-01-30)
Changes to 1.0b7 (2007-12-16)
Changes to 1.0b6 (2007-11-06)
Changes to 1.0b5 (2007-09-15)
Changes to 1.0b4 (2007-08-07)
Changes to 1.0b2 (2007-07-13)
Changes to 1.0b1 (2007-07-08)
Legal

Radiologik Scheduler Basic is freeware.

You can make copies of this software and distribute them as long as the software is not modified in any way and is included with Radiologik DJ

You may not sell copies of this software. You may not rent, lease, or distribute this software as part of a sampling package without the permission of the author. You may not decompile, disassemble, reverse engineer, copy, or create a derivative work from this software.

Limited Warranty/Limitation of Liability:

This software is beta and is free of charge.
In no event will the author be liable to you for damages, including any loss of profits, lost savings, or other incidental or consequential damages arising out of your use of or inability to use the software.

Customer Support:

I will attempt to answer technical support requests from registered users, but this service is offered on a reasonable efforts basis only, and I may not be able to resolve every support request. I can support the software only if it is used under conditions and on operating systems for which it is designed.

General:

If any provision of this Agreement is found to be unlawful, void, or unenforceable, then that provision shall be severed from this Agreement and will not affect the validity and enforceability of any of the remaining provisions. This Agreement shall be governed by the laws of the State of Illinois.