Radiologik Scheduler Manual
Radio Automation Scheduler for Radiologik DJ
Overview
Online video overview and tutorials:
http://radiologik.com

Radiologik Scheduler is the companion application to Radiologik DJ. It schedules to DJ's program queue using iTunes playlists to allow a 24/7 fully-automated station. It can run in two different modes:

Basic (free)
Some of the basic abilities are the ability to pick single tracks or fill with multiple tracks from playlists sequentially or randomly, using artist/composer/album/title separation, interrupts, time matching to an exact second or as close as possible to the top of the hour, variable fallback steps when commands can't be perfectly met and failover script lines when the previous line failed, as well as assigning AppleScripts to any script line.

Commands:

- [pick] [fill] Choose tracks from iTunes playlists
- [load] Load pre-created programs

Advanced (extra purchase)
In addition to the above abilities, Advanced adds scheduling of time announcements, searching for files that match various date criteria, voiceover intros and outros which are context sensitive to artists or exact artist and name, and traffic for managing of spots/ads. Advanced mode can be tried for as long as you need to since it is not time-limited but does need to be interacted with at least every two days to confirm you are still trying it until you purchase and enter a registration.

Extra Commands:

- [time] Time announcements
- [date] Date matching
- [intro] [outro] Voiceovers
- [upnext] Up Next announcements
- [spot] Spot announcements/Ads

You can change the mode at any time by choosing "Change to Basic/Advanced" from the application menu. This menu item is not present if you registered since it only runs as Advanced registered.

The latest version of Radiologik DJ, Scheduler, & Time Announcement files are 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.5 or higher
- iTunes
- Radiologik DJ
- 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 separation. It builds these segments in 30, 60, 90, or up to 480 minute (8hr) 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 - 480 minute lengths in 30 minute increments and assign that to any 30 minute interval of any day of the week. 60 minute program lengths are recommended for 24/7 music stations. You can create a variety and schedule them for different times of day and different days, alternating weeks etc to make a variety. 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 separation amounts 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 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:

1. 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.
2. 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.
3. 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
4. Play will add the selected iTunes playlist in playlist sort order up to 12 hours

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=all separation, and h=hour avoidance shown next.

- r = Random

Scheduler chooses tracks at random from the playlists. With this off, tracks are tried in the order of the iTunes playlist sort.

- u = Unique tracks

Checks to make sure the track has not been programmed in the segment being scheduled nor currently in queue in the DJ

- n = No loop

> > Allows you to add tracks in the order of the playlist without repeating through the playlist but it will allow the same track to be programmed more than once or already be in queue if u = unique is off. Useful if some audio files need to be in a certain playlist order and some of those files are used more than once.

- a = All separation

Checks to make sure the same artist is not chosen within a certain number of tracks as set on the Program Properties and Times tab.

This attribute applies artist, composer (if preference is set), album and title separation. It works regardless of whether other script lines had this attribute. Artist separation uses substring searches using separators in an artist tag to better detect the same artists with guest artists in the artist tag. The separators are:

&
,
feat
feat.
ft
ft.
f.
vs.
v
featuring
with
Each separator looks for a space on either side of the separator. Substrings are omitted when 'orchestr' is found in the second part. Parenthesis are removed before making comparisons. Up to 3 artists per tag can be detected.

The separation also uses the composer tag but only separates composers to composers and artists to artists. Multiple composers are compared to multiple composers by using the separator of / with or without spaces.

Album Separation is useful for various artist albums where artist separation will not prevent proximity on the same album.

Title Separation is useful for separating tracks that have the same title but may be peformed by different artists such as with Christmas music or American Standards. It is more of a niche need and should not be misunderstood to do the job of rotation that a smart playlist showing least recently played tracks and u=unique does.

Separation is done overall on the tracks so far programmed in the script or in DJ's queue regardless of whether other lines used all separation. It is case-insensitive.

- h = Hour avoidance

Checks to make sure this track hasn't played at this same hour in any day this week
- d = Dependent
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.

- f = Failover

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.

- c = Contingent

