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 Radiologik
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 from the iTunes playlist. Most
times you won't need minimum or maximum time values
but they do work for pick.
- Fill
will select tracks from the iTunes playlist attempting
to fill to the minimum 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
Music
Categories
If you are approaching this from the perspective of other
radio automation software, you might be asking how Radiologik
supports the idea of music categories. Although Radiologik
doesn't use the term categories for music, the actual ability
you have is actually better than the traditional segregation
of categories.
Simply put, categories are iTunes playlists. More specifically
categories are exactly how you define what your iTunes
playlist shows. Since each pick or fill command can use a
different playlist, this is how you accomplish the alternation
of categories.
A simple way to categorize is to use the
Comments in the tags in iTunes to put your category
assignments. Then have your smart playlists match rules that
select those comments.
So I don't repeat songs too soon I have it only show a
percentage of songs with this comment. In the case above I
have 400 songs with the comment "ModernMix" so I choose to
show 25% of the least recently played which is 100.
Smart Playlists are better than
categories
Playlists can be extremely specific or very
general. They are a collection of attributes.
A song can be in more than one smart playlist at a time.
Here's an example of being both specific and general. I have
the following comments in my music:
TranceVocal
TranceInstrumental
I could can have 3 smart playlists. One picks TranceVocal,
another TranceInstrumental, and another can just look for
'starts with Trance' to get both.
Here's another example with tracks with the following
comments:
RockVocalMale
RockVocalFemale
RockInstrumental
Now think of all the ways you can make playlists out of just
that...
All Rock
Rock Instrumental
Vocal Rock
Rock Vocal Female only
etc.
With your scripts having different patterns of picks and fills
choosing from different smart playlists, you can mix up all
kinds of patterns of playlists through an hour for many
different clocks (segments). You can run these clocks at
different times of the day and even different depending on
weekday.
Special Playlists for rotating
iTunes playlists and silence breaks
There are two special playlists which appear at the top
of the playlist menus which are just in Radiologik Scheduler
and not directly from iTunes
•Break (Silence)
Use this playlist with a pick and an interrupt to place a
5 second silent audio file in DJ. This can be used to
perform an action such as an interrupt to go to silence
for a break, for live content, satellite or something
else.
•Rotated Playlist
You can create a group of iTunes playlist that are
numbered and have Scheduler use a rotation through those
playlists. You can then use that rotated playlist to have
iTunes play the playlist at the start time or you can use
the •Rotated Playlist in your script.

This would work if you have 45 iTunes playlists like:
Classical 1
Classical 2
Classical 3
…
Classical 45
The rotated playlist shown above that will play next is
"Classical 2" and at the point at which it is either used in
a script or used to play this playlist in iTunes, the text
in that field will change to "Classical 3/45". It will
continue until it plays "Classical 45/45" at which point it
will increment back to "Classical 1/45".
Command
Attributes
The next field is for single letters representing the
attributes. Normal command
attributes for music are r=random, u=unique, a=artist/title
separation, and h=hour avoidance shown next.

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 ', ' featuring ', ' with ' and ', ' 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. Parenthesis are removed before making
comparisons.
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 from the "•Break
(silence)" playlist to place 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 length of the segment.
Minimum, Maximum, and
Exact time
searching
You can set a min or a max, both, or nothing for min and
max.
Min and max times are minutes relative to the start time.
These times are cumulative times for the whole segment,
not limited durations for each script line. If our program
start time is 3:00 PM then a min of 16:15 is 3:16:15 PM.
If your program starts at 3:30 PM then an min of 16:15 is
3:46:15 PM.
If you set a min, it says, just make sure the track you
pick or fill exceeds this number of minutes and seconds
into the program segment.
If you set a max, it says, just make sure the track you
pick or fill with doesn't exceed this max into the program
segment.
If you set nothing for min and max then 1 track is picked
without regard to time. Fills will work like picks when
there are no min or max values.
And if you do both min and max then you are putting both
constraints on your pick or fill. But beware not to give
it a constraint that it can't accomplish such as a min and
max too close in which case it will have to fail that
script line command if it can't find anything short enough
to fit.
However if you
use a min and max that are identical like min 50:00 max
50:00 it will search for a track to get to that exact
second.
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 position
closer on the over side but in most cases this will still
be the best position of the top of the hour.
TOTH works for the top of hour at the beginning of the
segment for a segment starting at the top of the hour. It
finds the first top of the hour encountered when a segment
starts at the bottom of the hour. If your segment is
multiple hours, the TOTH will find the closest top of the
hour relative to where it currently is in time in the
script. But it will not find the TOTH of the next segment.
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
energizing 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:00 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 proceeding 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
Announcements 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 announcement 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.
24 hour time
Use files
1200.aif - 2359.aif for 24 hour time or AM/PM
distinction. If it is 12:00 noon or later, it looks for
1200.aif and up and if it doesn't find that, it will to
look for 0000.aif.
[date] Date matching