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, 60, 90, or up to 600 minute
(5hr)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, 60, 90, or 120 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.
A segment can be set to many different times so the segment can be
reused like a template. Set the start time and the days of the week.
You might come up with a few segment "templates" for a single format
station and then repeat that script for various times. This doesn't
repeat the content, it just uses the same script.

You can give a segment a start and/or stop date for instance if you
have a particular program you want to run only in a particular season.
For each segment time you can choose which weekday of the month such as
2nd and 4th Tuesday or you can alternate weeks by using Even or Odd
weeks of the year.
Use the week view tab to check that you've filled the schedule as
expected. It will show if your segments conflict.

The program properties will also indicate exactly where the conflict
exists:

Script
Commands
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 three commands for Basic:
- Pick
will select one track. Most times you won't need minimum or maximum
time values but they do work for pick.
- 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.
- Load
will add the selected DJ program file which should be stored in
~/Music/Radiologik/Programs/ in order to be found by the scheduler to
put in the Playlist/Program menu
Script Attributes
The next field is for single letters representing the attributes

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.
Artist separation uses substring searches using separators like
' & ', ' feat ', ' feat. ', ' ft ', ' ft. ', ' f. ', ' vs. ', ' v '
and ' featuring ' of an artist tag to better detect the same artists
with guest artists in the artist tag. Substrings are omitted when
'orchestr' is found in the second part.
Checks to make
sure this track hasn't played at this same hour yesterday nor this same
hour of this day last week
Tell the DJ to
tick the Station ID button when this track is played
This script line
only runs if the previous line succeeded. This might be a good choice
where you have a track that only makes sense in relationship to the
previous track.
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.
Turns the Line in
on or off with the start of the first track played from this script line
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

This script above for 9:30 PM starts with an interrupt at the
bottom of the hour which here is 00:00. I use an interrupt precisely
because nothing was playing in Radiologik before this segment as other
software in the station is running. It is a 30 minute segment leading
to 10:00 PM. 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 Min 08:00 and Max 11:00 (9:38 PM and
9:41 PM) 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.
It is important to leave enough room for the next segment to have a
chance to find a fit for the top of the hour (TOTH). The room I leave
at the end of this segment is a range in which many songs can be fit to
the second to the TOTH. I looked through my playlist "ModernMix"
sorting it by time in iTunes to survey my song lengths. I found that my
inventory of songs covers every second from the length of about 3:00 to
5:0 so I decided on a range of 24:30 (5:30 away from TOTH) to 26:45
(3:15 away from TOTH) as my min and max times. I gave this extra room
because the outro and sweep that follow it will take probably 15 more
seconds and get us within the range of perfectly fitting a song to the
top of the hour.
Script Example #2

This script is for 10:00 PM. I start with an intro for the next
song and then the fill to TOTH to get us a track that gets us as close
as possible to the exact second that is 10:00:00 PM. Then we do the
time announcement and the ID and then back to the pattern of music
fills, ads sweeps making sure to keep us somewhat on-time by using
fills with min and max ranges about the size of a song to a half song
length. The last fill is min 55:15, max 57:00 which will allow lots of
possible perfect matches from my ModernInst playlist for length to get
to the top of the hour again in the next segment.
Attributes rua (random, unique tracks, artist separation) are normal
good practice for programming music tracks. But you probably want some
of these off when it comes to ads and sweeps since maybe all your
sweeps have the same artist such as your station name. But I keep on
the u (unique) attribute for my sweeps since I don't want them
repeating if they don't have to.
Script Example #3

Here's a script where I want to end radiologik playing. Again I fill
from the previous segment to try to get to the top of the hour but in
this case I've done it differently by using the same time for min and
max of 00:00. Unlike the TOTH which will go either side of the hour if
it can't match the exact second to the hour, this will instead allow it
to schedule beyond the hour so we make sure we don't have silence
before the exact top of the hour segment. If the song happens to go
longer than the top of the hour, the next command to pick at 00:00 with
an interrupt will fade the previous track in DJ at the fade rate
determined in the preferences in DJ.
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, the next fallback is to turn
artist separation off if is is on and that fallback step is allowed
- If that fails, the next fallback is to turn
hour avoidance off if it is on
- If that fails, the next fallback is to turn
off unique tracks if it is on and that fallbacks step is allowed
- If that fails, then that line fails. It will
then start fresh on the next line. And optionally the next line can
only run if it is a fallback by selecting the failover attribute
checkbox for 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.
Failover lines only work after failed pick,
fill and date commands.
AppleScript
Choose the AppleScript from the menu at bottom of the Window. That
Applescript is run when the first track programmed for that script line
plays in DJ. Place your applescripts in ~/Music/Radiologik/Scripts/ for
them to appear in the menu. Use the Refresh Menus command in the File
menu to update all menus for changed items.
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] 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 ~/Music/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] Date matching