This script line only runs if the next script line succeeds. This might be useful if you have a pick that is an intro and only wanted if the next command succeeded.
Track Actions
Track actions are the same as what can be set to invididual tracks in the Program Queue in DJ. Track actions execute when the track starts playing.

- i = Station ID

Tell the DJ to tick the Station ID button when this track is played. Normally assign this to a pick of a legal ID.

- s=Applescript

Excecutes the assigned AppleScript with the start of the first track played from this script line

- m=Stream

Starts and stops internet audio streams. Streams are defined on the Stream Receive tab of Radiologik DJ

- Line In

Turns the Line in on or off with the start of the first track played from this script line

- t=Studio Timer

Starts the Studio Timer in the top left of the DJ window. Time can be length from start (Length) or Time measured as minutes relative to program start time (Time).
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 (Exact Start 30 mins)

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 ModernInfo playlist. I added an intro for the proceeding script lines first track. After that it fills from between Min 08:00 and Max 11:00 (9:38 PM and 9:41 PM) with songs from the ModernTrance smart playlist in iTunes. I put in a combo which picks an outro, combo connector (sweep/jingle) and an intro. Then I fill with more music from ModernTrance. I stop short of filling to the top of the hour at 10:00 PM since I want that next segment to figure when to put the ID by finding the best track to get to the top of the hour.

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 "ModernTrance" 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.

Script Example #2 (hour-to-hour 1 hour)

This script is for 10:00 PM. I start with a 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 width ranges about the size of a song to a half song length. The last fill is min 54:00, max 56:45 which will allow lots of possible perfect matches to get to the top of the hour again in the next segment.

Attributes ruah (random, unique tracks, all separation, hour avoidance) are normal good practice for programming music tracks. But you probably want some of these off when it comes to ads and jingles/sweeps you may have added inbetween songs using pick commands since maybe all your sweeps/jingles have the same artist such as your station name. But keep the u (unique) attribute for your sweeps/jingles to keep them from repeating if they don't have to.

Script Example #3 (exact stop)

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.

1. The first fallback is to the fallback playlist if it exists and has items.
2. If that fails, the next fallback is to turn all separation off if is is on and that fallback step is allowed
3. If that fails, the next fallback is to turn hour avoidance off if it is on and that fallback step is allowed
4. If that fails, the next fallback is to turn off unique tracks if it is on and that fallback step is allowed
5. 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.

Tasks
Tasks allows you to schedule different operations apart from scheduling and on a schedule independent of the schedule. The actions you can do are run an AppleScript, upload or download a file, run a shell script and follow it all up with another AppleScript.

File transfer allows you to setup an upload or download. For downloads, you can set either a local folder to download to, preserving the original name, or choose a file. If you choose a target local file, the downloaded file will be renamed exactly as the target local file, replacing the local file.

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.

[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/. In addition, hour-agnostic time files can be used by the format xx00.aif to xx59.aif. 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 by default always have their overlap set to zero seconds to make sure they are never overlapped by other content. But this can be changed in the Advanced pane of Preferences.

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. Time format needs to be 24-Hour Time in System Preferences-->Language & Region.

Minute-only time
Use files xx00.aif - xx59.aif to announce the minutes without regard to what hour it is.

Voiceover time
Use files 0000-vo.aif - 1159-vo.aif or any other time formats like xx00-vo.aif - xx59-vo.aif with -vo appended to the name but before the extension to have them programmed as voiceovers that duck over the next track's ramp.

[date] Date matching
Use the 'date' command to do a search for the matching day of the year in the title of tracks from the playlist chosen for the command. Dates are searched in five formats:

> Format | Example
> YYYY-MM-DD | 2017-01-08
> MM-DD-YY | 01-08-17
> YYMMDD (only at beginning or end of track title) | 170108
> Month D, YYYY | January 8, 2017
> Mon D, YYYY | Jan 8, 2017

The year in the first two formats 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. 'Tip of the Day Feb 9' or 'The February 9th 2010 Tip of the Day' will only match February 9th.

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 or use a failover script line.

In addition to the [date] command there are 6 variations which are described in the interface. Four variations cover 2 days before and after for five days of possible matching, one that just looks for the month called the ">[month] command, and one [date=] that searches both title and comments to match the date using the year.

[pick] [intro] [outro] and [combo] command Voiceovers
An intro voiceover introduces the next track and will use the ramp of the next track to determine if and how to voiceover the actual track this way:

1. If the ramp is 0, then there's no overlap.
2. If the ramp is less time than the intro, then the intro starts first and overlaps only as much as the ramp so you get a perfect finish of the intro at the end of the ramp at the post.
3. If the ramp is longer than the intro, then the intro and the song start at the same time and intro ends and the song fades up before the end of the ramp (the post).

Here are the different ways a voiceover can be placed.

[pick]
Any pick command can make that selected track a voiceover in DJ by using -vo at the end of playlist name in iTunes, or at the end of the title, artist, or album as set in iTunes. For example, you might have a title intro promo. To make it a voiceover, make it intro promo-vo.

Create and Manage Intros & Outros Voiceovers are also done using the intro and outro commands in the script which will dynamically choose voiceover files specific to your tracks. Those Intro and Outro files can be created, edited, visualized and tested on the Intros & Outros pane. To use this, pick a playlist with the tracks you want intros and outros for. Choose the DJ Voice, Intros or Outros and subfolder if any exist. You can then use the add buttons to add the different types of intros or outros which will create a new file named correclty and opened in your favorite audio editor. I recommend Amadeus Pro or Amadeus Lite (Pay) or ocenaudio (free). These are the files used by the intro, outro and combo commands described below.
[intro]
The inro 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. Voiceover types are searched in this order:

1. artist-title.aif
The intro command will first look to match the artist and title in a pattern of artist-title.aif in the folder ~/Music/Radiologik/Intros/.

2. artist.aif
If it doesn't find it by above, next 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.

3. (search title).aif
If it doesn't find it by any of the above, you can also match a partial title of a song in paranthesis. For example, the title Light as Air (Radio Version) will look for the intro file (Radio Version).aif.

4. (album).aif
If it doesn't find it by above, you can also specify a voiceover for an album by using parenthesis around the album name in the pattern of (album).aif.

5. [genre].aif
Next it looks to match the genre inside the brackets so for the genre Rock it will look for [Rock].aif.

6. [year].aif
Lastly it looks to match the year in the year metadata/tag so for the year 1983 it will look for [1983].aif.

If none of these are found, no track is placed. The intro files should be AIFF files with either a .aif or .aiff 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.

[outro]
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 outro command will look for matches in the ~/Music/Radiologik/Outros/ folder.

1. The outro command will first look to match the artist and title in a pattern of artist-title.aif in the folder ~/Music/Radiologik/Outros/.

2. If it doesn't find it by above, next it looks for just the artist in the pattern artist.aif. So you can have a specific outro file for an artist and song or a general fallback to just announce the artist.

3. If it doesn't find it by any of the above, you can also match a partial title of a song in paranthesis. For example, the title Light as Air (Radio Version) will look for the outro file (Radio Version).aif.

4. And lastly, if it doesn't find it by above, you can also specify an outro for an album by using parenthesis around the album name in the pattern of (album).aif.

Both [outro] and [intro]
In addition to this for both intros and outros, you can use 10 varieties by using a -# in the file such as artist-title-5.aif or artist-9.aif or (album)-7.aif. These intro and outro varieties are then chosen purely randomly.

Intros and Outros can also be DJ voice specific. Use ~/Music/Radiologik/DJ Voices/[DJ Name]/Intros/~/Music/Radiologik/DJ Voices/[DJ Name]/Outros/. See DJ Voices in the topic below.

In addition to this, you can organize your intro and outro aif files anyway you like, nesting in folders in a way that make sense to you.

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.

[combo] (Intel Macs only)
The combo command is a combination of the intro and outro in one command. It is better than using an outro and then an intro since it combines an outro and an intro into one file and stores it ~/Music/Radiologik/Combos/ and and adds it to the queue from there.

When using combos, you should make sure the amount of trailing silence on your outro files and leading silence on your intro files provide a natural sound when they are put directly together. With DJ version 2012.9.1 and later, outros always have an overlap of 0 so it is generally good to have your outros with 0.25 seconds of trailing silence to give a natural pause between it and anything that follows. Likewise intros should have 0.25 seconds of leading silence so that you have about 0.5 seconds of silence between the two phrases. With outros edited with little to no trailing silence, you should have OverlappingOutros unchecked in the preferences on the advanced pane in order to have the outro command continue to work properly with these files.

Combo Connectors
You can place audio between the intro and outro of a combo file by providing .aif or .aiff files in the ~/Music/Radiologik/Combo Connectors or relative DJ Voices folder. The resultant combo will then be an intro-combo connector-outro all working as a voiceover and using the ramp over the next track. Combo connectors are chosen at random. Use combo connectors for jingles, station monikers, or any branding or speech you would like to randomly place between outros and intros.

Whatever files are found of the intros, outros or combo connectors will be placed by the combo command. So there are all of these possibilities depending on the files available:

> outro-connector-intro
> outro-intro
> outro-connector
> connector-intro
> outro
> intro
> connector

Combo files are meant to be disposable and Scheduler will prune the ~/Music/Radiologik/Combos folder once a week to remove tracks that were modified one week or older. You can also use the File menu item to do it manually.

Up Next

[upnext]
You can place an announcement of the upcoming program by using the next command. Place .aif files using the program name to be announced in ~/Music/Radiologik/Up Next/Programs/. Use the program name you use in Scheduler to name the file program name.aif. When a next command is used, it will place the Up Next audio file in queue. When the next program schedules, that up next audio will be the audio file used. This works best when you are scheduling segments near their start time such as 20 minutes before which is the default and when the next command is used between the time of scheduling and the start time of the next program segment. So for 1 hours segments the upnext command should be well after 45:00 or so to be sure to play the correct up next audio.

Example: If you have a 1 hour program at 9:00 and you put in an upnext command for about 9:45 in the script, that upnext command will actually use the program name of the 10:00 program. The point of the upnext is to announce what the NEXT program is. For illustration the programs are named for their times below. Program for 9PM will schedule at 8:40 and place the Up Next.aif at about 9:45. When 10:00 schedules at 9:40, it will copy the Program for 10PM.aif file to be the Up Next.aif file you see below. Since 9:00 placed the Up Next.aif file and it was switched at 9:40, it will play the Program for 10PM.aif audio now in the Up Next.aif file at 9:45.

You can make your up next files voiceovers so if they are placed in front of any tracks with ramps, they will voiceover. Append -vo to the artist or album tag of your program name.aif files.

Music Beds

For use with a voiceover which has been placed with a pick command using the -vo suffix. Follow that voiceover pick with a pick that chooses tracks that have -bed at the end of the artist, title, or album tag. That track will be a music bed and play at ducked volume until a few seconds at then end when it will fade up and end or fade up and fade down if the length needed to be shortened.

If the music bed track is longer than the voiceover, it will be adjusted to fit the voiceover.

If the music bed track is shorter than the voiceover, it will start partway into the voiceover so that it ends just a few seconds after the voiceover.

With music beds you can keep a smart playlist of music bed tracks in a playlist in iTunes that rotates just like music does perhaps by least recently played and each music bed will be fitted to whatever you have for speech from the voiceover pick command. Use this for announcements, news, weather, etc. You might find that using a pick to put a stinger after this will finish it nicely.
DJ Voices
Each segment can have a distinct DJ voice for intros, outros and time announcements. Place your Intros, Outros and Time Announcement files in a named folder inside the DJ Voices folder in ~/Music/Radiologik/DJ Voices/.

The DJ Voice menu will populate with these folder names. If an intro or outro cannot be found for the track in the DJ folder, no intro or outro is used. However if you use time announce and there are no matching times for the present time in the DJ Voices specific Time Announce folder, scheduler will choose from the default ~/Music/Radiologik/Time Announce/.

[spot] Spots/Ads
Spots are specially scheduled audio for announcements or advertising handled through the Traffic tab.

For the script, you use a 'spot' command as merely a marker as to how many spots can be placed. Then select a preferred Flight category. Flight categories are set on the traffic tab and by setting your preferred flight category you can specify what categories of spots should play at what times and in what order in your program. Everything else is handled on the Traffic tab.

Traffic
On the traffic tab, you can create a new flight for which you specify the start and stop dates and hours and audio file. Then on the right you check the boxes for the the flight times days of the week and times. These flight times show only those weeks and hours in which there are spot commands in your program segments. These flight times will show how many are filled versus the total such as 2/3.

If you fill all the spots in the flight times, such as 3/3 then it will color green to indicate it is full. If you overfill these flight times such as 4/3, they will turn red. The red indicator will also show on the week view tab. Each week can be different depending on the start and stop dates of your flights so you can change the week forward and backward with the < & > buttons just above the flight times. Similar buttons are also provided on the Week View tab.

Flight Categories
You can set categories for your flights. This is useful if you want to prefer a particular order of spots in the program. The program allows you to set the preferred category for each spot command.

There are 20 categories besides the default. You can customize the names of the categories by pressing the Labels button. You don't have to worry about losing any assignments for the flights nor for the spot commands when you change the names of your categories. They are always remembered by their number.

How it schedules the spots
When the program segment is scheduled, the qualifying spots are shuffled and evenly distributed into the different spot commands proportionally to how many spots each spot command has. So if you don't have enough spots for the openings, they'll be spread more thinly. If you overbook, all of the scheduled spots will still be scheduled.

When there are categories for the spot commands, it will still try to evenly distribute the spots but it will try to match the categories. The main priority is to make sure all ads are placed evenly and are placed as they are being guaranteed. Category matching is a secondary priority. If it can't match the category, then for a non default spot command it will prefer a default flight. If it can't find a default category flight, then it will choose a flight at random.

Cards Analogy
Think of a dealer dealing cards. In this analogy, we'll define:

player = spot command
players = all of the spot commands in a script
cards requested by player = spot command "how many"
suit requested by player = spot category
dealer's cards = scheduled flights for this program

The dealer shuffles the cards. Then the dealer goes to each player. For each player, the dealer asks the player what suit he requests and searches his cards for a matching suit and if found, gives a card of that suit. The dealer uses a ratio of dealer cards to cards requested by players to determine how many cards that player should have in order to evenly distribute the dealer cards. If there are more player requests remaining than dealer cards, the dealer is allowed to skip to the next player. If the correct suit isn't found, then the dealer looks for a non-suite Category 0 card. If one cannot be found, and there are not more player requests remaining than cards, the dealer will insist on dealing some card which will then have to be a suit the player didn't request. The dealer only goes around the table once in the order of the script.

If Run overbookings is on, then the dealer evenly deals more cards than the players asked for to make sure all cards are dealt.

Silence Sensor

Silence Sensor is a tool that can listen to the default stereo channels on an audio source device and take action if the loudness is below a determined level for a determined amount of time. Actions are AppleScripts for both the error and restore conditions. When you create a new script for one of these, there are examples already in the initial script for notifying by email with Apple's Mail, SMS through Messages, and taking action such as adding a playlist to the program queue if no tracks are in queue.

To use Silence Sensor, you must create at least one Silence Sensor Profile. Pick the Sound input device you want to monitor and press the On/Off button to turn it on. You may need to experiment to find the right threshold and duration. Once a profile is turned on, it stays on as long as Scheduler is running. If Scheduler is quit and relaunched, Silence Sensor restores its state.

With the ability to create different Silence Profiles, you can set different thresholds and durations for different audio content. Rock may need to be very different from Classical as Classical may have much greater dynamics and require a lower threshold and longer durations. By using Profiles, you can coordinate different Silence Sensor settings and scripts for different programming. Silence Sensor Profiles can be set per prgram on the Program item in the toolbar on the Program Properties & Times tab and are active for the scheduled segment. If the program segment has a start time of 8:00 PM, that is when the selected Silence Sensor Profile action is taken. By default, each program starts with nothing for the Silence Sensor Profile which indicates no action is taken. The actions that can be taken are to start a Silence Sensor Profile and stop one.

Track Properties

There are a couple utilities that help with Track Properties that are kept in the scheduler so they don't chance interference with the performance of DJ. Track Properties contains data about how a track should be overlapped, how it is trimmed, how it fades in or out, as well as an end note to the DJ about how the track ends and the ramp time which is the time the DJ can talk into the track. All track properties can be set in DJ by selecting a track in a list and selecting properties in the bottom right.

Track Prep
This tab on the main window allows you to use parameters to examine the audio and automatically set the track properties of audio files selected in iTunes so that they make better segues for radio. If you intend to normalize your audio files with iVolume, you should do so before using Track Prep since Track Prep uses the gain adjusted values in its calculations.

Simple Use: Select the tracks you want to process (up to a few thousand) in iTunes, then use one of the four Presets such as "Heavy Overlap" and press the Process button. If you need to, you can adjust the sliders to the left to taste and process again. Those values are described below.

Overlap Threshold: Audio files are examined from end to front up to 30 seconds in searching for the first samples that meet the threshold in dB. The range is -12dB to -48dB with -12dB being louder and -48dB being quieter.

Overlap Pad: From that threshold point you can choose to pad how much past the threshold to place the overlap (the place where the next track is started). You can even pad negative to force the overlap closer together. Use -0.3 to make a tiny overlap even on cold ending songs.

Maximum Overlap before trimming: You can also set the maximum length of overlap. If the overlap point is further into the file than the overlap length allowed, the right trim is adjusted to compensate and the fade down value from that slider is applied. If the overlap point is less than the maximum overlap, the end trim is not adjusted and no fade out value is used.

Start Trim Threshold: You can also select to trim the starts. This looks up to 10 seconds into the song looking for the threshold you choose from -48dB to -24dB. If the threshold is at least 1.0 seconds into the file, the files is trimmed 0.5 seconds before the threshold and a 0.5 second fade up is set. With the threshold at some value other than off, if any leading silence of 0.2 or longer is found, it will be trimmed.

Trim if length is greater than: Yet another feature is to limit the length of tracks. When you set a maximum length in seconds, it shows what that is in hours, minutes and seconds and any track that exceeds that is trimmed and faded according to the 'fade down if trimmed' value.

Override any previous overlaps: If you made changes already in DJ to the overlap, by default using this on a file selected in iTunes will not process the file. It's assumed you already manually adjusted the file and want that. However if you want to override that, there's a checkbox on this tab to do so.

Remove overlaps and other properties: You can also remove just those properties that can be changed by this tool, specifically overlap, end trim, and fade down without affecting any other properties you may have manually changed such as ramp and end note. Select the tracks in iTunes, then check the remove overlaps checkbox and click the remove button.

Presets: There are four presets (Heavy Overlap, Light Overlap, No gap, Even gap) intended as baselines and also to instruct on how to set the values for certain results.

Note: Track Prep uses the volume level calculated using the Sound Check value. For best results, have Sound Check turned on in iTunes and also on in DJ on the Audio tab of the preferences. For optimal results, use iVolume to set the Sound Check values since it uses Replay Gain algorithm.

Sound Check in iTunes

Sound Check in Radiologik DJ

Track Properties Backup
You can backup all of the track properties of all the files that have Track Properties by doing a snapshot.

You don't have to have iTunes open but any songs for which you have track properties must be in iTunes. Select the Track Properties tab from the main window, press snapshot to file.

If you have done changes to your tracks such as re-ripping to a higher bitrate or to AAC instead of mp3s, as long as the files have the exact same path with the exception of the file extension (.mp3 or .m4a), you can restore properties from the file you saved earlier.

Tips & Troubleshooting
Troubleshooting Program Builds
Issues with getting the right results from Scheduler often have a lot to do with how you create your scripts. You can do test builds to see how they work and the Logs tab will show you how it executed the script, line by line. This is very helpful to troubleshooting scripts since Scheduler logs a lot of details about what is doing and often why. You can read these logs yourself to determine what you need to change or you can provide them in a support email if you need help.

Reverting to backup
Backups of the Schedule segments and Traffic are made daily at midnight or can be made manually from the File menu. The backups are made to ~/Library/Application Support/Radiologik/Backups/.

To restore the schedule segments and/or traffic from a backup, select the program segment you want to restore from backup and use the File menu to restore selected program or all programs from backup. To restore the traffic from a backup:

1. Select Show Backups from the File menu
2. Quit Scheduler
3. In the Finder open another Window to your home folder, then Music, then Radiologik
4. Copy the Traffic folder from the backup folder to the ~/Music/Radiologik/ folder
5. Launch Scheduler

See DJ Tip & Troubleshooting for more.
Reporting Problems
Crash Reports
If Radiologik quits unexpectedly, it may create a crash report that you can email that will help determine the source of the problem to find a solution. Use Console in /Applications/Utilities/ to show log list and depending on OS X version it will be in either User Diagnostic Reports or ~/Library/Logs/CrashReporter. Look for files beginning with Radiologik. You can drag the item right from the list to produce file that can be emailed.

Logs
Radiologik keeps logs in ~/Library/Logs/Radiologik/ which you can easily access through Console. An Errors.log may reveal issues and that can be emailed. If you have issues with Scheduling and playback, sending a log for the day from both Scheduler and and Play Logs is very helpful in showing what issue you might be having such as with how a Scheduler script executed.

Unless it is indicated in the logs, report the version of Radiologik DJ and Scheduler, OS X version, and which model Mac and any other relevant information.

Email to jay at macinmind dot com.

Advanced Preferences
To edit advanced options, quit Scheduler, open the scheduler's preference file ~/Library/Preferences/Radiologik/Radiologik Scheduler Preferences in TextEdit, make the change to the text file, save and relaunch Scheduler.

OnlyShowPlaylistWithRegExMatch
Set this to a regular expression search term to only show playlists that get a match
e.g. OnlyShowPlaylistWithRegExMatch=radio only shows playlist with "radio" in them
e.g. OnlyShowPlaylistWithRegExMatch=[A-Z] only shows playlists with at least one capital letter
See http://regexpal.com/ for reference

Multiple Instances
It is possible to run more than one copy of Radiologik DJ and Scheduler and have those copies use their own set of Radiologik folders. To do this, make a copy of the Radiologik DJ and/or Scheduler application(s) and add a -- and something to the name of the application such as "Radiologik DJ--Jazz" and/or "Radiologik Scheduler--Jazz". Then these copies will use folders "Radiologik--Jazz" in the Music, Logs, and Preferences folders. When launched, they will also show the appended name in their respective title bars. With multiple audio outputs it is then possible to run more than one channel/station on the same Mac. All of the Radiologik application instances will still share the same one iTunes. It is still only possible to run one Nicecast instance since it can only know one set of preferences at at time.

When updating to a new version via the built-in version updater, the altered application name for each instance is kept.

Radiologik File Locations
Files for Radiologik are stored in the following locations:
~/Music/Radiologik/
~/Library/Logs/Radiologik/
~/Library/Preferences/Radiologik/

Preferences | ~/Library/Preferences/Radiologik/
Database & Saved States | ~/Music/Radiologik/
Schedules | ~/Music/Radiologik/Schedule/
Time Announcements | ~/Music/Radiologik/Time Announce/ ~/Music/Radiologik/DJ Voices/[DJ Name]/Time Announce/
Voiceover intros | ~/Music/Radiologik/Intros/ ~/Music/Radiologik/DJ Voices/[DJ Name]/Intros/
Voiceover outros | ~/Music/Radiologik/Outros/ ~/Music/Radiologik/DJ Voices/[DJ Name]/Outros/
Up Next audio | ~/Music/Radiologik/Up Next/
DJ Program Files | ~/Music/Radiologik/Programs/
AppleScripts | ~/Music/Radiologik/Scripts/
Logs | ~/Library/Logs/Radiologik/
Schedule & Traffic Backup | ~/Library/Application Support/Radiologik/Backups/

Version Notes
Version notes
Legal
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 licensed as is with the removal of registration reminders for Advanced mode. This software allows you to "try before you buy" and I operate on the understanding that you are satisfied with the software before you purchase a registration.

This warranty is in lieu of any other warranties, express or implied, including the implied warranties of merchantability and fitness for a particular purpose. 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.