Fred Gleason 669ae37762 2017-11-03 Fred Gleason <fredg@paravelsystems.com>
* Moved the contents of 'docs/datetime_wildcards.txt' to an
	appendix in the	Operations Guide.
2017-11-03 12:24:33 -04:00

9670 lines
334 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version='1.0'?>
<book xmlns="http://docbook.org/ns/docbook" version="5.0">
<info>
<title>Rivendell Radio Automation System</title>
<subtitle>Operations Guide</subtitle>
<author>
<personname>
<firstname>Fred</firstname><surname>Gleason</surname>
</personname>
</author>
<publisher>
<publishername>Paravel Systems LLC</publishername>
<address>
<street>41 West Lee Highway, Suite 59</street>
<city>Warrenton</city>
<state>VA</state>
<postcode>20186</postcode>
</address>
</publisher>
<orgname class="corporation">
</orgname>
<edition>
v1.0.0
</edition>
<copyright><year>-2003-2017</year><holder>Fred Gleason</holder></copyright>
<cover>
<mediaobject>
<imageobject>
<imagedata fileref="manual-outputdefault.png" scale="20"/>
</imageobject>
</mediaobject>
</cover>
</info>
<!--
<preface><title>Forward</title></preface>
-->
<chapter xml:id="chapter.overview">
<title>System Overview</title>
<!--
<mediaobject>
<imageobject>
<imagedata fileref="manual-outputdefault.png" scale="30"/>
</imageobject>
</mediaobject>
-->
<sect1 xml:id="sect.overview.introducting_rivendell">
<title>Introducing Rivendell</title>
<para>
Rivendell is a digital audio content management and delivery system
that is targeted for use in professional radio broadcast environments.
It includes robust tools for the acquisition, organization, management
and play out of audio material from and to a diverse array of sources
and destinations. Support for a wide variety of external third party
hardware devices and software packages commonly used in the radio
industry is featured, including interfaces for:
</para>
<para>
<itemizedlist>
<listitem>Audio Routing Switchers</listitem>
<listitem>Satellite Downlink Receivers</listitem>
<listitem>Audio Mixing Consoles</listitem>
<listitem>Commercial Traffic and Music Scheduling Systems</listitem>
</itemizedlist>
</para>
<para>
Rivendell is made available under the terms of the
<link linkend="appendix.gplv2">GNU General Public License,
version 2</link>.
As such, it comes with <emphasis>absolutely no warranty</emphasis>,
not even the implied
warranties of merchantability or fitness for a particular purpose.
See the full text of the GPLv2 for details.
</para>
<para>
Rivendell has been designed and developed from the ground up to run
on the popular and highly stable <trademark>GNU/Linux</trademark>
operating system.
Selected tools (mostly having to do with log generation) have also
been ported to run in the Microsoft <trademark>Windows</trademark>
environment as well.
Full source code as well as binary installation packages for Windows
and select Linux distributions are available on line.
</para>
<para>
Rivendell has been designed to be able to operate in a wide variety
of roles, ranging from single, self-contained workstations to large,
multi-station clusters consisting of multiple workstations and
centralized servers. Also included are redundancy and hot-standby
capabilities to allow for reliable operation even in the presence of
hardware faults.
</para>
<para>
Rivendell is implemented as a set of interactive tools or 'modules'
that collectively provide the complete functionality of the system.
Briefly, these modules and their functions are:
</para>
<para>
<variablelist>
<varlistentry>
<term>RDAdmin</term>
<listitem>
System wide configuration
</listitem>
</varlistentry>
<varlistentry>
<term><link linkend="chapter.rdlibrary">RDLibrary</link></term>
<listitem>
Library content management
</listitem>
</varlistentry>
<varlistentry>
<term><link linkend="chapter.rdcatch">RDCatch</link></term>
<listitem>
Automatic event scheduler
</listitem>
</varlistentry>
<varlistentry>
<term><link linkend="chapter.rdairplay">RDAirPlay</link></term>
<listitem>
On-air play out application
</listitem>
</varlistentry>
<varlistentry>
<term><link linkend="chapter.rdlogedit">RDLogEdit</link></term>
<listitem>
Log editing and voicetracking tool
</listitem>
</varlistentry>
<varlistentry>
<term><link linkend="chapter.rdlogmanager">RDLogManager</link></term>
<listitem>
Automated log generation and interface utility
</listitem>
</varlistentry>
<varlistentry>
<term><link linkend="chapter.rdlogin">RDLogin</link></term>
<listitem>
Set the current user on a Rivendell host
</listitem>
</varlistentry>
<varlistentry>
<term>RDCartSlots</term>
<listitem>
Emulate a traditional broadcast cart machine
</listitem>
</varlistentry>
<varlistentry>
<term>RDPanel</term>
<listitem>
Large &quot;cart wall&quot; application
</listitem>
</varlistentry>
<varlistentry>
<term>RDCastManager</term>
<listitem>
Podcast feed manager
</listitem>
</varlistentry>
</variablelist>
</para>
<para>
The operation of each of these modules is explained in detail in the
chapters that follow. However, we first need to cover some basic
concepts common to all Rivendell modules.
</para>
<sect2 xml:id="sect.overview.the_rivendell_object_paradigm">
<title>The Rivendell Object Paradigm</title>
<para>
All Rivendell modules make use of the following four classes of
system resources:
</para>
<para>
<itemizedlist>
<listitem>
<link linkend="sect.overview.hosts">Hosts</link>
</listitem>
<listitem>
<link linkend="sect.overview.users">Users</link>
</listitem>
<listitem>
<link linkend="sect.overview.groups">Groups</link>
</listitem>
<listitem>
<link linkend="sect.overview.services">Services</link>
</listitem>
</itemizedlist>
</para>
<para>
We'll cover each of these concepts in turn.
</para>
<sect3 xml:id="sect.overview.hosts">
<title>Hosts</title>
<para>
Every physical computer within a given network that is running
Rivendell software is referred to as a <emphasis>host</emphasis>.
Any host in a
Rivendell network can be individually configured and controlled
from any other host (provided the system administrator has enabled
this capability). Hosts can be used for a wide variety of
applications, including content ingestion and management,
automatic recording (sometimes referred to as netcatching),
on-air play out or log (sometimes also referred to as playlist)
generation. It is also possible for a single host to perform all
of these functions.
</para>
</sect3>
<sect3 xml:id="sect.overview.users">
<title>Users</title>
<para>
Every host on a Rivendell network has one or more
<emphasis>users</emphasis> available
to it. In this context, a 'user' is merely a set of access
policies established by the system administrator that defines what
tasks a given host is or is not allowed to perform. Every host
has at least one user, called the <emphasis>default user</emphasis>.
As the name
suggests, this is the set of user policies that are loaded by
default when the system starts up. It is also possible to change
the user currently in use on a given host by running the RDLogin
module.
</para>
</sect3>
<sect3 xml:id="sect.overview.groups">
<title>Groups</title>
<para>
A Rivendell <emphasis>group</emphasis> is a system of categories
that is used by the
audio library to classify and organize the audio within the library.
Groups are a very powerful capability, and many operations within
Rivendell can be specified on the basis of group membership.
The actual classification scheme, including the number of available
groups and their names, is completely arbitrary so as to allow each
facility to tailor a schema that best fits its own operational
requirements. Designing and implementing the group schema is one
of the most important tasks facing the Rivendell system
administrator, as a well-designed schema can make long-term
maintenance and management of the system substantially easier
vis-a-vis a poorly thought out one. We will cover groups in
detail in the chapters devoted to the RDLibrary and RDAdmin modules.
</para>
</sect3>
<sect3 xml:id="sect.overview.services">
<title>Services</title>
<para>
Every facility at which Rivendell is deployed is presumed to have
one or more ultimate destinations for which audio is intended.
These could be radio stations (e.g. WAVA), satellite uplink
channels, live Internet audio streams, or any mix of the above.
Each of these sorts of destinations is referred to in Rivendell
as a <emphasis>service</emphasis>, and certain parameters,
particularly as regards
audio play out and log (playlist) creation, can be configured on
the basis of what particular service is being referenced.
</para>
</sect3>
</sect2>
<sect2 xml:id="sect.overview.the_rivendell_hardware_paradigm">
<title>The Rivendell Hardware Paradigm</title>
<para>
In addition to the core computer hardware (CPU, motherboard, etc),
each Rivendell host typically interacts with specialized hardware
required to accomplish the task at hand. Three main categories of
such 'special' hardware are of interest to us here, the three being
audio adapters, serial ports and GPIO/switcher devices. We'll
cover each below.
</para>
<sect3 xml:id="sect.overview.audio_adapters">
<title>Audio Adapters</title>
<para>
An <emphasis>audio adapter</emphasis> in Rivendell is simply a
device or facility for
getting audio into and/or out of a host on a realtime basis.
Most commonly this will be a sound card, although other, more
exotic possibilities (using TCP/IP networking or direct routing
to other audio applications) also exist. The three main classes
of audio adapters supported by Rivendell are:
</para>
<para>
<variablelist>
<varlistentry>
<term>Advanced Linux Sound Architecture (ALSA)</term>
<listitem>
<para>
The standard Linux sound card driver starting with the 2.6.x
kernel series, ALSA supports a huge array of commercially
available sound cards, ranging from entry level 'game' cards
to high-end cards aimed at professional audio uses.
More information, including a current list of supported
cards, is available at the ALSA web site,
http://www.alsa-project.org/.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>HPI Adapters</term>
<listitem>
<para>
These are high-performance sound cards manufactured by
AudioScience Corporation. Designed and built specifically
for broadcast automation applications, many feature advanced
capabilities (such as on-board MPEG codecs and AES3 i/o)
specially aimed for use in that setting. They are so-called
because Rivendell uses AudioScience's special 'HPI' driver
to access and control them. More information is available
at AudioScience's web site, http://www.audioscience.com/.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>JACK Audio Interconnect Kit</term>
<listitem>
<para>
JACK is not a particular set of hardware devices, but rather
an audio 'framework' that allows compliant applications to
share audio resources and route audio in realtime amongst
themselves. JACK is different from similar efforts within
the Linux realm in that it was designed from the ground up
for professional audio work, with particular focus upon
low-latency operation and synchronous execution of all
clients. More information can be found at the JACK web
site, http://jackit.sourceforge.net/.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</sect3>
<sect3 xml:id="sect.overview.serial_ports">
<title>Serial Ports</title>
<para>
Commonly known in the DOS/Windows world as 'COM ports',
<emphasis>serial ports</emphasis> are often used to communicate
with outboard gear, such as
satellite receivers and audio switchers. Up to eight serial ports
can be accessed simultaneously by each Rivendell host.
</para>
</sect3>
<sect3 xml:id="sect.overview.gpio_switcher_devices">
<title>GPIO/Switcher Devices</title>
<para>
Because these capabilities are often (although not always)
bundled together in the same device, Rivendell lumps GPIO and
switcher devices together within the same class.
<emphasis>GPIO</emphasis> stands
for 'General Purpose Input Output'. As the name implies, these
devices can be used to interface to a huge variety of outboard
equipment by means of control lines. <emphasis>GPI</emphasis>
(General Purpose Input)
lines can be used to sense changes in an outboard system's state
(and Rivendell programmed to take various actions on the basis of
that), while <emphasis>GPO</emphasis> (General Purpose Output)
lines can be used to
send commands to an outboard system. The actual physical
interfacing of GPIO devices is complex and generally beyond
the scope of this document. Readers are encouraged to consult
a good handbook on radio engineering for more information.
A current list of GPIO/Switcher devices supported by Rivendell
can be found in 'docs/GPIO.txt' file in the Rivendell sources.
</para>
</sect3>
</sect2>
</sect1>
</chapter>
<chapter xml:id="chapter.rdlogin">
<title>Managing the Current User with RDLogin</title>
<sect1 xml:id="sect.rdlogin.managing_the_current_user_with_rdlogin">
<title>RDLogin</title>
<para>
Rivendell uses a sophisticated system of user privileges to keep track
of which users have permission to perform what operations.
These privileges are tracked by the system on the basis of
<emphasis>user accounts</emphasis>.
Creating user accounts and administering their permissions
are done in the RDAdmin module and are covered in the Rivendell
Technical and Administration Guide.
</para>
<para>
It's important to note that these user accounts are not the same
thing as the “Login Name” that is used to log into the computer system
itself. Rather, they exist and have meaning only within the Rivendell
system. For the rest of this discussion, when we talk about “users”,
it is these “Rivendell users” that we are referring to.
</para>
<para>
Each Rivendell host has a default user. As the name implies, this is
the user that is automatically logged in after the system is booted.
By default, the name of this user is “user”, but the system
administrator may have changed this to some other name.
</para>
<para>
For many sites, a single default user is all that is ever required.
For some sites however, particularly larger ones, it is desirable
to have multiple user accounts, each tailored to a particular person
or “role”, with privileges assigned appropriately. Such sites
require a means to log different users in and out of the system,
without interfering with any playout operations that may be ongoing
at the time. RDLogin is the module for doing this.
</para>
<para>
RDLogin will display a small window after being started, showing the
currently logged-in user. To change to a
different user, select the desired user name from the Username:
control, enter the correct password, and then touch the Set User
button. To “log out” of the system (in reality, just return to the
default user), simply touch the Default User button (no password is
required to set the default user). To exit RDLogin and do nothing,
simply touch the Cancel button.
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="rdlogin.rdlogin_screenshot.png" scale="70"/>
</imageobject>
</mediaobject>
</para>
</sect1>
</chapter>
<chapter xml:id="chapter.rdlibrary">
<title>Content Management with RDLibrary</title>
<sect1 xml:id="sect.rdlibrary.the_rivendell_library_structure_and_rdlibrary">
<title>The Rivendell Library Structure and RDLibrary</title>
<sect2 xml:id="sect2_rdlibrary_carts">
<title>Carts</title>
<para>
The Rivendell Library consists of a set of objects called
<emphasis>carts</emphasis>.
A cart is a data container that holds either one or more pieces
of audio (called an <emphasis>audio cart</emphasis>), or macro
commands to the system
(called a <emphasis>macro cart</emphasis>). The cart is the
fundamental schedule
building block in Rivendell, in that it is the smallest object or
'atom' that the outside world (like a traffic or music scheduler)
can see.
</para>
<para>
RDLibrary, upon startup, will show the current list of all carts
on the system (see below).
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="rdlibrary.rdlibrary_screenshot.png" scale="50"/>
</imageobject>
<caption>
<para>RDLibrary Main Window</para>
</caption>
</mediaobject>
</para>
<para>
A number of important attributes of carts can be seen from this
illustration. First is the cart's number. Each cart in the Library
gets assigned a unique number when it is created. This number can
range between 000001 and 999999, and is the primary 'handle' by which
both Rivendell and external systems (like traffic or music schedulers)
refer to the cart. Very often, sites have specific rules concerning
which types of audio (commercials, promos, music, etc) and macros get
assigned which numbers. We'll cover this area in some detail when
we discuss groups.
</para>
<para>
Immediately to the left of the cart number is an icon indicating
the type of cart. Just to the right of the cart number is the
average length of the cart. Except in the case of where
timescaling is in use (in which case it will be indicated in
blue numerals), this value is calculated automatically by the system.
</para>
<para>
Next comes various columns showing information from the cart
label Title, Artist, Client and Agency data, etc. This
information can be edited by opening RDLibrary's Edit Cart dialog,
either by double-clicking on the desired cart
entry in the list, or by touching the desired cart entry and then
touching the Edit button. In either case, you should get a dialog
similar to that shown in the illustration.
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="rdlibrary.edit_cart_dialog.png" scale="50"/>
</imageobject>
<caption>
<para>The Edit Cart Dialog</para>
</caption>
</mediaobject>
</para>
<para>
Near the center of the dialog will be a dropdown box labeled
<computeroutput>Schedule Cuts</computeroutput>. When set to
<computeroutput>By Weight</computeroutput> (the default), this will
allow cut rotation to be managed by means of daypart settings (see
<xref linkend="sect.rdlibrary.cut_dayparting"/>). When set to
<computeroutput>By Specified Order</computeroutput>, the precise
rotation of the cuts within the cart can be set manually.
</para>
<para>
This is how an audio cart looks when loaded into the Edit Cart dialog.
The upper half of the dialog is the cart label data. The meaning
of most of these fields should be fairly self-evident, but a few
call for special comment:
</para>
<para>
<variablelist>
<varlistentry>
<term>Enforce Length</term>
<listitem>
<para>
When checked, this indicates that timescaling should be
applied to this cart when it is played in RDAirPlay,
meaning that the cart will air at the length indicated by
the Forced Length field, rather than the native length of
the audio. Care is needed when implementing timescaling
within a facility, as there are limits to how much the
length can be altered, while only certain types of audio
adapters support it at all. See the Rivendell Technical
Guide for more information.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Group</term>
<listitem>
<para>
This is a pull down menu by which the group ownership for
the cart can be set. The system administrator configures
the list of available groups for each user in RDAdmin.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>User Defined</term>
<listitem>
<para>
As the name implies, this field has no dedicated meaning
to Rivendell itself, but is provided for each site to use
as is seen fit.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
<para>
The example in the illustration above shows an audio cart. As such,
the bottom half of the dialog displays the lists of cuts contained
within the cart.
</para>
</sect2>
<sect2 xml:id="sect.rdlibrary.cuts">
<title>Cuts</title>
<para>
Each audio cart can contain one or more <emphasis>cuts</emphasis>.
A Rivendell cut is
an actual piece of audio, somewhat analogous to a 'track' on a CD.
Up to 999 such cuts can exist within a single cart. Each line in
the cut list contains information about the cut, including:
</para>
<variablelist>
<varlistentry>
<term><computeroutput>WT</computeroutput></term>
<listitem>
<para>
The <emphasis>weighting</emphasis> value for the cut. see
<xref linkend="sect.rdlibrary.cut_dayparting"/> for discussion.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>ORDER</computeroutput></term>
<listitem>
<para>
The <emphasis>order</emphasis> value for the cut. see
<xref linkend="sect.rdlibrary.cut_dayparting"/> for discussion.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>DESCRIPTION</computeroutput></term>
<listitem>
<para>
n arbitrary name, assignable by the user as an aid in keeping
track of the content, it is roughly analogous to the 'Title'
field in the cart label.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>LENGTH</computeroutput></term>
<listitem>
<para>
The actual, measured play out length of the cut audio.
This field is calculated automatically by the system.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>LAST PLAYED</computeroutput></term>
<listitem>
<para>
he last date and time that the cut was aired by one of the
on-air modules. Useful for keeping track of stale inventory.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput># OF PLAYS</computeroutput></term>
<listitem>
<para>
The total number of times the cut has been aired by the
one of the on-air modules.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>ORIGIN</computeroutput></term>
<listitem>
<para>
The name of the host upon which the audio in the cut was last
recorded, along with the date and time.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>OUTCUE</computeroutput></term>
<listitem>
<para>
A user settable field. This line shows up in the RDAirPlay
log when the cut is played.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>START DATE</computeroutput></term>
<listitem>
<para>
The effective start date/time of the cut.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>END DATE</computeroutput></term>
<listitem>
<para>
The effective end date/time of the cut.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>START DAYPART</computeroutput></term>
<listitem>
<para>
The start time of the cut's daypart.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>END DAYPART</computeroutput></term>
<listitem>
<para>
The start time of the cut's daypart.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>NAME</computeroutput></term>
<listitem>
<para>
The internal CUTNAME of the cut as used in Rivendell's
database.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>SHA1</computeroutput></term>
<listitem>
<para>
The SHA-1 hash value of the cut's file in Rivendell's audio
store.
</para>
</listitem>
</varlistentry>
</variablelist>
<sect3 xml:id="sect.rdlibrary.multiple_cuts_in_a_cart">
<title>Multiple Cuts in a Cart</title>
<para>
What happens when more than one cut is placed into a cart? The
answer, in a word, is <emphasis>rotation</emphasis>. Rotation is
the ability to
schedule a single cart in a log, but to have that cart play out
different material at different times. This capability has a
myriad of uses. One of the simplest, common in commercial radio
facilities, is to allow multiple versions of a spot to be placed
into the system, while still allowing the traffic department to
have to track and schedule only one cart number. A more
sophisticated use involves use of the cut's
<emphasis>dayparting</emphasis> settings,
forcing different cuts to play based upon certain date/time
criteria, such as day of the week or time of day. Cut dayparting
is a very powerful feature in Rivendell, and is something we
will discuss shortly.
</para>
<para>
To edit the properties of a cut, either double-click its entry
in the cut list, or touch it once to highlight and then touch
the <computeroutput>Cut Info/Record</computeroutput> button.
The Record Dialog will now open up.
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="rdlibrary.edit_cut_info_dialog.png" scale="50"/>
</imageobject>
<caption>
<para>The Record Dialog</para>
</caption>
</mediaobject>
</para>
<para>
Roughly the upper third of the dialog is for editing the various
cut parameters, the middle section is for configuring the cut's
daypart settings, and the bottom third is a record machine that
can be used both to record new audio into the system and to
audition any recording already made.
</para>
</sect3>
<sect3 xml:id="sect.rdlibrary.cut_dayparting">
<title>Cut Dayparting</title>
<para>
For carts for which <computeroutput>Schedule Cuts</computeroutput>
is set to <computeroutput>By Weight</computeroutput>,each cut in
can be dayparted on the basis of these parameters:
</para>
<para>
<itemizedlist>
<listitem>
Weight
</listitem>
<listitem>
Absolute Start and End Date-Time
</listitem>
<listitem>
Relative Start and End Time
</listitem>
<listitem>
Day of the Week
</listitem>
</itemizedlist>
</para>
<para>
While not strictly a dayparting parameter, the
<computeroutput>WEIGHT</computeroutput> setting of a cut can
strongly influence
the order (and hence placement) of when a particular cut will play.
The weight value of each cut in a cart consistutes the numerator
of a fraction, the denominator of which is the sum of the weight
values of every cut in the cart. Rivendell's cut selection
algorithm will seek to play each cut in like proportion. If it is
important in some cases to be able to specify the precise order
of each cut play-out, consider changing the
<computeroutput>Schedule Cuts</computeroutput> dropdown to
<computeroutput>By Specified Order</computeroutput>.
</para>
<para>
By default, each newly created cut in a
<computeroutput>By Weight</computeroutput> cart starts out with
dayparting
disabled, meaning that it will be 'eligible to play' at all times.
By clicking the <computeroutput>Enabled</computeroutput> radio
button in the <computeroutput>Air Date/Time</computeroutput> box, an
absolute start and end date for the cut can be entered, meaning
that the cut will be prevented from airing in the on-air modules
at any time outside the range of those date-times. Likewise, by
selecting the <computeroutput>Enabled</computeroutput> radio button
in the <computeroutput>Daypart</computeroutput> box, start and end
times (relative to the day the cut is to air) can be entered.
Cuts designated in this way will be allowed to air only within
the specified range of times. Finally, by ticking or clearing
the appropriate boxes in the
<computeroutput>Day of the Week</computeroutput> box, a cut can be
constrained to air only on certain days of the week.
</para>
<para>
All of the dayparting parameters can be used either singly or in
combination with each other. When combined, the resulting
'eligibility' is calculated as the logical AND of the applied
dayparting limits. For example, a cut with the 'Monday' box
cleared will refuse to air on Mondays, regardless of whether
any of the other daypart rules match.
</para>
<para>
It's important to remember that dayparting rules affect audio
play out only within the on-air modules. You will still be
able to audition and play the audio without limitation in the
other Rivendell modules.
</para>
</sect3>
<sect3 xml:id="sect.rdlibrary.cart_and_cut_color_coding">
<title>Cart and Cut Color Coding</title>
<para>
Each cart or cut in RDLibrary is assigned a color to indicate
it's 'playability' for air, as follows:
</para>
<para>
<variablelist>
<varlistentry>
<term>NO COLOR</term>
<listitem>
<para>
Event will play normally
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>CYAN</term>
<listitem>
<para>
Event will not play (cut datetime is in the future)
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>RED</term>
<listitem>
<para>
Event will not play (outside of dayparting limits or audio
is not available)
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>GREEN</term>
<listitem>
<para>
Event will play an Evergreen
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
<para>
It's important to remember that the color displayed for each
event indicates playability <emphasis>at the instant that the event
is being viewed</emphasis>.
</para>
</sect3>
<sect3 xml:id="sect.rdlibrary.recording_and_auditioning_a_cut_in_the_record_dialog">
<title>Recording and Auditioning a Cut in the Record Dialog</title>
<para>
The lower third of the Record Dialog is used both to audition and
record audio. To audition the cut, simply press the play button
(the one with the triangular symbol). The button will
illuminate, audio will show on the bar meter and start playing
immediately. The audio will play to completion, unless either
the stop button (square symbol) is pressed, or the Record Dialog
is closed.
</para>
<para>
To record new material into a cut, first ensure that the
<computeroutput>Channels</computeroutput>
drop-down menu is set to record the appropriate number of channels,
then touch the <computeroutput>Record</computeroutput> button
(round symbol). If the cut contains
audio that was recorded previously, a warning box will pop up at
this point to inform you of this and to give you a chance to abort
the recording without erasing what was previously recorded. If
<computeroutput>Yes</computeroutput> is selected here, the
previous recording will be overwritten
and no longer accessible.
The <computeroutput>Record</computeroutput> button will now be
illuminated steadily, while the
<computeroutput>Play</computeroutput> button will be flashing,
indicating that the record machine is in 'ready' mode. The bar
meter will also be active to indicate input levels, and this is
the point where you want to verify that your levels are correct,
with peaks just into the yellow area being optimal. Nothing is
actually being recorded just yet.
</para>
<para>
We have two options for actually starting the record machine.
We can start it manually by pressing the
<computeroutput>Play</computeroutput> button, at which
point the machine will immediately begin recording, or we can set
the <computeroutput>Record Mode</computeroutput> drop-down menu
to the <computeroutput>VOX</computeroutput> (short for voice
activated) setting. When in <computeroutput>VOX</computeroutput>
mode, the record machine will
start automatically as soon as it senses the presence of audio
at the input.
</para>
<para>
Once started, recording will continue until either the
<computeroutput>Stop</computeroutput> button
is pushed, or the maximum allowed length for a manual recording
(set by the system administrator) has been reached. Once stopped,
if the <computeroutput>AutoTrim</computeroutput> drop-down menu
has been set to <computeroutput>On</computeroutput>, the Start and
End markers will be automatically set to the beginning and end of
detected audio within the cut. (We will discuss Markers in detail
when we get to the section on the Edit Markers dialog).
</para>
</sect3>
</sect2>
</sect1>
<sect1 xml:id="sect.rdlibrary.alternative_methods_of_audio_ingestion">
<title>Alternative Methods of Audio Ingestion</title>
<para>
In addition to manually recording material in realtime, RDLibrary
supports two alternative methods for audio ingestion:
</para>
<para>
<itemizedlist>
<listitem>
Importing from a File
</listitem>
<listitem>
Ripping from a CD
</listitem>
</itemizedlist>
</para>
<sect2 xml:id="sect2_rdlibrary_importing_audio_from_a_file">
<title>Importing Audio from a File</title>
<para>
To import audio from a file directly into a cut, we start by
opening the cut's parent cart in the Edit Cart Dialog. Next,
touch the cut's entry in the cut list and then touch the
<computeroutput>Import/Export</computeroutput> button to open the
Import/Export Audio Dialog.
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="rdlibrary.import_export_dialog.png" scale="50"/>
</imageobject>
<caption>
<para>The Import/Export Audio Dialog</para>
</caption>
</mediaobject>
</para>
<para>
Select the file you wish to import, either by entering the path
and filename to it in the <computeroutput>Filename</computeroutput>
field or by clicking the <computeroutput>Select</computeroutput>
button to open a file browsing dialog. Rivendell is capable of
importing the following types of audio files:
</para>
<para>
<itemizedlist>
<listitem>
Microsoft WAV (*.wav) PCM16, PCM24 and MPEG are supported
</listitem>
<listitem>
MPEG (*.mp1, *.mp2, *.mp3)
</listitem>
<listitem>
OggVorbis (*.ogg)
</listitem>
<listitem>
Free Lossless Audio Codec [FLAC] (*.flac)
</listitem>
</itemizedlist>
</para>
<para>
Next, set the <computeroutput>Channels</computeroutput> drop-down
menu to the appropriate number of
channels. You may also wish to adjust the
<computeroutput>Normalize</computeroutput> or
<computeroutput>Autotrim</computeroutput>
controls, although these will normally be set to reasonable default
values by the system administrator and should seldom have to be
altered. If <computeroutput>Normalize</computeroutput> is selected,
then the imported audio will
be peak normalized to the level indicated. The
<computeroutput>Autotrim</computeroutput> does the
same thing as in the Record Dialog (see section 2.0.1.2, 'Recording
and Auditioning a Cut in the Record Dialog' above for details).
</para>
<para>
Finally, touch the <computeroutput>Import</computeroutput> button.
A progress bar will indicate
percentage completion of the import, followed by a popup box to
announce completion. The Import Audio Dialog will automatically
close after acknowledging completion. The audio is now imported,
and can now be auditioned and otherwise processed in the usual way.
</para>
</sect2>
<sect2 xml:id="sect.rdlibrary.importing_audio_from_a_cd_track">
<title>Ripping Audio from a CD Track</title>
<para>
To rip audio directly off of a CD into a cut, we again start by
opening the cut's parent cart in the Edit Cart Dialog. Next,
select the cut's by touching the cut's entry in the cut list,
and then touch the <computeroutput>Rip</computeroutput> button
to open the Rip CD Dialog.
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="rdlibrary.cd_ripper_dialog.png" scale="50"/>
</imageobject>
<caption>
<para>The Rip CD Dialog</para>
</caption>
</mediaobject>
</para>
<para>
Load a CD into the CD drive. After a few seconds, list of tracks
should appear in the Tracks area. If the system administrator has
enabled the FreeDB CD Lookup Service, the names of the various
tracks may appear as well.
</para>
<para>
Set the <computeroutput>Channels</computeroutput>,
<computeroutput>Normalize</computeroutput> and
<computeroutput>Autotrim</computeroutput> controls appropriately (see
section 2.1.0 for more details on using the
<computeroutput>Normalize</computeroutput> and
<computeroutput>Autotrim</computeroutput>
controls). Next, touch the track you wish to rip and then press
the <computeroutput>Rip Track</computeroutput> button. The track will
now be ripped into the cut,
with a progress bar keeping you informed of progress. When the
rip is complete, a message box will pop up to inform you of this.
</para>
<para>
If FreeDB data was found for the CD, you can have the FreeDB track,
artist and album names be automatically placed on the cart label
for the cart by checking
<computeroutput>Apply FreeDB Values to Cart</computeroutput> before
closing the Dialog.
</para>
</sect2>
<sect2 xml:id="sect.rdlibrary.ripping_multiple_cd_tracks_at_a_time">
<title>Ripping Multiple CD Tracks at a Time</title>
<para>
Sometimes, when transferring multiple audio tracks from CD,
it's more convenient to be able to set up the entire transfer at
once and then let the rip run in a 'batch' mode. RDLibrary is
capable of ripping audio in this manner as well. To do this, click
the <computeroutput>Rip CD</computeroutput> button near the bottom of
the main RDLibrary screen, bringing up the Rip Disk Dialog.
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="rdlibrary.rip_disk_dialog.png" scale="50"/>
</imageobject>
<caption>
<para>The Rip Disk Dialog</para>
</caption>
</mediaobject>
</para>
<para>
This dialog is similar in many ways to the Rip CD Dialog described
above, except that each track can be assigned to transfer to a
different cut by double clicking on its listing, or by touching
the listing and then the Set Cut button, bringing up the Select
Cart/Cut Dialog.
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="rdlibrary.set_cart_cut_dialog.png" scale="50"/>
</imageobject>
<caption>
<para>The Set Cart/Cut Dialog</para>
</caption>
</mediaobject>
</para>
<para>
The destination cut is selected by first choosing the cart from the
left-hand pane, followed by the desired cut within that cart on the
right-hand pane. The complete set of library filtering tools are
available to you here see section 2.2, 'Navigating the Audio
Library' for details on their function, just as in the main
RDLibrary screen.
</para>
<para>
Once all of the desired tracks have been assigned to cuts, be sure
that the <computeroutput>Normalize</computeroutput>,
<computeroutput>Autotrim</computeroutput>,
<computeroutput>Channels</computeroutput> and
<computeroutput>Apply FreeDB Values to Cart</computeroutput>
controls have been set as desired, then click the
<computeroutput>Rip Disk</computeroutput>
button. A set of progress bars will keep you informed of the
progress of each track, as well as overall progress. When, the
rip is finished, a message box will let you know.
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.rdlibrary.macro_carts">
<title>Macro Carts</title>
<para>
A macro cart is a cart that contains one or more commands written in
Rivendell Macro Language (or 'RML' for short). The Edit Cart dialog
for a macro cart is similar in many ways to that for an audio cart
with the exception of the lower half, which contains a list of RML
commands to be executed rather than a list of cuts. (NOTE: for a
complete description of Rivendell Macro Language,
including a breakdown of available commands, see
<xref linkend="chapter.rml"/>).
</para>
<para>
To add a new line of RML, select the desired location in the list
and touch the <computeroutput>Add button</computeroutput>.
Similarly, a line can be deleted by
selecting it and then touching the
<computeroutput>Delete</computeroutput> button, or modified by
touching the <computeroutput>Edit</computeroutput> button. The RML
can be tested, eight line-by-line
or as a whole by touching the <computeroutput>Run Line</computeroutput>
or <computeroutput>Run Cart</computeroutput> button
respectively. It is also possible to
<computeroutput>Copy</computeroutput> and
<computeroutput>Paste</computeroutput> individual
lines both within a given cart or between carts.
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="rdlibrary.edit_macro_cart_dialog.png" scale="50"/>
</imageobject>
<caption>
<para>The Edit Macro Cart Dialog</para>
</caption>
</mediaobject>
</para>
</sect1>
<sect1 xml:id="sect.rdlibrary.navigating_the_audio_library">
<title>Navigating the Audio Library</title>
<para>
The uppermost section of RDLibrary's main window contains tools
designed to allow for fast searching of the entire audio library,
making locating a particular piece of audio easy even in a library
containing thousands of carts. It's possible to control what carts
are listed, as well as how they are sorted.
</para>
<sect2 xml:id="sect.rdlibrary.changing_the_cart_sort_order">
<title>Changing the Cart Sort Order</title>
<para>
The order in which carts are displayed in the cart list can be
changed by simply clicking on the header of the column by which
you want them sorted by. By default, the carts are sorted by Cart
Number. To instead sort them alphabetically by Title, simply click
the <computeroutput>TITLE</computeroutput> header once.
To sort them by Title in reverse i.e.
from 'Z' to 'A' click the <computeroutput>TITLE</computeroutput>
header once again. Clicking the
<computeroutput>TITLE</computeroutput> header a third time restores
the sort to normal 'A' to 'Z' again. And so on for all of the columns
in the cart list it's
possible to sort the Library by
<computeroutput>ARTIST</computeroutput>,
<computeroutput>LENGTH</computeroutput>, or any other
parameter shown in the cart list.
</para>
</sect2>
<sect2 xml:id="sect.rdlibrary.selecting_carts_by_the_filter_field">
<title>Selecting Carts by the Filter Field</title>
<para>
Very often, one will want to find a cart or set of carts whose
label(s) contains a particular word or phrase. It's possible to
narrow the list of displayed carts to this set by simply entering
the desired word or phrase into the
<computeroutput>Filter</computeroutput> field at the top of the
main RDLibrary screen. The full list can be restored by clearing
the <computeroutput>Filter</computeroutput> field or by clicking
the Clear button.
</para>
</sect2>
<sect2 xml:id="sect.rdlibrary.selecting_carts_by_group">
<title>Selecting Carts by Group</title>
<para>
It's possible to limit the list of carts to only those in a
particular group by setting the <computeroutput>Group</computeroutput>
drop-down menu to the
desired group name.
</para>
</sect2>
<sect2 xml:id="sect.rdlibrary.selecting_carts_by_type">
<title>Selecting Carts by Type</title>
<para>
You can tell RDLibrary what type of carts to list by checking the
<computeroutput>Show Audio Carts</computeroutput> and
<computeroutput>Show Macro Carts</computeroutput> boxes. Clearing
both boxes
obviously results in no carts at all being displayed.
</para>
<para>
It's also possible to combine all four of the above search and
sorting methods.
</para>
</sect2>
<sect2 xml:id="sect.rdlibrary.selecting_and_opening_carts">
<title>Selecting and Opening Carts</title>
<para>
Once the desired cart has been located on the cart list, load it
into the Edit Cart Dialog by either double
clicking its list entry, or by touching its list entry and then
touching the <computeroutput>Edit</computeroutput> button.
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.rdlibrary.library_maintenance">
<title>Library Maintenance</title>
<sect2 xml:id="rdlibrary.editing_markers">
<title>Editing Markers</title>
<para>
Rivendell uses a system of cue points within audio cuts, referred
to as <emphasis>markers</emphasis>. Markers can be used to specify
a number of
parameters for a piece of audio.
Consult <xref linkend="table.rdlibrary.marker_types"/> to see what
markers are available, their purpose and their corresponding color.
</para>
<para>
Markers are set in the Edit Markers Dialog.
To access the Dialog, open an audio cart, select the cut to open
on the cut list and then touch the
<computeroutput>Edit</computeroutput> button.
</para>
<para>
The Dialog is divided into three areas: the waveform area in the
upper half, consisting of the waveform display and
<computeroutput>Amplitude</computeroutput> and
<computeroutput>Time</computeroutput> buttons; the transport
controls area in the center, consisting
of <computeroutput>Start</computeroutput>,
<computeroutput>Pause</computeroutput>,
<computeroutput>Stop</computeroutput> and
<computeroutput>Loop</computeroutput> buttons along with an
audio meter;
and the marker button area in the lower third of the window,
consisting of controls for selecting and positioning markers.
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="rdlibrary.edit_marker_dialog.png" scale="50"/>
</imageobject>
<caption>
<para>The Edit Marker Dialog</para>
</caption>
</mediaobject>
</para>
<para>
It's possible to 'zoom-in' on the waveform in various ways by
clicking the <computeroutput>Amplitude</computeroutput>
and <computeroutput>Time</computeroutput> buttons.
By default, the waveform
is displayed fully 'zoomed-out', thus showing the entire length of
the audio cut. The <computeroutput>GoTo</computeroutput> buttons
can be used to jump directly to
the current play out cursor position, start or end of the waveform.
</para>
<para>
Audio can be played one of two ways: either by clicking on the
waveform to indicate where play out should start and then clicking
the left-hand <computeroutput>Play</computeroutput> button,
causing play out to start from the
selected position, or by clicking the right-hand
<computeroutput>Play</computeroutput> button, which
will cause play out to start from the Start Marker (just as it
would in RDAirPlay). Clicking the
<computeroutput>Pause</computeroutput> button while playing will
cause audio to stop and the play out cursor (a thin vertical black
line in the waveform area) to freeze at its current position, while
pressing the <computeroutput>Stop</computeroutput> button will stop
the audio while resetting the
play out cursor to the position it was in when
<computeroutput>Play</computeroutput> was started.
Clicking the <computeroutput>Loop</computeroutput> button will
cause the audio to play out
continuously, looping from end back to start, until either the
<computeroutput>Stop</computeroutput>,
<computeroutput>Pause</computeroutput>,
<computeroutput>Save</computeroutput> or
<computeroutput>Cancel</computeroutput> buttons are clicked.
</para>
<para>
To set a marker, click on the corresponding marker button and then
left-click on the waveform area to indicate where on the audio
the marker should be placed. (NOTE: With the exception of the
FadeUp and FadeDown markers, all markers in Rivendell are assigned
in pairs. For example, placing a TalkStart marker will also cause
a TalkEnd marker to be placed.) Markers that have already been
placed can be moved by selecting the appropriate marker button and
then dragging the marker to the desired location. It's also possible
to specify the position of a marker in the form of hh:mm:ss.s
(relative to time after the Start marker) by entering the desired
value next to a selected marker button. It is also possible to
remove a set of markers that have already been placed, either by
accessing the marker menu by doing a right-click on the waveform
display, or by touching the
<computeroutput>Remove Marker</computeroutput> button and then touch
the marker button corresponding to the marker to be removed.
(NOTE: the exceptions to this are the Start / End markers, which
are always present and hence cannot be removed.)
</para>
<table xml:id="table.rdlibrary.marker_types" frame="all">
<title>Rivendell Marker Types</title>
<tgroup cols="3" align="left" colsep="1" rowsep="1">
<colspec colname="Marker Type" />
<colspec colname="Function" />
<colspec colname="Color" />
<thead>
<row>
<entry>
Marker Type
</entry>
<entry>
Function
</entry>
<entry>
Color
</entry>
</row>
</thead>
<tbody>
<row>
<entry>
Start / Stop
</entry>
<entry>
Indicates start and end points of audio.
</entry>
<entry>
RED
</entry>
</row>
<row>
<entry>
TalkStart / Talk Stop
</entry>
<entry>
Indicates point to start and stop the Talk Counter in RDAirPlay.
</entry>
<entry>
BLUE
</entry>
</row>
<row>
<entry>
SegueStart / SegueEnd
</entry>
<entry>
Indicates the start and end of the audio overlap during
Segue transitions in RDAirPlay.
</entry>
<entry>
CYAN
</entry>
</row>
<row>
<entry>
HookStart / HookEnd
</entry>
<entry>
Indicates &quot;highlighted&quot; audio, used by button
panels and RDCartSlots when placed in Hook Mode.
</entry>
<entry>
VIOLET
</entry>
</row>
<row>
<entry>
FadeUp
</entry>
<entry>
Indicates the point at which audio should be faded up to
full level after starting in RDAirPlay.
</entry>
<entry>
YELLOW
</entry>
</row>
<row>
<entry>
FadeDown
</entry>
<entry>
Indicates the point at which audio should start fading
down to off before ending in RDAirPlay.
</entry>
<entry>
YELLOW
</entry>
</row>
</tbody>
</tgroup>
</table>
<para>
As an aid for accurately setting the Start and End markers, it's
possible to use the <computeroutput>Trim Start</computeroutput>
and <computeroutput>Trim End</computeroutput> buttons to automatically
set the markers to the first and last instances of the level
specified by the <computeroutput>Threshold</computeroutput> field,
respectively.
</para>
</sect2>
<sect2 xml:id="sect.rdlibrary.copying_and_pasting_audio_from_cut_to_cut">
<title>Copying and Pasting Audio from Cut to Cut</title>
<para>
It's possible to make copies of existing an audio cut on the system
by opening up the cut's parent cart in the Edit Cart Dialog,
selecting it on the cut list and clicking the
<computeroutput>Copy</computeroutput> button. To
paste the copied audio, simply select the desired destination
cut (within the same cart or a different one) and press
<computeroutput>Paste</computeroutput>.
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.rdlibrary.generating_library_reports">
<title>Generating Library Reports</title>
<para>
Various Library reports can be generated by touching the
<computeroutput>Reports</computeroutput>
button on the main RDLibrary screen and then selecting the desired
report and touching the <computeroutput>Generate</computeroutput>
button. The following reports are available:
</para>
<sect2 xml:id="sect.rdlibrary.the_cart_report">
<title>The Cart Report</title>
<para>
The cart report consists of a list of all selected carts on the
system, with their attributes.
</para>
</sect2>
<sect2 xml:id="sect.rdlibrary.the_cut_report">
<title>The Cut Report</title>
<para>
The cut report consists of a list of all cuts contained by the
selected carts on the system, with their attributes.
</para>
</sect2>
<sect2 xml:id="sect.rdlibrary.the_cart_data_dump__fixed_width_">
<title>The Cart Data Dump (fixed width)</title>
<para>
The fixed-width cart data dump is a special type of report that
consists of column-aligned data elements, one line per cut for the
selected
carts on the system. It is intended for use where a 'dump' of
available carts in the system is desired for import into an
external system (such as a music scheduling system).
</para>
</sect2>
<sect2 xml:id="sect.rdlibrary.the_cart_data_dump__csv_">
<title>The Cart Data Dump (CSV)</title>
<para>
The CSV cart data dump is a special type of report that
consists of CSV formatted data elements, one line per cut for the
selected
carts on the system. It is intended for use where a 'dump' of
available carts in the system is desired for import into an
external system (such as a music scheduling system).
</para>
</sect2>
</sect1>
</chapter>
<chapter xml:id="chapter.rdcatch">
<title>Automating Tasks with RDCatch</title>
<sect1 xml:id="sect.rdcatch.automating_tasks_with_rdcatch">
<title>Choosing the Correct Automation Tool</title>
<para>
Rivendell includes two modules specially optimized for performing
automatic operations: the RDCatch and RDAirPlay modules. However,
these two
modules take radically different approaches in how they go about
organizing and controlling operations, so a few words regarding
each may be in order here.
</para>
<para>
RDCatch is aimed at executing actions on the basis of a strict
time-based schedule, referred to as an event list. Each action
(which can be a <emphasis>recording</emphasis>, a
<emphasis>play out</emphasis>, an
<emphasis>upload</emphasis> or <emphasis>download</emphasis>,
a <emphasis>macro</emphasis> execution or an operation on an audio
<emphasis>switcher</emphasis> device) executes on
the basis of its scheduled time in the event list, independently of
all other actions. As such, RDCatch is often best suited for use in
settings such as network head end operations or 'auxiliary' roles at
broadcast stations, where the transitions between events are
generally not an important part of the presentation.
</para>
<para>
RDAirPlay takes a very different approach, in that most events are
organized into one or more playlists or logs. A Rivendell log is a
list of one or more carts, organized in chronological order. As the
name implies, RDAirPlay is optimized for use in situations where the
transitions between the various program elements are a key part of
the delivery and presentation of the content, such as in live air
play environments.
</para>
<para>
Of course, it's entirely possible to use both modules, even together
on the same machine at the same time the Linux OS makes for a very
robust and capable multitasking system. In this chapter, we will
take a look at the capabilities of RDCatch.
</para>
</sect1>
<sect1 xml:id="sect.rdcatch.the_rdcatch_main_window">
<title>The RDCatch Main Window</title>
<para>
After starting up RDCatch, you will see the
<xref endterm="para.rdcatch.the_rdcatch_main_window" endlink="mediaobject.rdcatch.rdcatch_screenshot"/>. The window consists of four
areas: the record / play out decks at the top, the filter areas just
below the decks, the events list and the audition buttons and other
buttons at the bottom. We'll cover each of these in turn.
</para>
<sect2 xml:id="sect.rdcatch.the_record___play_out_deck_area">
<title>The Record / Play Out Deck Area</title>
<para>
If the system administrator has configured one or more RDCatch
record or play out decks, they will be visible at the top of the
RDCatch main window. A record deck is a virtual 'recorder' that
can be used to make automated recordings, while a play out deck
can be used to automatically play out audio. It does not matter
on which particular host a particular deck resides all
Rivendell decks throughout the system are visible in RDCatch,
regardless of which host it is run upon.
</para>
<para>
Starting at the left-hand edge of each deck, there is the deck's
name, consisting of the name of the deck's host machine followed
by a number and a letter, an <computeroutput>R</computeroutput>
to indicate a record deck and a
<computeroutput>P</computeroutput> to indicate a play out deck.
Next, for record decks, there is
a <computeroutput>MON</computeroutput> button, used to monitor the
audio present at the deck input,
followed by an <computeroutput>ABORT</computeroutput> button, used
to manually stop an event
running in the deck. A description of the currently running event
next appears (this area will be blank if no event is currently
active), followed by the deck's status, which could be any of the
values in <xref linkend="table.rdcatch.rdcatch_event_states"/>.
</para>
<table xml:id="table.rdcatch.rdcatch_event_states" frame="all">
<title>RDCatch Event States</title>
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colname="Status" />
<colspec colname="Meaning" />
<thead>
<row>
<entry>
Status
</entry>
<entry>
Meaning
</entry>
</row>
</thead>
<tbody>
<row>
<entry>
IDLE
</entry>
<entry>
The deck is available for events
</entry>
</row>
<row>
<entry>
READY
</entry>
<entry>
The deck has started monitoring audio but the transport is
not yet rolling (record decks only).
</entry>
</row>
<row>
<entry>
WAITING
</entry>
<entry>
The deck is waiting for a GPI event (record decks only)
</entry>
</row>
<row>
<entry>
RECORDING
</entry>
<entry>
The deck is recording (record decks only)
</entry>
</row>
<row>
<entry>
PLAYING
</entry>
<entry>
The deck is playing out (play out decks only)
</entry>
</row>
<row>
<entry>
OFFLINE
</entry>
<entry>
The deck is configured but not available
</entry>
</row>
</tbody>
</tgroup>
</table>
<para>
<mediaobject xml:id="mediaobject.rdcatch.rdcatch_screenshot">
<imageobject>
<imagedata align="center" fileref="rdcatch.rdcatch_screenshot.png" scale="45"/>
</imageobject>
<caption>
<para xml:id="para.rdcatch.the_rdcatch_main_window">The RDCatch Main Window</para>
</caption>
</mediaobject>
</para>
<para>
Finally, each deck has an audio meter on its right-hand end, used
to verify audio levels in realtime.
</para>
</sect2>
<sect2 xml:id="sect.rdcatch.the_filter_area">
<title>The Filter Area</title>
<para>
Immediately below the decks is the filter area, consisting of the
<computeroutput>Show Only Active Events</computeroutput>,
<computeroutput>Show Only Today's Events</computeroutput>
<computeroutput>Show DayOfWeek</computeroutput> and
<computeroutput>Show Event Type</computeroutput>
controls, which are used to select which events will be
visible in the events list area immediately below.
</para>
</sect2>
<sect2 xml:id="sect.rdcatch.the_event_list">
<title>The Event List</title>
<para>
The event list is a system wide list of all events to be executed
by RDCatch on all of the various hosts on the Rivendell network,
with each event occupying a single line. The status of each event
is indicated by its background color, as shown in
<xref linkend="table.rdcatch.rdcatch_event_state_colors"/>
</para>
<table xml:id="table.rdcatch.rdcatch_event_state_colors" frame="all">
<title>RDCatch Event State Colors</title>
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colname="Color" />
<colspec colname="Meaning" />
<thead>
<row>
<entry>
Color
</entry>
<entry>
Meaning
</entry>
</row>
</thead>
<tbody>
<row>
<entry>
YELLOW
</entry>
<entry>
The event is next to be executed.
</entry>
</row>
<row>
<entry>
GREEN
</entry>
<entry>
The event is active.
</entry>
</row>
<row>
<entry>
CYAN
</entry>
<entry>
The event is in the READY state.
</entry>
</row>
<row>
<entry>
VIOLET
</entry>
<entry>
The event is in the WAITING state.
</entry>
</row>
<row>
<entry>
RED/PINK
</entry>
<entry>
The event is reporting an error.
</entry>
</row>
</tbody>
</tgroup>
</table>
<para>
Each entry in the event list starts with an icon that indicates
the type of the event, as shown in
<xref linkend="table.rdcatch.rdcatch_event_icons"/>
</para>
<table xml:id="table.rdcatch.rdcatch_event_icons" frame="all">
<title>RDCatch Event Icons</title>
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colname="Color" />
<colspec colname="Meaning" />
<tbody>
<row>
<entry>
[RECORD_ICON]
</entry>
<entry>
Record Event
</entry>
</row>
<row>
<entry>
[PLAYOUT ICON]
</entry>
<entry>
Play Out Event
</entry>
</row>
<row>
<entry>
[SWITCH ICON]
</entry>
<entry>
Switch Event
</entry>
</row>
<row>
<entry>
[MACRO ICON]
</entry>
<entry>
Macro Event
</entry>
</row>
<row>
<entry>
[UPLOAD ICON]
</entry>
<entry>
Upload Event
</entry>
</row>
<row>
<entry>
[DOWNLOAD ICON]
</entry>
<entry>
Download Event
</entry>
</row>
</tbody>
</tgroup>
</table>
<para>
Next on each line comes the
<computeroutput>Description</computeroutput> (settable by the user) and
<computeroutput>Location</computeroutput> for the event, the
location being the name of the host/deck
where the event will run. Then comes the
<computeroutput>Start</computeroutput> and
<computeroutput>End</computeroutput> parameters.
These time-based parameters come in one of three different forms:
a hard time, which is simply an absolute time (in twenty-four hour
'military' format), a length (in HH:MM format, relative to an
earlier start time), or a GPI start. The GPI parameters can be
somewhat involved. They are specified in the following format:
</para>
<para>
Gpi: &lt;start-time&gt;,&lt;end-time&gt;,&lt;gpi-num&gt;,&lt;wait-time&gt;
</para>
<para>
Where:
</para>
<para>
<variablelist>
<varlistentry>
<term>&lt;start-time&gt;</term>
<listitem>
<para>
The time, in HH:MM:SS format, when RDCatch will start looking
for a GPI event (also sometimes referred to as the window
start time).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>&lt;end-time&gt;</term>
<listitem>
<para>
The time, in HH:MM:SS format, when RDCatch will stop looking
for a GPI event (also sometime referred to as the window end
time).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>&lt;gpi-num&gt;</term>
<listitem>
<para>
The number of the GPI event to wait for, in the format
MATRIX:LINE. We will deal with GPI matrix and line numbers
in detail when we cover RDAdmin.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>&lt;wait-time&gt;</term>
<listitem>
<para>
The amount of time to wait, in MM:SS format, between the
reception of the GPI event and the actual start of the event
(used only for Start parameters).
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
<para>
For example, the start parameter 'Gpi: 14:00:00,14:05:59,0:1,01:00'
has a window start time of 14:00:00 [2:00:00 PM], a window end time
of 14:05:59, looks for a GPI event on line 0:1 and will wait one
minute [01:00] after receiving the GPI before starting the event.
</para>
<para>
Next come the <computeroutput>Source</computeroutput> and
<computeroutput>Destination</computeroutput> fields.
The uses of these will
vary depending upon what type of event is being listed, but should
normally be fairly self-evident. For example, for a record event,
the source field indicates the audio source from which the recording
is to be made, while the destination indicates the cat/cut combo to
which the recording should be made. Some events may leave one or the
other of these fields blank.
</para>
<para>
Now come the day of the week fields. These indicate on which days
of the week the listed event should be executed, followed by the
<computeroutput>Origin</computeroutput> field, which is simply a
readout of the Origin data of the
events underlying cut. There are a number of other fields which
follow, but these are less important for understanding the
operation of RDCatch.
</para>
</sect2>
<sect2 xml:id="sect.rdcatch_the_button_area">
<title>The Button Area</title>
<para>
At the bottom of the main window are various buttons. On the
left-hand side, the <computeroutput>Add</computeroutput>,
<computeroutput>Edit</computeroutput> and
<computeroutput>Delete</computeroutput> buttons are used to manage
events in the event list. Clicking the
<computeroutput>Scroll</computeroutput> button toggles
RDCatch into and out of 'scroll mode'. In this mode, the event
list display will be advanced automatically so as to keep the first
actively running event centered within the event list area.
</para>
<para>
On the right hand side, in addition to
<computeroutput>Close</computeroutput>, are three audition
buttons. These buttons can be used to audition the head and tail
of each cut referenced by an event, thus making it possible to
quickly verify that a set of automatic recordings were properly
executed.
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.rdcatch.adding_new_events">
<title>Adding New Events</title>
<para>
A new event can be added to the event list by simply clicking the
<computeroutput>Add</computeroutput> button to bring up the Add
Event Dialog (see <xref endterm="para.the_add_event_dialog" endlinl="mediaobject.rdcatch.add_event_dialog"/>).
Simply clicking the button that correspond to the desired type of
event will create it.
</para>
<para>
<mediaobject xml:id="mediaobject.rdcatch.add_event_dialog">
<imageobject>
<imagedata align="center" fileref="rdcatch.add_event_dialog.png" scale="50"/>
</imageobject>
<caption>
<para xml:id="para.the_add_event_dialog">The Add Event Dialog</para>
</caption>
</mediaobject>
</para>
</sect1>
<sect1 xml:id="sect.rdcatch.automating_recordings">
<title>Automating Recordings</title>
<para>
Automated recordings are configured by means of the Edit Recording
dialog (see <xref endterm="the_edit_recording_dialog" endlink="mediaobject.rdcatch.edit_recording_dialog"/>), which can be accessed either by clicking
the <computeroutput>Recording</computeroutput> button in the Add Event
dialog to create a new record
event or by touching the <computeroutput>Edit</computeroutput> button
to modify an existing event.
</para>
<sect2 xml:id="sect.rdcatch.the__start_parameters__section">
<title>The 'Start Parameters' Section</title>
<para>
The start parameters of each recording are configured in the
'Start Parameters' section. A recording can be programmed to start
on the basis of the wall clock time, referred to the hard start
time, or upon reception of a general-purpose input, or GPI event
originated by a satellite receiver, tone decoder or other external
device. Programming a hard start time is merely a matter of
entering the desired start time, in 24 hour 'military' format.
Programming a GPI start involves, in addition to entry of the GPI
parameters themselves (matrix and GPI line numbers) that
<computeroutput>Window Start</computeroutput> and
<computeroutput>Windows End</computeroutput> times be entered,
that define the 'window'
during which reception of the appropriate GPI event will be
'recognized' by RDCatch. It is also optionally possible to specify
a <computeroutput>Start Delay</computeroutput> between reception of
the GPI event and the actual start of the recording.
</para>
<para>
<mediaobject xml:id="mediaobject.rdcatch.edit_recording_dialog">
<imageobject>
<imagedata align="center" fileref="rdcatch.edit_recording_dialog.png" scale="50"/>
</imageobject>
<caption>
<para xml:id="the_edit_recording_dialog">The Edit Recording Dialog</para>
</caption>
</mediaobject>
</para>
</sect2>
<sect2 xml:id="sect.rdcatch_the__end_parameters__section">
<title>The 'End Parameters' Section</title>
<para>
The end parameters of each recording are configured in the
'End Parameters' section. A recording can be programmed to end on
the basis of a hard time, its absolute length or in response to a
GPI event. Programming of the
<computeroutput>Hard Time</computeroutput> and
<computeroutput>Length</computeroutput> parameters
should be fairly self-explanatory, while the parameters needed to
program a GPI event are similar to those used for the start
parameters, with the exception of the
<computeroutput>Max Record Length</computeroutput> setting,
which limits the maximum length of the recording in the event that
the expected GPI event is never received.
</para>
</sect2>
<sect2 xml:id="sect.rdcatch.programming_multiple_recordings_in_a_single_event">
<title>Programming Multiple Recordings in a Single Event</title>
<para>
If a record event is configured to use GPI for its start and Length
or GPI for its end parameter, then it is possible to configure the
event to make repeated, multiple recordings within a single event
by checking the
<computeroutput>Allow Multiple Recordings Within This Window</computeroutput>
box in the 'Start Parameters' section. This can significantly reduce
the amount of required record events when capturing material with
high on-air turnover, such as newscasts or traffic reports.
</para>
</sect2>
<sect2 xml:id="sect.rdcatch.selecting_a_record_source">
<title>Selecting a Record Source</title>
<para>
If the selected record deck (chosen in the
<computeroutput>Location</computeroutput> drop-down menu
at the top of the dialog) as been configured to operate with an
audio switcher device, the appropriate audio input can be chosen
from the <computeroutput>Source</computeroutput> drop-down menu.
</para>
</sect2>
<sect2 xml:id="sect.rdcatch.selecting_a_record_destination">
<title>Selecting a Record Destination</title>
<para>
Each programmed recording must have a 'destination', a designated
Cart/Cut which will hold the audio. The currently programmed
destination is shown in the Destination field, and can be changed
by clicking the <computeroutput>Select</computeroutput> button.
</para>
</sect2>
<sect2 xml:id="sect.rdcatch.setting_the_active_days_for_a_recording">
<title>Setting the Active Days for a Recording</title>
<para>
A check should be placed next to each day of the week for which a
recording should be made in the
<computeroutput>Active Days</computeroutput> box. If no days are
checked, then no recordings at all will be made.
</para>
</sect2>
<sect2 xml:id="sect.rdcatch.record_list_management_with_event_active_and_make_oneshot">
<title>Record List Management with Event Active and Make OneShot</title>
<para>
The record event will be actually executed only if
<computeroutput>Event Active</computeroutput> check box
(in the upper left corner of the dialog box) is ticked. By
clearing this box, it's possible to 'bank' a record event without
actually having it run, useful for events that are only used
sporadically.
</para>
<para>
For events that need to be executed only once, the
<computeroutput>Make OneShot</computeroutput>
box can be ticked. Such an event will execute just once, and
then automatically delete itself from the event list.
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.rdcatch.automating_playouts">
<title>Automating Playouts</title>
<para>
Automated playouts are configured by means of the Edit Playout
dialog (see <xref endterm="the_edit_playout_dialog" endlink="mediaobject.rdcatch.edit_playout_dialog"/>), which can be accessed either by
clicking the <computeroutput>Playout</computeroutput> button in
the Add Event dialog to create a new
record event or by touching the
<computeroutput>Edit</computeroutput> button to modify an existing
event. The process of configuring a playout is very similar to that
for configuring a recording see the
<xref linkend="sect.rdcatch.automating_recordings"/>
above for details.
</para>
<para>
<mediaobject xml:id="mediaobject.rdcatch.edit_playout_dialog">
<imageobject>
<imagedata align="center" fileref="rdcatch.edit_playout_dialog.png" scale="50"/>
</imageobject>
<caption>
<para xml:id="the_edit_playout_dialog">The Edit Playout Dialog</para>
</caption>
</mediaobject>
</para>
</sect1>
<sect1 xml:id="sect.rdcatch.automating_uploads_downloads">
<title>Automating Uploads/Downloads</title>
<para>
It's possible to use RDCatch to automatically upload and download
material from both local and Internet-based servers. Automated
downloads are configured by means of the Edit Download dialog, which
can be accessed either by clicking the
<computeroutput>Download</computeroutput> button in the Add
Event dialog (see <xref endterm="para.rdcatch.the_edit_download_dialog" endlink="mediaobject.rdcatch.edit_download_dialog"/>) to create a new record event or
by touching the <computeroutput>Edit</computeroutput> button to
modify an existing event.
</para>
<para>
<mediaobject xml:id="mediaobject.rdcatch.edit_download_dialog">
<imageobject>
<imagedata align="center" fileref="rdcatch.edit_download_dialog.png" scale="50"/>
</imageobject>
<caption>
<para xml:id="para.rdcatch.the_edit_download_dialog">The Edit Download Dialog</para>
</caption>
</mediaobject>
</para>
<para>
With the exception of the <computeroutput>Url</computeroutput>,
<computeroutput>Username</computeroutput> and
<computeroutput>Password</computeroutput> controls,
the process of configuring a download is very similar to that for
configuring a recording see the
<xref linkend="sect.rdcatch.automating_recordings"/> above for
details.
</para>
<para>
The <computeroutput>Url</computeroutput> control is used to specify
the Uniform Resource Locater for
the material to be downloaded. The following download types are
supported: <userinput>http:</userinput>,
<userinput>ftp:</userinput>, <userinput>sftp:</userinput> and
<userinput>file:</userinput>. The <computeroutput>Url</computeroutput>
field can also include
wildcard characters that can be used to construct date-based URLs.
</para>
<para>
The <computeroutput>Username</computeroutput> and
<computeroutput>Password</computeroutput> fields are used to
indicate the username
and password required for access to the server referenced in the
<computeroutput>Url</computeroutput>.
For public web pages and anonymous FTP servers, these fields can be
left blank.
</para>
<para>
Automated uploads are configured by means of the Edit Upload dialog
(see <xref endterm="para.rdcatch.the_edit_upload_dialog" endlink="metaobject.rdcatch.edit_upload_dialog"/>), which can be accessed either by clicking the
<computeroutput>Upload</computeroutput> button in the Add Event
dialog to create a new record event or
by touching the <computeroutput>Edit</computeroutput> button to
modify an existing event. The
following upload types are supported: <userinput>ftp:</userinput>,
<userinput>sftp:</userinput> and <userinput>file:</userinput>. As with
downloads, the <computeroutput>Url</computeroutput> field can also
include wildcard characters that
can be used to construct date-based URLs.
</para>
<para>
<mediaobject xml:id="metaobject.rdcatch.edit_upload_dialog">
<imageobject>
<imagedata align="center" fileref="rdcatch.edit_upload_dialog.png" scale="50"/>
</imageobject>
<caption>
<para xml:id="para.rdcatch.the_edit_upload_dialog">The Edit Upload Dialog</para>
</caption>
</mediaobject>
</para>
<para>
Configuration of an upload event is very similar to that of a download,
with the addition of the
<computeroutput>Export Format</computeroutput> control.
This is used to set
what file format should be used for the upload. Depending upon what
software encoders have been installed by the system administrator,
the following export types may be available:
</para>
<para>
<itemizedlist>
<listitem>
PCM16 Linear (*.wav)
</listitem>
<listitem>
Free Lossless Audio Codec [FLAC] (*.flac)
</listitem>
<listitem>
MPEG Layer 2 (*.mp2)
</listitem>
<listitem>
MPEG Layer 3 (*.mp3)
</listitem>
<listitem>
OggVorbis (*.ogg)
</listitem>
</itemizedlist>
</para>
<para>
The desired upload format and parameters are set by clicking the
<computeroutput>Set</computeroutput> button.
</para>
</sect1>
<sect1 xml:id="sect.rdcatch_automating_macro_execution">
<title>Automating Macro Execution</title>
<para>
It's possible to configure the automatic execution of a Macro Cart
by means of the Edit Cart Event dialog (see <xref endterm="para.rdcatch.the_edit_cart_event_dialog" endlink="mediaobject.dcatch.edit_cart_event_dialog"/>), which
can be accessed either by clicking the
<computeroutput>Macro Cart</computeroutput> button in the Add
Event dialog to create a new Macro Cart event or by touching the
<computeroutput>Edit</computeroutput> button to modify an existing
event. The process of configuring
a macro cart event is very similar to that for configuring a
recording see <xref linkend="sect.rdcatch.automating_recordings"/>
above for details.
</para>
<para>
<mediaobject xml:id="mediaobject.dcatch.edit_cart_event_dialog">
<imageobject>
<imagedata align="center" fileref="rdcatch.edit_cart_event_dialog.png" scale="50"/>
</imageobject>
<caption>
<para xml:id="para.rdcatch.the_edit_cart_event_dialog">The Edit Cart Event Dialog</para>
</caption>
</mediaobject>
</para>
</sect1>
<sect1 xml:id="sect.rdcatch.automating_switcher_operations">
<title>Automating Switcher Operations</title>
<para>
It's possible to configure an automatic operation on a switcher
device by means of the Edit Switcher Event dialog (see
<xref endterm="para.rdcatch.the_edit_switcher_event_dialog" endlink="mediaobject.rdcatch.edit_switcher_event_dialog"/>), which can be accessed either by clicking the
<computeroutput>Switch Event</computeroutput> button
in the Add Event dialog to create a new switch event or by touching
the <computeroutput>Edit</computeroutput> button to modify an
existing event.
</para>
<para>
<mediaobject xml:id="mediaobject.rdcatch.edit_switcher_event_dialog">
<imageobject>
<imagedata align="center" fileref="rdcatch.edit_switcher_event_dialog.png" scale="50"/>
</imageobject>
<caption>
<para xml:id="para.rdcatch.the_edit_switcher_event_dialog">The Edit Switcher Event Dialog</para>
</caption>
</mediaobject>
</para>
<para>
In addition to the usual fields, a switch event has
<computeroutput>Switch Matrix</computeroutput>
(the name of one of the switch matrices associated with the selected
<computeroutput>Location</computeroutput>),
<computeroutput>Switch Input</computeroutput> and
<computeroutput>Switch Output</computeroutput> controls.
When executed, a
switch events causes a take operation to be performed on the specified
switcher device between the specified input and output. It is
possible to specify the input and output either by their alphanumeric
names (assigned in RDAdmin) or by their absolute numbers.
</para>
</sect1>
</chapter>
<chapter xml:id="chapter.rdlogedit">
<title>Generating and Maintaining Logs with RDLogEdit</title>
<sect1 xml:id="sect.rdlogedit.logs_and_log_events">
<title>Logs and Log Events</title>
<para>
A Rivendell log is a sequence of one or more events to be executed by
the system, arranged in chronological order. (This functionality is
sometimes referred to as a playlist in other automation systems).
Several different types of events can be included in a log, along
with parameters governing how and under what circumstances they will
be executed.
</para>
<para>
Upon startup, RDLogEdit will show the current list of all logs on the
system. A number of important attributes of
logs can be seen from <xref endterm="para.rdlogedit.the_rdlogedit_main_window" endlink="mediaobject.rdlogedit.rdlogedit_screenshot"/>, the first being the log
name, with a summary status indicator next to it. The name is an
alpha-numeric label that is used as a unique “handle” by the system
to reference each log, and can be up to a maximum of 64 characters
long. The status indicator is intended as a quick visual guide as
to whether a particular log is ready for air (green check mark) or
not (red ex).
</para>
<para>
<mediaobject xml:id="mediaobject.rdlogedit.rdlogedit_screenshot">
<imageobject>
<imagedata align="center" fileref="rdlogedit.rdlogedit_screenshot.png" scale="65"/>
</imageobject>
<caption>
<para xml:id="para.rdlogedit.the_rdlogedit_main_window">The RDLogEdit Main Window</para>
</caption>
</mediaobject>
</para>
<para>
Next comes the log's unique <computeroutput>Name</computeroutput>,
assigned at the time the log was created, followed by it's
<computeroutput>Description</computeroutput>.
This is a free-form alpha-numeric
label that can be used to record any information that might be useful
to have appear on the log list (e.g. “This log for Sunday's show, don't
modify!”).
</para>
<para>
Next comes a column showing the owning
<computeroutput>Service</computeroutput>. Each log is owned
by exactly one service, which determines under what circumstances
the log can be played and where electronic log reconciliation (ELR)
data resulting from log playouts is sent (for an overview of
Rivendell services, see <xref linkend="sect.overview.services"/>).
</para>
<para>
Next comes three “status indicator” columns
(<computeroutput>Music</computeroutput>,
<computeroutput>Traffic</computeroutput> and
<computeroutput>Tracks</computeroutput>) indicating the log's
degree of readiness for air. A red indicator indicates that the
particular data element is required but currently missing, a green
indicator indicates an element is required and present, while a
white indicator indicates that an element is not required.
Additionally, the <computeroutput>TRACKS</computeroutput> column
contains a pair of numbers
indicating how many completed voice tracks exist in the log versus
how many total track markers exist (the subject of voice tracks and
track markers will be covered in more detail below). When all three
of these status indicators show either green or white, the summary
status indicator (at the beginning of the log's entry in the list)
will show as a green check mark, while a red indicator in any of
these three fields will show a red ex. (NOTE: because a log sports
a red ex does not indicate that the respective log cannot be played.
It is merely a visual indicator to allow logs to be quickly
&quot;eyeballed&quot; for completeness).
</para>
<para>
Next comes a pair of columns indicating the valid start date and end
date for the log.
</para>
<para>
Next comes an <computeroutput>Auto Refresh</computeroutput> column
that indicates whether the log has auto refresh enabled. (For a
discussion of auto refresh, see FIXME).
</para>
<para>
Finally, there are &quot;datestamp&quot; columns, indicating
date/time of the log's <computeroutput>Origin</computeroutput>,
<computeroutput>Last Linked</computeroutput> and
<computeroutput>Last Modified</computeroutput> operation.
</para>
<para>
A report that lists the available logs on the system can be generated
by touching the <computeroutput>Log Report</computeroutput> button.
</para>
<para>
A new log can be created by touching the
<computeroutput>Add</computeroutput> button and entering a
name, or an existing log inspected and modified by touching its entry
on the log list and then touching the
<computeroutput>Edit</computeroutput> button, resulting in the
log being opened in the Edit Log dialog.
The Edit Log dialog consists of three parts: the top section, where
much of the information shown on the log list can be inspected and
modified; the middle section, which shows the list of events
comprising the log, and the bottom section, where buttons for
modifying and saving the log are located. Each event in a log can
be one of several different types, indicated by the icon displayed
at the start of the line (see
<xref linkend="table.rdlogedit.log_event_type_icons"/> for a
breakdown of the various icons).
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="rdlogedit.edit_log_dialog.png" scale="55"/>
</imageobject>
<caption>
<para>The Edit Log Dialog</para>
</caption>
</mediaobject>
</para>
<para>
The following types of events can be incorporated into a
Rivendell log:
</para>
<table xml:id="table.rdlogedit.log_event_type_icons" frame="all" pgwide="0">
<title>Log Event Type Icons</title>
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colname="Icon" colwidth="1.0*"/>
<colspec colname="Meaning" colwidth="10.0*"/>
<tbody>
<row>
<entry align="center">
<inlinemediaobject>
<imageobject>
<imagedata fileref="../../icons/play.png" scale="100"/>
</imageobject>
</inlinemediaobject>
</entry>
<entry>
Audio Cart
</entry>
</row>
<row>
<entry align="center">
<inlinemediaobject>
<imageobject>
<imagedata fileref="../../icons/track_cart.png" scale="100"/>
</imageobject>
</inlinemediaobject>
</entry>
<entry>
Voice Track Audio Cart
</entry>
</row>
<row>
<entry align="center">
<inlinemediaobject>
<imageobject>
<imagedata fileref="../../icons/rml5.png" scale="100"/>
</imageobject>
</inlinemediaobject>
</entry>
<entry>
Macro Cart
</entry>
</row>
<row>
<entry align="center">
<inlinemediaobject>
<imageobject>
<imagedata fileref="../../icons/notemarker.png" scale="100"/>
</imageobject>
</inlinemediaobject>
</entry>
<entry>
Note Marker
</entry>
</row>
<row>
<entry align="center">
<inlinemediaobject>
<imageobject>
<imagedata fileref="../../icons/mic16.png" scale="100"/>
</imageobject>
</inlinemediaobject>
</entry>
<entry>
Track Marker
</entry>
</row>
<row>
<entry align="center">
<inlinemediaobject>
<imageobject>
<imagedata fileref="../../icons/chain.png" scale="100"/>
</imageobject>
</inlinemediaobject>
</entry>
<entry>
Chain Event
</entry>
</row>
<row>
<entry align="center">
<inlinemediaobject>
<imageobject>
<imagedata fileref="../../icons/music.png" scale="100"/>
</imageobject>
</inlinemediaobject>
</entry>
<entry>
Music Import Link
</entry>
</row>
<row>
<entry align="center">
<inlinemediaobject>
<imageobject>
<imagedata fileref="../../icons/traffic.png" scale="100"/>
</imageobject>
</inlinemediaobject>
</entry>
<entry>
Traffic Import Link
</entry>
</row>
</tbody>
</tgroup>
</table>
<sect2 xml:id="sect.rdlogedit.audio_carts">
<title>Audio Carts</title>
<para>
The first, and usually most common type of log event is an audio cart.
As the name implies, audio carts are Library entries that contain
audio material intended for playout. Audio carts were covered in
detail in <xref linkend="chapter.rdlibrary"/>.
</para>
</sect2>
<sect2 xml:id="sect.rdlogedit.macro_carts">
<title>Macro Carts</title>
<para>
A macro cart is a cart from the Library that contains one or more
system commands that can be used to cause the system to take various
actions. They were touched upon in
<xref linkend="chapter.rdlibrary"/>, and will be discussed in detail
in <xref linkend="chapter.rml"/>.
</para>
</sect2>
<sect2 xml:id="sect.rdlogedit.note_markers">
<title>Note Markers</title>
<para>
A note marker is an entry in the log that contains text intended to
be seen by operators and used as a guide or reminder (program coders
sometimes refer to this sort of functionality as a
<emphasis>remark</emphasis> or <emphasis>comment</emphasis>,
as seen in the <code>REM</code> command used by BASIC programmers).
Note markers
belong to a class of log events known as meta events because (unlike
carts, which exist in the Library independently of whether they are
placed in a log or not), they have no independent existence outside
of the specific log where they are placed. A note marker has
absolutely no effect on the execution of a log other than to simply
display some text at a specified point in a log, and as such can be
useful as a mechanism for making notes or reminders to oneself or
to others who may be executing the log.
</para>
</sect2>
<sect2 xml:id="sect.rdlogedit.track_markers">
<title>Track Markers</title>
<para>
A track marker is another meta event that is very similar in operation
to note markers, with one key addition: track markers designate or
&quot;bookmark&quot; a place in the log where a voice track is to be
recorded. (The entire topic of voice tracks and tracking will be
covered in detail in <xref linkend="chapter.voicetracking"/>).
As with note markers, track
markers have absolutely no effect on the execution of a log.
</para>
</sect2>
<sect2 xml:id="sect.rdlogedit.chain_events">
<title>Chain Events</title>
<para>
Each event in a log has a transition type, shown in the
<computeroutput>Trans</computeroutput>
column of the Edit Log dialog. The transition type determines what
happens when one event in a log ends and the next starts. Three basic
transition types can exist in a Rivendell log:
<computeroutput>PLAY</computeroutput>,
<computeroutput>SEGUE</computeroutput> and
<computeroutput>STOP</computeroutput>.
</para>
</sect2>
<sect2 xml:id="sect.rdlogedit.import_links">
<title>Import Links</title>
<para>
An import link is a placeholder event that shows where events imported
from the external music or traffic scheduling system will eventually
go. They will be covered in detail in
<xref linkend="chapter.rdlogmanager"/>.
</para>
<para>
Each event in a Rivendell log can have its parameters modified by
touching its entry in the Edit Log dialog and then clicking the
<computeroutput>Edit</computeroutput>
button, thus opening up the Edit Log Entry dialog, shown below.
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="rdlogedit.edit_log_entry_dialog.png" scale="55"/>
</imageobject>
<caption>
<para>The Edit Log Entry Dialog</para>
</caption>
</mediaobject>
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="rdlogedit.edit_log_marker_dialog.png" scale="55"/>
</imageobject>
<caption>
<para>The Edit Log Marker Dialog</para>
</caption>
</mediaobject>
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="rdlogedit.edit_voice_track_marker_dialog.png" scale="55"/>
</imageobject>
<caption>
<para>The Edit Voice Track Marker Dialog</para>
</caption>
</mediaobject>
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="rdlogedit.edit_log_chain_dialog.png" scale="55"/>
</imageobject>
<caption>
<para>The Edit Log Chain Dialog</para>
</caption>
</mediaobject>
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.rdlogedit.event_transitions">
<title>Event Transitions</title>
<para>
Each event in a log has a transition type, shown in the
<computeroutput>Trans</computeroutput>
column of the Edit Log dialog. The transition type determines what
happens when one event in a log ends and the next starts. Three basic
transition types can exist in a Rivendell log:
<computeroutput>PLAY</computeroutput>,
<computeroutput>SEGUE</computeroutput> and
<computeroutput>STOP</computeroutput>.
</para>
<sect2 xml:id="sect.rdlogedit.the_play_transition">
<title>The PLAY Transition</title>
<para>
If an event has a <computeroutput>PLAY</computeroutput> transition,
then it will begin playing when
the previous event has finished.
<computeroutput>PLAY</computeroutput> transitions are used when
automatic event sequencing is desired with no audio overlap (such
as when playing two voice-only announcements back-to-back).
</para>
</sect2>
<sect2 xml:id="sect.the_segue_transition">
<title>The SEGUE Transition</title>
<para>
<computeroutput>SEGUE</computeroutput> transitions are similar to
<computeroutput>PLAY</computeroutput> transitions, with one key
difference: if the finishing event contains segue data (either from
the Library or from a custom transition programmed in the voice
tracker), then the event will start before the prior event is
finished, causing the two pieces of audio to overlap and mix together.
<computeroutput>SEGUE</computeroutput> transitions can be a very
powerful tool for creating a variety
of special effects, particularly when used in conjunction with
musical material.
</para>
</sect2>
<sect2 xml:id="sect.rdlogedit.the_stop_transition">
<title>The STOP Transition</title>
<para>
As the name implies, <computeroutput>STOP</computeroutput>
transitions cause execution of the log to
be suspended prior to execution of the event. This is often the
desired behavior in situations where the log playout needs to be
synchronized to one or more external audio sources (such as remote
satellite feeds), and is commonly used in conjunction with Hard
Timed events (see <xref linkend="sect.rdlogedit.time_and_time_types"/>).
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.rdlogedit.time_and_time_types">
<title>Time and Time Types</title>
<para>
All Rivendell log events have an associated time type, which controls
what effect (if any) the passage of time will have on the event.
There are two basic time types: <emphasis>relative</emphasis> and
<emphasis>hard</emphasis>. Additionally,
the hard time type has several additional options that further modify
its behavior.
</para>
<sect2 xml:id="sect.rdlogedit.the_relative_time_type">
<title>The Relative Time Type</title>
<para>
The default time type for log events, a relative time type simply
means that the event is assumed to have a start time of whenever
the previous event ends (if it has a
<computeroutput>PLAY</computeroutput> or
<computeroutput>SEGUE</computeroutput> transition)
or whenever it is started (if it has a
<computeroutput>STOP</computeroutput> transition).
</para>
</sect2>
<sect2 xml:id="sect.rdlogedit.the_hard_time_type">
<title>The Hard Time Type</title>
<para>
A hard time type causes the event to be executed or otherwise acted
upon when the wall clock equals the time associated with the event.
Hard times are a powerful feature that can be used to synchronize
the log to various external events. An event can be assigned a
hard time by clicking the <computeroutput>Start at</computeroutput>
check box in the Edit Log Entry
and filling in the desired time, and will show up with the letter
<computeroutput>T</computeroutput> appearing at the beginning of
its listed time in the
<computeroutput>Time</computeroutput> column of the Edit Log dialog.
</para>
<para>
The specific action that is performed when the time matches is
determined by the option parameters supplied as part of the event.
Three basic actions are possible:
</para>
<para>
<itemizedlist>
<listitem>
Start the event immediately
</listitem>
<listitem>
Cue to the event (&quot;Make Next&quot;)
</listitem>1
<listitem>
Wait up to some period of time, then start the event
</listitem>
</itemizedlist>
</para>
<sect3 xml:id="sect.rdlogedit.start_immediately">
<title>Start Immediately</title>
<para>
As implied by the name, if the event is set to start immediately,
it will be started as soon as the hard time is reached. Any
currently playing events in the log will be simultaneously
stopped down.
</para>
</sect3>
<sect3 xml:id="sect.rdlogedit.cue_to_the_event___make_next___">
<title>Cue to the Event (&quot;Make Next&quot;)</title>
<para>
If set to 'Make Next', the event will be cued up to become the
next event to be executed in the log, bypassing any intervening
events in the log between the currently playing event and the
hard timed one. Any currently playing events are unaffected.
</para>
</sect3>
<sect3 xml:id="sect.rdlogedit.wait_up_to_some_period_of_time__then_start_the_event">
<title>Wait up to some period of time, then start the event</title>
<para>
Very similar to &quot;start immediately&quot;, with the
difference that, if one or more events are currently playing,
the log will wait up to the specified amount of time
before stopping them and starting the new event. If the currently
playing event(s) finish before the specified time period has elapsed,
then the event is started immediately.
</para>
</sect3>
</sect2>
</sect1>
<sect1 xml:id="sect.rdlogedit.editing_log_event_parameters">
<title>Editing Log Event Parameters</title>
<sect2 xml:id="sect.rdlogedit.specifying_a_cart">
<title>Specifying a Cart</title>
<para>
The cart number to use for an event can be specified by touching
the <computeroutput>Select Cart</computeroutput> button in the
Edit Log Entry dialog, which will
open up the Select Cart dialog.
Alternatively, it is possible to simply enter the cart number in
the <computeroutput>Cart</computeroutput> field if the number is
already known. The <computeroutput>Title</computeroutput> and
<computeroutput>Artist</computeroutput> information will be
supplied automatically by the system
from the cart's label.
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="rdlogedit.select_cart_dialog.png" scale="55"/>
</imageobject>
<caption>
<para>The Select Cart Dialog</para>
</caption>
</mediaobject>
</para>
</sect2>
<sect2 xml:id="sect.rdlogedit.specifying_meta_event_parameters">
<title>Specifying Meta Event Parameters</title>
<para>
Note marker and track marker events each take only a single
parameter: a <computeroutput>Comment</computeroutput> text that
will show up on the log entry.
In the case of a chain event, the name of the log to chain to must
be supplied in the <computeroutput>Log Name</computeroutput> field,
or the <computeroutput>Select</computeroutput> button can be
touched to bring up the Select Log dialog to allow a name to picked
from a list of all those available. Note that meta events are
assigned transition and time types just the same as cart events.
</para>
</sect2>
<sect2 xml:id="sect.rdlogedit.rearranging_log_events">
<title>Rearranging Log Events</title>
<para>
Existing events in a log can be cut, copied, pasted or rearranged
by touching the appropriate buttons in the Edit Log dialog.
In addition, touch the <computeroutput>Delete</computeroutput>
button will cause the selected
log event(s) to be removed from the log.
</para>
</sect2>
<sect2 xml:id="sect.rdlogedit.saving_or_abandoning_changes_to_a_log">
<title>Saving or Abandoning Changes to a Log</title>
<para>
Any changes made to a log can be saved by touching either the
<computeroutput>Save</computeroutput>
or <computeroutput>OK</computeroutput> buttons in the Edit Log
dialog. The current log can be saved
under a different name by touching the
<computeroutput>Save As</computeroutput> button, while
touching <computeroutput>Cancel</computeroutput> will abandon
any changes made since the last save.
</para>
</sect2>
<sect2 xml:id="sect.rdlogedit.missing_invalid_cart_events">
<title>Missing/Invalid Cart Events</title>
<para>
If a given event has a problem (such as referencing a cart that
does not exist in the Library, or that is not enabled for play on
the log's owning service) its entry will be highlighted either
RED (indicating a missing/invalid cart) or MAGENTA (indicating a
cart without permission to run on the owning service). It's also
possible to generate an exception report summarizing problem cart
entries by touching the
<computeroutput>Check Log</computeroutput> button.
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.rdlogedit.generating_log_reports">
<title>Generating Log Reports</title>
<para>
Various Log reports can be generated by touching the
<computeroutput>Reports</computeroutput> button
on the Edit Log dialog and then selecting the desired report and
touching the <computeroutput>Generate</computeroutput> button.
The following reports are available:
</para>
<sect2 xml:id="sect.rdlogedit.log_listing">
<title>Log Listing</title>
<para>
A chronological listing of all events in the log.
</para>
</sect2>
<sect2 xml:id="sect.rdlogedit.log_exception_report">
<title>Log Exception Report</title>
<para>
A list of missing/unplayable carts referenced in the log.
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.rdlogedit.auditioning_audio">
<title>Auditioning Audio</title>
<para>
The audio referenced by an audio event can be sampled in the Edit
Audio dialog by highlighting the desired event and then touching the
<computeroutput>Play</computeroutput> button. No attempt to evaluate
the rotation logic of the event
is made the audio played is intended solely as a 'sample' to help
identify the type of material.
</para>
</sect1>
</chapter>
<chapter xml:id="chapter.rdairplay">
<title>Running Logs with RDAirPlay</title>
<sect1 xml:id="sect.rdairplay.overview">
<title>Overview</title>
<para>
RDAirPlay is the Rivendell module used to run logs generated by the
RDLogEdit or RDLogManager (for an overview of Rivendell logs, see
<xref linkend="chapter.rdlogedit"/>).
It contains a wide array of features for enabling
playout of audio content in live assist as well as fully automated
environments.
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="rdairplay.rdairplay_screenshot.png" scale="45"/>
</imageobject>
<caption>
<para>The RDAirPlay Main Window</para>
</caption>
</mediaobject>
</para>
</sect1>
<sect1 xml:id="sect.rdairplay.log_machines">
<title>Log Machines</title>
<para>
Fundamental to the operation of RDAirPlay is the concept of a
<emphasis>log machine</emphasis>.
A log machine is a virtual “device” into which a Rivendell
log may be loaded and executed. RDAirPlay has three such log machines,
called <computeroutput>Main Log</computeroutput>,
<computeroutput>Aux 1 Log</computeroutput> and
<computeroutput>Aux 2 Log</computeroutput>. Each of these log machines
is completely independent of the others in the sense that different
logs can be loaded and executed simultaneously in the respective
machines.
</para>
</sect1>
<sect1 xml:id="sect.rdairplay.layout">
<title>Layout</title>
<para>
The RDAirPlay main screen consists of
four primary areas: the top area, which contains a variety of
indicators for use in live assist situations as well as a set of
audio meters; the button widget, which occupies the bulk of the
left-hand side of the screen; the right-hand side, which displays
either a SoundPanel array or a full log width; and the edit buttons
in the lower left-hand corner of the screen.
</para>
<para>
The top area contains the following indicators:
</para>
<sect2 xml:id="sect.rdairplay.the_wall_clock">
<title>The Wall Clock</title>
<para>
<mediaobject>
<imageobject>
<imagedata align="left" fileref="rdairplay.wallclock_widget.png" scale="60"/>
</imageobject>
</mediaobject>
</para>
<para>
In the upper left-hand corner is the wall clock indicator, which
indicates
the current system date and time. The style used for displaying times
throughout RDAirPlay can be toggled between 24 hour “military” format
and the traditional “AM/PM” presentation by clicking once on this
display. If the system administrator has enabled it, this display
will also flash RED to indicate possible clock inaccuracy due to loss
of master clock synchronization.
</para>
</sect2>
<sect2 xml:id="sect.rdairplay.the_post_point_counter">
<title>The Post Point Counter</title>
<para>
<mediaobject>
<imageobject>
<imagedata align="left" fileref="rdairplay.postpoint_ontime_widget.png" scale="60"/>
</imageobject>
</mediaobject>
</para>
<para>
Immediately to the right of the wall clock is the Post Point Counter.
A post point is an attribute applied to a log event with a hard time
type. The post point counter uses this information to display
countdown and timing information.
</para>
<para>
The counter can be in one of four possible states:
<computeroutput>Idle</computeroutput>,
<computeroutput>On Time</computeroutput>,
<computeroutput>Under Time</computeroutput> or
<computeroutput>Over Time</computeroutput>.
The counter will provide an estimate of how “on-time” the log currently
is, on the basis of the current time and events still scheduled to be
played.
</para>
<para>
If the playout is such that the next hard time will be reached within one
second of its programmed time, then the counter will be in
<computeroutput>On Time</computeroutput> mode. The value shown in
the square brackets is the
scheduled time of the hard-timed event.
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="left" fileref="rdairplay.postpoint_early_widget.png" scale="60"/>
</imageobject>
</mediaobject>
</para>
<para>
If the playout is such that the next hard time will be reached
one second
or more before its programmed time, then the counter will be in
<computeroutput>Early</computeroutput>
mode. It will also give an indication of how
much more material would need to be added to make the join on time.
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="left" fileref="rdairplay.postpoint_late_widget.png" scale="60"/>
</imageobject>
</mediaobject>
</para>
<para>
If the playout is such that the next hard time will be reached one
second or more after its programmed time, then the counter will be in
<computeroutput>Late</computeroutput>
mode. It will also give an indication of how
much material would need to be removed to make the join on time.
</para>
</sect2>
<sect2 xml:id="sect.rdairplay.the_audio_meter">
<title>The Audio Meter</title>
<para>
<mediaobject>
<imageobject>
<imagedata align="left" fileref="rdairplay.audio_meter.png" scale="60"/>
</imageobject>
</mediaobject>
</para>
<para>
Immediately beneath the wall clock and post point counter is the audio
meter. The meter shows the current peak levels of audio being played
out of RDAirPlay, with '0' level referenced to -16 dBFS.
</para>
</sect2>
<sect2 xml:id="sect.rdairplay.the_pie_wedge_widget">
<title>The Pie Wedge Widget</title>
<para>
<mediaobject>
<imageobject>
<imagedata align="left" fileref="rdairplay.piewedge_widget.png" scale="60"/>
</imageobject>
</mediaobject>
</para>
<para>
In the top center of the top area is the pie wedge widget. This
widget counts down the final few seconds of each event. The length
of time it counts down, along with whether it counts to the start
of the next transition or the absolute end of the event are both
configurable in RDADmin. The color of the band that grows as the
countdown progresses (shown in GREEN in the illustration) will
change color
to indicate if the currently playing event is the last event before
a log stopdown. If it is the last, it will be RED, if not, GREEN.
A BLUE band and countdown will also appear to indicate the event's
talk time (if talk time markers have been set in the underlying cart).
</para>
</sect2>
<sect2 xml:id="sect.rdairplay.the_next_stop_counter">
<title>The Next Stop Counter</title>
<para>
<mediaobject>
<imageobject>
<imagedata align="left" fileref="rdairplay.next_stop_widget.png" scale="60"/>
</imageobject>
</mediaobject>
</para>
<para>
Immediately to the right of the pie wedge widget is the next stop
counter. The large numerals indicate the predicted interval of time
before the next stopdown of the
<computeroutput>Main Log</computeroutput> machine, with the actual
predicted time in the square brackets. If the
<computeroutput>Main Log</computeroutput> is already
stopped, then the counter simply displays
<computeroutput>Stopped</computeroutput>.
</para>
</sect2>
<sect2 xml:id="sect.rdairplay.the_mode_indicator">
<title>The Mode Indicator</title>
<para>
<mediaobject>
<imageobject>
<imagedata align="left" fileref="rdairplay.mode_widget.png" scale="60"/>
</imageobject>
</mediaobject>
</para>
<para>
In the upper right-hand corner of the top area is the mode indicator,
showing the current automation mode of the log machines. Three
different modes are possible:
<computeroutput>Automatic</computeroutput>, in which all log features,
including <computeroutput>PLAY</computeroutput> and
<computeroutput>SEGUE</computeroutput> transitions and hard times
are fully
enabled; <computeroutput>LiveAssist</computeroutput>, in which no
automatic transitions or hard start
times are executed but automatic crossfades are done between
elements; and <computeroutput>Manual</computeroutput>, which is
very similar to LiveAssist except
that not even automatic crossfades are enabled (thus permitting
fully manual crossfade control by means of an external console).
To change RDAirPlay to a different mode, simply touch the mode
indicator until the desired mode is indicated.
</para>
</sect2>
<sect2 xml:id="sect.rdairplay.the_label_area">
<title>The Label Area</title>
<para>
<mediaobject>
<imageobject>
<imagedata align="left" fileref="rdairplay.label_widget.png" scale="60"/>
</imageobject>
</mediaobject>
</para>
<para>
Immediately below the next stop counter and mode indicator is the
label area. Text messages can be made to appear here (by means of
RML commands) to signal the operator concerning the state of the
system or need to take some kind of action.
</para>
</sect2>
<sect2 xml:id="sect.rdairplay.the_right_hand_side">
<title>The Right-Hand Side</title>
<para>
Directly below the label area is the right-hand side. The right-hand
side can display either a SoundPanel array or a full log widget for
each of the three log machines, selected by clicking the appropriate
button in the lower right-hand corner of the screen. (NOTE:
depending upon how the system administrator has configured the
system, not all of the log machine buttons may be visible on your
system).
</para>
</sect2>
<sect2 xml:id="sect.rdairplay.the_full_log_widget">
<title>The Full Log Widget</title>
<para>
<mediaobject>
<imageobject>
<imagedata align="left" fileref="rdairplay.full_log_widget.png" scale="60"/>
</imageobject>
</mediaobject>
</para>
<para>
As the name implies, the full log widget can be used to view the
contents of a log over its entire length. To load a log, touch the
<computeroutput>Select Log</computeroutput> button to bring up the
Select Log dialog, select the
desired log from the list and then touch
<computeroutput>Load</computeroutput>. The currently loaded
log can also be saved by touching the
<computeroutput>Save</computeroutput> or
<computeroutput>Save As</computeroutput> buttons, or
the current log unloaded by touching
<computeroutput>Unload</computeroutput>.
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="rdairplay.select_a_log_dialog.png" scale="60"/>
</imageobject>
<caption><para>The Select Log Dialog</para></caption>
</mediaobject>
</para>
<para>
Once a log is loaded, it can be started at any point by touching an
event and then pressing the <computeroutput>Play</computeroutput>
button. Any playing event can
likewise be stopped by touching in the event and then pressing the
<computeroutput>Stop</computeroutput> button.
To cue-up an event so that it is the next to play
(indicated by the event being the first with a light green
background), touch the event and then press the
<computeroutput>Make Next</computeroutput> button.
The play parameters of an event can be modified by touching the event,
then pressing the Modify button, bringing up the Edit Event dialog.
</para>
<para>
In addition to having the ability to modify the event's time and
transition parameters, the Edit Event dialog can be used to audition
the event's audio in Cue or set the start position of the audio for
on-air playback (so as to allow a program to be joined
&quot;in progress&quot;, for example). To audition the audio,
simply press the <computeroutput>Play</computeroutput> button.
The slider can be moved to adjust
where in the audio to audition from. To set the start position,
press the <computeroutput>Start</computeroutput> button and then
position the slider where you wish
the start to be. The red line on the progress display indicates the
current start position. Pressing the
<computeroutput>Start</computeroutput> button again returns
the dialog to Audition mode.
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="rdairplay.edit_event_dialog.png" scale="60"/>
</imageobject>
<caption><para>The Edit Event Dialog</para></caption>
</mediaobject>
</para>
<para>
When running a log, it is often desirable to have the currently
playing event always in sight. To do this, toggle the
<computeroutput>Scroll</computeroutput>
button &quot;ON&quot; (blue background).
</para>
</sect2>
<sect2 xml:id="sect.rdairplay.the_button_log_widget">
<title>The Button Log Widget</title>
<para>
<mediaobject>
<imageobject>
<imagedata align="left" fileref="rdairplay.button_log_widget.png" scale="60"/>
</imageobject>
</mediaobject>
</para>
<para>
To the left of the full log widget is the button log widget,
consisting of a column of seven large buttons adjacent to cart labels.
This widget provides another, specialized “view” of the
<computeroutput>Main Log</computeroutput> log
machine. Specifically, the first seven currently playing and/or
next events in that log machine will always be visible here. Events
visible in the button log will be shown in the full log widget as
having a green background. Unlike the full log widget, the button
log is always visible, regardless of which display has been selected
for the right-hand side.
</para>
<para>
To start an event from the button log, simply touch an event's
corresponding <computeroutput>Start</computeroutput> button.
Touching the button of a running event
will either (depending upon how the system administrator has
configured RDAirPlay) stop or pause it. To modify an event's
parameters (via the Edit Event dialog), simply double-click the
event's cart label.
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.rdairplay.editing_a_log">
<title>Editing a Log</title>
<sect2 xml:id="sect.rdairplay.drag_and_drop">
<title>Drag and Drop</title>
<para>
<mediaobject>
<imageobject>
<imagedata align="left" fileref="../../icons/trashcan-32x32.png" scale="60"/>
</imageobject>
</mediaobject>
</para>
<para>
If the System Administrator has enabled Drag and Drop operation, any
event can be copied by clicking and holding the right mouse button and
then dragging it to the desired location of the copy. An event can
also be deleted from a log by dragging the trash can icon and dropping
it onto the event to be deleted.
</para>
</sect2>
<sect2 xml:id="sect.rdairplay.the_editing_buttons">
<title>The Editing Buttons</title>
<para>
<mediaobject>
<imageobject>
<imagedata align="left" fileref="rdairplay.edit_buttons.png" scale="60"/>
</imageobject>
</mediaobject>
</para>
<para>
It is possible to edit the log loaded into any of the three log
machines by means of the log edit buttons in the lower left-hand corner
of the screen.
</para>
<sect3 xml:id="sect.rdairplay_adding_an_event">
<title>Adding an Event</title>
<para>
To add an event, touch the <computeroutput>ADD</computeroutput>
button to open the Select Cart dialog,
pick the desired cart and then touch
<computeroutput>OK</computeroutput>. To place the selected cart
using the button log widget, simply touch one of the yellow
<computeroutput>WHERE?</computeroutput>
buttons. To place it using the full log widget, click the event
where you wish it to go and then touch the yellow
<computeroutput>WHERE?</computeroutput> button.
If, after selecting a cart from the Select Cart dialog, you decide
you don't want to add it after all, simply touch the
<computeroutput>ADD</computeroutput> button again
to cancel the operation.
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="rdairplay.where_to.png" scale="45"/>
</imageobject>
<caption><para>RDAirPlay Prompting for a Location</para></caption>
</mediaobject>
</para>
<para>
Alternatively, if the System Administrator has enabled Drag and Drop
functionality, carts can be dragged directly from an instance of
RDLibrary and dropped into the desired location on RDAirPlay.
</para>
</sect3>
<sect3 xml:id="sect.rdairplay_deleting_an_event">
<title>Deleting an Event</title>
<para>
To delete an event, touch the <computeroutput>DEL</computeroutput>
button, then touch one of the
violet <computeroutput>DELETE</computeroutput> buttons in the button
log widget, or select an event
and then touch the violet <computeroutput>DELETE</computeroutput>
button. To cancel the operation,
simply touch the <computeroutput>DEL</computeroutput> button again.
</para>
<para>
If the System Administrator has enabled Drag and Drop
functionality, carts can also be deleted by dragging the icon
of the trash can and dropping it onto the appropriate event.
</para>
</sect3>
<sect3 xml:id="sect.rdairplay.moving_an_event">
<title>Moving an Event</title>
<para>
To move an event, touch the <computeroutput>MOVE</computeroutput>
button, then touch one of the violet
<computeroutput>MOVE</computeroutput> buttons in the button log
widget, or select an event and then
touch the violet <computeroutput>MOVE</computeroutput> button,
then touch one of the yellow <computeroutput>TO</computeroutput>
buttons
in the button log widget, or select an event and then touch the
yellow <computeroutput>TO</computeroutput> button.
To cancel the operation at any stage, simply touch
the <computeroutput>MOVE</computeroutput> button again.
It is perfectly permissible to move an event
between two different log machines.
</para>
</sect3>
<sect3 xml:id="sect.rdairplay.copying_an_event">
<title>Copying an Event</title>
<para>
To copy an event, touch the <computeroutput>COPY</computeroutput>
button, then touch one of the
violet <computeroutput>COPY</computeroutput> buttons in the button
log widget, or select an event
and then touch the violet <computeroutput>COPY</computeroutput>
button, then touch one of the yellow
<computeroutput>TO</computeroutput> buttons in the button log
widget, or select an event and then
touch the yellow <computeroutput>TO</computeroutput> button.
To cancel the operation at any stage,
simply touch the <computeroutput>COPY</computeroutput> button again.
It is perfectly permissible to
copy an event between two different log machines.
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="rdairplay.delete_from.png" scale="45"/>
</imageobject>
<caption><para>RDAirPlay Prompting for a Cart to Copy</para></caption>
</mediaobject>
</para>
<para>
If the System Administrator has enabled Drag and Drop
functionality, carts can also be copied by simply dragging them
from where they are to the new location where they are wanted.
</para>
</sect3>
</sect2>
<sect2 xml:id="sect.rdairplay.the_soundpanel">
<para>
<mediaobject>
<imageobject>
<imagedata align="left" fileref="rdairplay.soundpanel_widget.png" scale="60"/>
</imageobject>
</mediaobject>
</para>
<title>The SoundPanel</title>
<para>
The SoundPanel is an array of buttons that appears in the right-hand
side of RDAirPlay when the <computeroutput>Sound Panel</computeroutput>
button is selected. Each button can be associated with
a particular
cart in the Library (either Audio or Macro carts), which is then
played each time the button is clicked. The soundpanel is
particularly useful in live assist situations where it is desired to
drop in some piece of audio on a live, improvised basis.
</para>
</sect2>
<sect2 xml:id="sect.rdairplay.panel_types">
<title>Panel Types</title>
<para>
The SoundPanel has multiple panels or “panes” that can scrolled
through by touching the double-left or double-right arrow buttons.
Each panel has a designator, (displayed just to the right of the
arrow keys), consisting of the letter <computeroutput>U</computeroutput>
or <computeroutput>S</computeroutput> followed by a
number. An <computeroutput>S</computeroutput> indicates that the
panel is a 'system' panel,
meaning that its button assignments will show up only on this
particular host system; while a <computeroutput>U</computeroutput>
indicates a 'user' panel,
one which is associated with a particular user and that will
&quot;follow around&quot; that user whereever he logs in in the
site. (Depending upon how the system administrator has configured
RDAirPlay, you may not have both of these panel types available to
you).
</para>
</sect2>
<sect2 xml:id="sect.rdairplay.programming_a_soundpanel_button">
<title>Programming a SoundPanel Button</title>
<para>
To associate a cart with a panel button, first touch the
<computeroutput>Setup</computeroutput>
button, which will begin to flash. (Depending upon how the system
administrator has configured RDAirPlay, the
<computeroutput>Setup</computeroutput> button may be
disabled). Next, touch the button you wish to program, opening the
Edit Button dialog.
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="rdairplay.edit_button_dialog.png" scale="45"/>
</imageobject>
<caption><para>The Edit Button Dialog</para></caption>
</mediaobject>
</para>
<para>
Touch the <computeroutput>Set Cart</computeroutput> button to open
the Select Cart dialog and pick a
cart. To clear the button i.e. have no cart associated with it
touch the <computeroutput>Clear</computeroutput> button. To assign
a custom background color to the
button, touch the <computeroutput>Set Color</computeroutput> button.
A custom label can be entered
in the <computeroutput>Label</computeroutput> field, or the name of
the cart will be used by default.
Touch the <computeroutput>OK</computeroutput> button when done.
When done programming all the
desired buttons, touch the <computeroutput>Setup</computeroutput>
button again to toggle off <computeroutput>Setup</computeroutput> mode.
</para>
<para>
If the System Administrator has enabled Drag and Drop
functionality, buttons can also be programmed by simply dragging and
dropping a cart (from RDLibrary or from elsewhere in RDAirPlay) onto
the desired button.
</para>
</sect2>
</sect1>
</chapter>
<chapter xml:id="chapter.rdlogmanager">
<title>Generating Logs with RDLogManager</title>
<sect1 xml:id="sect.rdlogmanager.generating_logs_with_rdlogmanager">
<title>Overview</title>
<para>
RDLogManager is a tool for generating Rivendell logs. It is different
from RDLogEdit in that, instead of building logs line-by-line,
it allows log structures to be defined by a series of rules (called
<emphasis>events</emphasis> and <emphasis>clocks</emphasis>) that
are then plugged into a time framework
(called a <emphasis>grid</emphasis>). This grid is then used to
generate logs automatically
on an as-needed basis. Each Rivendell service has its own,
separately defined grid, thus allowing for separate log generation
rules for each service. This system of rules allows for very
powerful, modular features, including the ability to import and use
scheduling data from various external third party systems, such as
music schedulers and traffic and billing systems.
</para>
<para>
RDLogManager also includes facilities for generating
<emphasis>reports</emphasis>. Reports
are data outputs that detail whether certain events aired as
scheduled, and under what circumstances. Reports are available in
various formats. Some are intended to be read by humans, while
others are intended for use by other, external software systems as a
means of reconciling exported schedules.
</para>
<para>
When RDLogManager is started, it displays its main menu.
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="rdlogmanager.rdlogmanager_screenshot.png" scale="45"/>
</imageobject>
<caption><para>The Log Grids Dialog</para></caption>
</mediaobject>
</para>
</sect1>
<sect1 xml:id="sect.rdlogmanager.grids">
<title>Grids</title>
<para>
Each Rivendell service has an RDLogManager grid. To see the list of
available grids, touch the <computeroutput>Edit Grids</computeroutput>
button to open the Log Grids dialog.
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="rdlogmanager.log_grids_dialog.png" scale="45"/>
</imageobject>
<caption><para>The Log Grids Dialog</para></caption>
</mediaobject>
</para>
<para>
To open a particular grid, select its service name and touch the
<computeroutput>Edit</computeroutput>
button.
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="rdlogmanager.edit_grid_dialog.png" scale="40"/>
</imageobject>
<caption><para>The Edit Grid Dialog</para></caption>
</mediaobject>
</para>
<para>
Each grid has slots for every hour of every day of the broadcast week
168 slots in all. By specifying a particular clock to go into each
of these slots, a set of rules that RDLogManager can use to generate
a log for any given day of the week is built up. To specify a clock,
simply touch the particular hour of interest to open up the
<computeroutput>Select Log Clock</computeroutput> dialog.
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="rdlogmanager.log_clocks.png" scale="45"/>
</imageobject>
<caption><para>The Log Clocks Dialog</para></caption>
</mediaobject>
</para>
<para>
Click the desired clock, then touch the
<computeroutput>OK</computeroutput> button. To clear the
assignment of any clock to the selected hour, touch the
<computeroutput>Clear</computeroutput> button,
then <computeroutput>OK</computeroutput>.
</para>
<para>
It is possible to 'drill down' directly to the underlying
configuration of a clock (to be covered shortly) by right-clicking on
the relevant hour in a grid and selecting
<computeroutput> Edit Clock</computeroutput>.
</para>
</sect1>
<sect1 xml:id="sect.rdlogmanager.clocks">
<title>Clocks</title>
<para>
An RDLogManager clock is a collection of RDLogManager events,
arranged in terms of their start time (relative to the beginning of
the hour) and length. It basically can be thought of as the
&quot;schedule&quot; of an hour <emphasis>any</emphasis> hour.
Once defined, a clock
can be plugged into any hour of a grid of any service, thus making
for easy modularization and changes to a service's schedule.
</para>
<para>
To see the list of available clocks, touch the
<computeroutput>Edit Clocks</computeroutput> button in
RDLogManager's Main Menu to open the Log Clocks dialog.
Each RDLogManager clock can be assigned a
three-letter code and color, as an aid in identifying it when
assigned to grids. To add a new clock, touch the
<computeroutput>Add</computeroutput> button, or to
edit a clock's parameters, click on it and touch the
<computeroutput>Edit</computeroutput> button.
In each case, the Edit Clock dialog will open.
Clocks can also be deleted by touching the
<computeroutput>Delete</computeroutput> button or renamed
by touching the <computeroutput>Rename</computeroutput> button.
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="rdlogmanager.log_clock_list.png" scale="45"/>
</imageobject>
<caption><para>The Log Clock List Dialog</para></caption>
</mediaobject>
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="rdlogmanager.edit_clock_dialog.png" scale="40"/>
</imageobject>
<caption><para>The Edit Clock Dialog</para></caption>
</mediaobject>
</para>
<para>
The Edit Clock dialog consists of three main sections: a tabular
list of events in chronological order, a graphical depiction of the
clock in the traditional “broadcast clock” format, and a series of
action buttons across the bottom. The clock's three-letter code is
set by means of the <computeroutput>Code</computeroutput> field
in the upper right-hand corner of the
table area. Its color can be set by touching the
<computeroutput>Color</computeroutput> button. To
save the clock without exiting the dialog, touch the
<computeroutput>Save</computeroutput>
or <computeroutput>Save As</computeroutput>
buttons. To add a new event to the clock, touch the
<computeroutput>Add</computeroutput> button, or
to edit an existing entry touch the
<computeroutput>Edit</computeroutput> button. In either case,
the Edit Event Assignment dialog will open. To
delete an entry, touch the <computeroutput>Delete</computeroutput>
button. As in the case of grids,
it is possible to 'drill down' into the underlying RDLogManager
event by right-clicking on the respective entry in the clock event
table and selecting <computeroutput>Edit Event</computeroutput>.
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="rdlogmanager.edit_event_assignment_dialog.png" scale="45"/>
</imageobject>
<caption><para>The Edit Event Assignment Dialog</para></caption>
</mediaobject>
</para>
<para>
The Edit Event Assignment dialog simply consists of an
<computeroutput>Event</computeroutput> field
for the name of the RDLogManager event and
<computeroutput>Start Time</computeroutput> and
<computeroutput>End Time</computeroutput>
fields for the start and end times relative to the start of the
hour. A list of available events can be brought up by touching the
<computeroutput>Select</computeroutput> button to bring up the
Log Events dialog.
</para>
<para>
Each clock can be designated as being associated with one or more
services. This can make finding the correct clock for a given
service much faster, as the
<computeroutput>Filter</computeroutput> control on the List Clocks dialog
can then be used. To program these associations, touch the
<computeroutput>Services List</computeroutput> button in the Edit
Clock dialog to bring up the Service
Associations dialog.
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="rdlogmanager.service_association_dialog.png" scale="45"/>
</imageobject>
<caption><para>The Service Association Dialog</para></caption>
</mediaobject>
</para>
<para>
To designate a service as being valid for this clock, select the
services name in the <computeroutput>Available Services</computeroutput>
list and then touch the <computeroutput>Add &gt;&gt;</computeroutput>
button. Likewise, to deselect a service, select its name in the
<computeroutput>Enabled Services</computeroutput> list and then touch
the <computeroutput>&lt;&lt; Remove</computeroutput> button.
</para>
</sect1>
<sect1 xml:id="sect.rdlogmanager.events">
<title>Events</title>
<para>
An RDLogManager event is a set of rules that define a series of log
elements (audio carts, macro carts, markers, etc) that should be
inserted into a log, along with the appropriate log event parameters
(transition type, time type, etc) that should be associated with them.
The actual elements to be inserted can be specified directly within
the event itself, or imported from a data file generated by an
external scheduling system. Up to two such external scheduling
sources can be defined for each service. While for convenience sake
these are designated as 'Traffic' and 'Music' within RDLogManager,
they can each be used anywhere a means of importing external
scheduling data into the system is needed, regardless of whether such
data actually references commercial or musical material or not.
</para>
<para>
To see the list of available RDLogManager events, touch the
<computeroutput>Edit Events</computeroutput> button on the
RDLogManager Main Menu to open the Log Events
dialog. It is possible to filter the list of
available events to only those used for a particular service by
selecting the service in the <computeroutput>Filter</computeroutput>
control. To add a new event,
touch the <computeroutput>Add</computeroutput> button, or to edit
an event's parameters, click on it
and touch the <computeroutput>Edit</computeroutput> button.
In each case, the Edit Event dialog will open.
Events can also be deleted by touching
the <computeroutput>Delete</computeroutput> button or renamed by
touching the <computeroutput>Rename</computeroutput> button.
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="rdlogmanager.log_events_dialog.png" scale="45"/>
</imageobject>
<caption><para>The Log Events Dialog</para></caption>
</mediaobject>
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="rdlogmanager.editing_event.png" scale="40"/>
</imageobject>
<caption><para>The Editing Event Dialog</para></caption>
</mediaobject>
</para>
<para>
The Edit Event dialog consists of two main parts: a Library cart
picker widget on the left side, and an area showing the various event
parameters on the right. Audio contained within audio carts can be
sampled by selecting the desired cart and then touching the
<computeroutput>Play</computeroutput>
button. Programming an event basically consists of specifying four
things: its log parameters (transition and time types), the list of
<computeroutput>Pre-Import</computeroutput> events, the event import
(if any) and the list of
<computeroutput>Post-Import</computeroutput> events.
The first matter to be decided is if the event
should have a hard start time: if so, then the
<computeroutput>Use hard start time</computeroutput>
check box in the TIMED START section should be ticked. Ticking this box
will enable all of the usual hard start parameters to be specified.
If an automatic timed start is not desired, then it is possible to
check the <computeroutput>Cue to this event</computeroutput> checkbox
in the <computeroutput>PREPOSITION LOG</computeroutput> section.
This will cause RDLogManager to place a hard time with a 'Make Next'
attribute on the first item of the event effectively, causing the
event to be automatically “cued up” at the scheduled time something
that can be particularly handy for keeping spot breaks in sync when
&quot;overscheduling&quot; music.
</para>
<para>
Next, if it is desired to have RDLogManager try to insert
material automatically from the Autofill List to ensure that the event
has the length indicated by its parent clock, the
<computeroutput>Use Autofill</computeroutput> box in
the <computeroutput>ENFORCING LENGTH</computeroutput> section
should be checked. (Configuring the
Autofill List is covered in detail in the Rivendell Technical and
Administration Guide). If Autofill is enabled, it is also possible
to tick the
<computeroutput>Warn if fill is under or over</computeroutput> checkbox
to have RDLogManager
generate a warning if it was unable to properly fill the event when
the log was generated.
</para>
<para>
Next, the list of log events (if any) to be inserted before the data
import should be placed in the
<computeroutput>PRE-IMPORT CARTS</computeroutput> list. For audio or
macro carts, these can be simply dragged and dropped from the Library
cart list on the left-hand side of the dialog. Meta events can be
inserted by right-clicking on the list and selecting the desired
element. It is also possible to edit or delete elements and set the
transition type of each element through the right-click menu.
</para>
<para>
The <computeroutput>IMPORT</computeroutput> section then defines
which (if any) source will be used
for importing external scheduling events into the log. Either
<computeroutput>Music</computeroutput>,
<computeroutput>Traffic</computeroutput> or
<computeroutput>None</computeroutput> can be selected. If
<computeroutput>Music</computeroutput> or
<computeroutput>Traffic</computeroutput> is selected,
then RDLogManager will import any events from those sources that fall
within the start and end times of the event (as supplied by the
parent clock). These start and end times can be further broadened by
means of 'slop factors' entered into the Import carts scheduled
controls (this is sometimes necessary to get the import to work
properly with certain external scheduler systems). The transition
types to be used for the first and subsequent imported elements can
be specified with the <computeroutput>First cart has a</computeroutput>
and <computeroutput>Imported carts have a</computeroutput>
controls. If <computeroutput>Music</computeroutput> has been selected
as the import source, it is
also possible to specify the event to use to import traffic breaks
embedded in the music log with the
<computeroutput>Import inline traffic</computeroutput> with the
control. (Configuration of the actual parser parameters for data
importation is covered in the Rivendell Technical and Administration
Guide).
</para>
<para>
Finally, the list of log events (if any) to be inserted after the
data import should be placed in the
<computeroutput>POST-IMPORT CARTS</computeroutput> list.
Configuration of the events works very similarly to that of the
<computeroutput>PRE-IMPORT CARTS</computeroutput> list.
</para>
<para>
The color of the event (as seen in the Edit Clock dialog) can be set
by touching the <computeroutput>Color</computeroutput> button.
The list of services for which this
event is valid can be edited by touching the
<computeroutput>Services List</computeroutput> button.
To save the event without exiting the dialog, touch the
<computeroutput>Save</computeroutput> or
<computeroutput>Save As</computeroutput> buttons.
</para>
</sect1>
<sect1 xml:id="sect.rdlogmanager.generating_logs">
<title>Generating Logs</title>
<para>
After all of the appropriate hours have been populated in a service's
grid, it's time to start generating logs. To do this, touch the
<computeroutput>Generate Logs</computeroutput> button in
RDLogManager's Main Menu to open the Generate Log dialog.
</para>
<para>
Depending upon how many external scheduling sources are involved,
generating a log involves one, two or three steps. Before performing
any of the steps, it is first necessary to select the relevant
service for which to generate the log (using the
<computeroutput>Service</computeroutput> control)
and the log date (either by entering the date in the
<computeroutput>Date</computeroutput> control
or by touching the <computeroutput>Select</computeroutput> button
and picking it off of the calendar).
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="rdlogmanager.generate_log_dialog.png" scale="45"/>
</imageobject>
<caption><para>The Generate Log Dialog</para></caption>
</mediaobject>
</para>
<para>
In all cases, a new log is initially generated by touching the
<computeroutput>Create New Log</computeroutput> button.
If the log for the selected date and service does not
already exist, it will be created at this point (becoming visible in
RDLogEdit). It the log already exists, it will be overwritten.
(NOTE: if completed voicetracks exist in the old log, they will be
deleted when the log is overwritten!)
</para>
<para>
When generating a log, RDLogManager will look for possible problems
(such as scheduled carts that are missing in the Library) and
generate an exception report if it finds any.
</para>
<para>
Once generated, the status lights in the Generate Log dialog indicate
which (if any) additional import data are needed to complete the log.
Two types of status light exist:
<computeroutput>Available</computeroutput>, which indicates if the
required data file is available to RDLogManager, and
<computeroutput>Merged</computeroutput>,
indicating whether the data has been merged into the log as yet.
Each light can show one of three different colors: GREEN, meaning
&quot;yes&quot;, RED, meaning &quot;no&quot; and WHITE, meaning
&quot;not required&quot;.
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="rdlogmanager.generate_log_dialog_music_merge_required.png" scale="45"/>
</imageobject>
<caption><para>The Generate Log Dialog (music merge required)</para></caption>
</mediaobject>
</para>
<para>
For an example, see the figure above. This is showing a log that has
been generated and has music data available but not yet merged. To
perform the merge, touch the
<computeroutput>Merge Music</computeroutput> button. The dialog now
changes to that shown below, indicating that Music data
has been merged but that traffic data is still needed.
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="rdlogmanager.generate_log_dialog_traffic_merge_required.png" scale="45"/>
</imageobject>
<caption><para>The Generate Log Dialog (traffic merge required)</para></caption>
</mediaobject>
</para>
<para>
Once a log
has reached this state that of having any necessary music data
merged it can be voicetracked without having to wait for traffic
data to become available. Traffic data can be merged at any time
before, during or after the generation of voicetracks. The actual
traffic merge is performed by touching the
<computeroutput>Merge Traffic</computeroutput> button,
resulting in a dialog as illustrated. (NOTE:
the configuration of the various data file names and parser parameters
needed for data import is done in the RDAdmin module and is covered
in the Rivendell Technical and Administration Guide).
</para>
<para>
It is important to note that the sequence of operations from the
example above is typical, but may vary depending upon how the system
administrator has configured RDLogManager at each site. Some services,
for example, will have no music data, only traffic, so the music
indicator lights will be &quot;whited out&quot; accordingly.
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="rdlogmanager.generate_log_dialog_fully_merged.png" scale="45"/>
</imageobject>
<caption><para>The Generate Log Dialog (fully merged)</para></caption>
</mediaobject>
</para>
</sect1>
<sect1 xml:id="sect.rdlogmanager.generating_reports">
<title>Generating Reports</title>
<para>
A Rivendell report is a data output that details whether certain
events aired as scheduled, and under what circumstances. Reports are
available in various formats. Some are intended to be directly read
by humans, while others are intended for use by other, external
software systems as a means of reconciling exported schedules.
</para>
<para>
Rivendell has the ability to filter the data that go into any
particular report on the basis of the type of material played (traffic
spots, music or all), the playing service(s) and the originating
host(s). The configuration of reports is done in the RDAdmin module
and is covered in the Rivendell Technical and Administration Guide.
Once configured however, reports are actually generated by the
RDLogManager module.
</para>
<para>
To generate a report, touch the
<computeroutput>Manage Reports</computeroutput> button on the
RDLogManager Main Menu to open the Select Service dialog.
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="rdlogmanager.rivendell_services_dialog.png" scale="45"/>
</imageobject>
<caption><para>The Rivendell Services Dialog</para></caption>
</mediaobject>
</para>
<para>
The dialog will show each service on the system,
along with the date of the oldest data available for generating
reports. Touch the <computeroutput>Generate Reports</computeroutput>
button to open the Select Report
Dates dialog.
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="rdlogmanager.select_report_dates_dialog.png" scale="45"/>
</imageobject>
<caption><para>The Select Report Dates Dialog</para></caption>
</mediaobject>
</para>
<para>
The desired report can be
selected with the <computeroutput>Report</computeroutput> control,
and the start and end dates of the
report specified with the
<computeroutput>Start Date</computeroutput> and
<computeroutput>End Date</computeroutput> controls,
respectively (NOTE: not all reports are capable of being generated so
as to span more than one day).
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="rdlogmanager.select_date_dialog.png" scale="45"/>
</imageobject>
<caption><para>The Select Date Dialog</para></caption>
</mediaobject>
</para>
<para>
Once the parameters are set, touch the
<computeroutput>Generate Report</computeroutput> button to write out
the report.
</para>
<sect2 xml:id="sect.rdlogmanager.purging_old_report_data">
<title>Purging Old Report Data</title>
<para>
Rivendell keeps the raw data used to generate reports indefinitely,
until manually purged out of the system. Periodic purging of old
data is a good idea from the standpoint of minimizing the amount of
system resources utilized, and can be done by selecting the desired
service and then touching the
<computeroutput>Purge Data</computeroutput> button in the Select
Service dialog, opening up a calendar dialog.
Each date that has data eligible for purging will be shown in bold.
To purge a particular day, select it and the touch the
<computeroutput>Purge Data</computeroutput>
button. (NOTE: once purged, no reports can be generated for that
particular service/date, so be sure that all required reports have
been produced before purging!)
</para>
</sect2>
</sect1>
</chapter>
<chapter xml:id="chapter.voicetracking">
<title>VoiceTracking</title>
<sect1 xml:id="sect.voicetracking.voicetracking_in_rivendell">
<title>Voicetracking in Rivendell</title>
<para>
Voicetracking is a capability wherein custom &quot;one-off&quot;
content is created and inserted into logs, making it possible to
create programming that sounds very spontaneous and &quot;live&quot;.
In Rivendell, such voicetracks are placed into a special type of audio
cart known as a voicetrack cart. These carts are automatically
created, deleted and managed by the voicetracker interface (part of
the RDLogEdit module), with no manual user intervention required.
The voicetracker module also includes extensive capabilities for
allowing customization of the transitions between log elements.
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="voicetracking.voice_tracker_dialog.png" scale="45"/>
</imageobject>
<caption><para>The Voice Tracker Dialog</para></caption>
</mediaobject>
</para>
<sect2 xml:id="sect.voicetracking.prerequisites">
<title>Prerequisites</title>
<para>
Before beginning voicetracking for a particular service, a
voicetracker group and pool of available cart numbers must be
configured in the RDAdmin module. These procedures are detailed in
the Rivendell Technical and Administration Guide.
</para>
</sect2>
<sect2 xml:id="sect.voicetracking.voicetrack_markers">
<title>VoiceTrack Markers</title>
<para>
A voicetrack marker is a meta event that can be inserted into a log
as a &quot;placeholder&quot; to others to indicate where a voicetrack
is to be recorded. Track markers can be inserted by RDLogEdit,
RDLogManager events or even embedded in data generated by external
schedulers.
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="voicetracking.voice_tracker_dialog_track_selected.png" scale="45"/>
</imageobject>
<caption><para>The Voice Tracker Dialog (track selected)</para></caption>
</mediaobject>
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.voicetracking.using_the_voicetracker_dialog">
<title>Using the Voicetrack Interface</title>
<sect2 xml:id="sect.voicetracking.the_voicetracker_dialog">
<title>The VoiceTracker Dialog</title>
<para>
To voicetrack a log, start the RDLogEdit module,
highlight the desired log and touch the
<computeroutput>VoiceTracker</computeroutput> button, opening
the VoiceTracker dialog. This dialog consists
of three major parts: the waveform area, the log list and the control
buttons.
</para>
<para>
The waveform area is in the upper center part of the dialog, and
consists of four &quot;panes&quot;. The upper three display waveform
depictions while the fourth contains audition control buttons, an
audio meter and various counters. Directly below this is the log
list, showing a copy of the currently loaded log. The control
buttons occupy the bottom and right-hand edges of the dialog.
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="voicetracking.voice_tracker_dialog_track_1_playing.png" scale="45"/>
</imageobject>
<caption><para>The Voice Tracker Dialog (1st track playing)</para></caption>
</mediaobject>
</para>
</sect2>
<sect2 xml:id="sect.voicetracking.editing_transitions">
<title>Editing Transitions</title>
<para>
When an event is selected in the log list, a graphical depiction of
the transition into that event is loaded into the waveform area.
If the selected event and its prior event in the log is not a
voicetrack or track marker, then the selected event will be
displayed in the third pane of the waveform area and the previous
event displayed in the first pane. If the selected event or its
prior event is a voicetrack or track marker, then voicetrack or
marker will be displayed in the second pane of the waveform area.
</para>
<para>
Once selected, a transition can be auditioned by touching the play
button in the fourth pane of the waveform area. Play will start
from the left-hand edge of the topmost waveform. This start
location can be adjusted by dragging the topmost waveform to the
left or right by means of the mouse or touchscreen. If the
transition type of the selected event is SEGUE, it is also possible
to adjust the degree of audio overlap by dragging the second or
third waveform as well. It's possible to “undo” changes made in
the segue overlap by right-clicking on the waveform and selecting
<computeroutput>Undo Segue Changes</computeroutput> from the menu.
To make the overlap permanent,
touch the <computeroutput>Save</computeroutput> button. To restore
the transition to its default
state (calculated on the basis of segue markers from the Library)
touch the <computeroutput>Do Over</computeroutput> button.
The transition type can be changed by
right-clicking on an event and selecting the desired transition
type from the menu.
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="voicetracking.voice_tracker_dialog_recording.png" scale="45"/>
</imageobject>
<caption><para>The Voice Tracker Dialog (recording)</para></caption>
</mediaobject>
</para>
</sect2>
<sect2 xml:id="sect.voicetracking.inserting_and_deleting_track_markers">
<title>Inserting and Deleting Track Markers</title>
<para>
It is possible to insert a new voicetrack marker by selecting the
desired location in the log list and touching the
<computeroutput>Insert Track</computeroutput>
button. An existing voicetrack marker can likewise by deleted by
selecting it in the log list and touching the
<computeroutput>Delete Track</computeroutput> button.
</para>
</sect2>
<sect2 xml:id="sect.voicetracking.moving_between_track_markers">
<title>Moving Between Track Markers</title>
<para>
It is possible to move directly to the next or previous voicetrack
marker simply by touching the
<computeroutput>Next Track</computeroutput> or
<computeroutput>Previous Track</computeroutput> buttons,
respectively.
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="voicetracking.voice_tracker_dialog_track_2_playing.png" scale="45"/>
</imageobject>
<caption><para>The Voice Tracker Dialog (2nd track playing)</para></caption>
</mediaobject>
</para>
</sect2>
<sect2 xml:id="sect.voicetracking.recording_a_voicetrack">
<title>Recording a Voicetrack</title>
<para>
Once the desired voicetrack marker has been selected, the process
of recording a voicetrack consists of four steps, each initiated by
one of the four square control buttons in the upper right-hand
corner of the dialog.
</para>
<para>
To begin, touch the topmost
<computeroutput>Start</computeroutput> button. This will cause the
audio in the topmost pane to begin playing, with a cursor to show
playback position. To begin the actual
recording, touch the <computeroutput>Record</computeroutput> button.
To start the following event (in the third pane), touch the second
<computeroutput>Start</computeroutput>
button. Finally, to stop recording, touch
the <computeroutput>Save</computeroutput> button.
The record process can be
canceled at any time by touching the
<computeroutput>Abort</computeroutput> button, restoring the
transition to its default state. It is also possible to undo a
completed voicetrack by touching the
<computeroutput>Do Over</computeroutput> button.
</para>
<para>
Once completed, the segue overlaps into and out of a voicetrack can
be adjusted in the same manner as for simple transitions i.e. by
dragging the appropriate waveforms with the mouse.
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="voicetracking.voice_tracker_dialog_track_completed.png" scale="45"/>
</imageobject>
<caption><para>The Voice Tracker Dialog (track completed)</para></caption>
</mediaobject>
</para>
</sect2>
<sect2 xml:id="sect.voicetracking.adjusting_transition_levels">
<title>Adjusting Transition Levels</title>
<para>
It is possible to adjust the audio fade levels applied during
transitions by means of rubber bands on the waveform displays.
These are green lines with small square targets. To adjust a rubber
band, use the mouse to grab one of the targets and drag it to the
desired location.
</para>
</sect2>
<sect2 xml:id="sect.voicetracking.importing_voicetracks">
<title>Importing Voicetracks</title>
<para>
In addition to recording in realtime, it's possible to import a
voicetrack directly from an audio file. To do so, select the
desired voicetrack marker and then touch the
<computeroutput>Import</computeroutput> button to open
the Import/Export Audio dialog. (For more
information on using the Import/Export Audio dialog, see Section
3.1.0 Importing Audio from a File). Once imported, the voicetrack
can be manipulated in the same manner as those that were directly
recorded.
</para>
</sect2>
<sect2 xml:id="sect.voicetracking.hitting_the_post">
<title>Hitting the Post</title>
<para>
If the event following a voicetrack has its Talk Time markers set,
it is possible to set the transition so that the end of the
voicetrack automatically aligns with the end of the Talk Time
(commonly referred to as hitting the post). To do this, simply
touch the <computeroutput>Hit Post</computeroutput> button.
</para>
</sect2>
</sect1>
</chapter>
<chapter xml:id="chapter.rml">
<title>Rivendell Macro Langauge</title>
<sect1 xml:id="sect.rml.overview">
<title>Overview</title>
<para>
Rivendell Macro Language (or RML for short) is a set of commands
implemented within Rivendell that can be used to program the system
to take various actions. A wide variety of commands exist, ranging
from control of outboard gear (such as switchers and GPIO devices)
to control of various aspects of log playout in RDAirPlay, to
Rivendell user management.
</para>
</sect1>
<sect1 xml:id="sect.rml.protocol">
<title>Protocol</title>
<para>
The Normal form of a command takes the following syntax:
</para>
<para>
<replaceable>cmd</replaceable> [<replaceable>arg</replaceable>] [<replaceable>...</replaceable>]!
</para>
<variablelist>
<varlistentry>
<term>
<replaceable>cmd</replaceable>
</term>
<listitem>
<para>
A command mneumonic consisting of two alpha-numeric characters
indicating the action to be performed.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<replaceable>arg</replaceable>
</term>
<listitem>
<para>
Zero or more arguments, delimited by spaces or, if the last
argument, by ! (see below)
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
!
</term>
<listitem>
<para>
The ASCII character 33, indicating the end of the command sequence.
</para>
</listitem>
</varlistentry>
</variablelist>
</sect1>
<sect1 xml:id="sect.rml.command_delivery">
<title>Command Delivery</title>
<para>
To be executed by a Rivendell system, an appropriate command should be
delivered to UDP ports 5858 or 5859 on said system, using the SOCK_DGRAM
connectionless protocol. Commands delivered to port 5858 may receive a
reply back to the originating IP address at UDP socket 5860 to indicated
command success/failure, while commanders delivered to 5859 will be
processed, but no reply made.
</para>
</sect1>
<sect1 xml:id="sect.rml.command_reply">
<title>Command Reply</title>
<para>
If delivered to UDP port 5858, each command may receive a reply,
formulated as follows:
</para>
<para>
<replaceable>rpy</replaceable> <computeroutput>+</computeroutput>|<computeroutput>-</computeroutput>
</para>
<variablelist>
<varlistentry>
<term>
<replaceable>rpy</replaceable>
</term>
<listitem>
<para>
The full command string (including arguments) originally received
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>+</computeroutput>
</term>
<listitem>
<para>
ACK response, indicates success of the command.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<computeroutput>-</computeroutput>
</term>
<listitem>
<para>
NAK response, indicates failure of the command.
</para>
</listitem>
</varlistentry>
</variablelist>
</sect1>
<sect1 xml:id="sect.rml.specifying_color">
<title>Specifying Color</title>
<para>
In places where a color can be specified as a macro argument, the
following predefined values are valid:
</para>
<simplelist>
<member><userinput>white</userinput></member>
<member><userinput>red</userinput></member>
<member><userinput>green</userinput></member>
<member><userinput>blue</userinput></member>
<member><userinput>cyan</userinput></member>
<member><userinput>magenta</userinput></member>
<member><userinput>yellow</userinput></member>
<member><userinput>gray</userinput></member>
<member><userinput>lightGray</userinput></member>
<member><userinput>black</userinput></member>
<member><userinput>darkRed</userinput></member>
<member><userinput>darkGreen</userinput></member>
<member><userinput>darkBlue</userinput></member>
<member><userinput>darkCyan</userinput></member>
<member><userinput>darkMagenta</userinput></member>
<member><userinput>darkYellow</userinput></member>
<member><userinput>darkGray</userinput></member>
</simplelist>
</sect1>
<sect1 xml:id="sect.rml.binary_data">
<title>Binary Data</title>
<para>
Certain commands (e.g. <command>SO</command> and <command>UO</command>)
have the ability to transmit arbitrary binary data in addition to textual
characters. Such arbitrary binary data can be specified by means of
escape codes as follows:
</para>
<para>
<userinput>%</userinput><replaceable>hexcode</replaceable>
</para>
<para>
<variablelist>
<varlistentry>
<term>
<replaceable>hexcode</replaceable>
</term>
<listitem>
Two digit numeric value of the byte to send in hexidecimal.
</listitem>
</varlistentry>
</variablelist>
</para>
<para>
For example, the sequence 'TEST' followed by a carriage return/newline
could be specified as:
</para>
<para>
<userinput>TEST%0D%0A</userinput>
</para>
</sect1>
<sect1 xml:id="sect.rml.commands">
<title>Commands</title>
<sect2 xml:id="sect.rml.air_gate__ag_">
<title>Air Gate [AG]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>ripcd</command><manvolnum>8</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>AG</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Process an RML only if the On-Air flag is ON.
</para>
<para>
<userinput>AG</userinput>
<replaceable>rml</replaceable>!
</para>
<para>
Execute RML <replaceable>rml</replaceable> only if the On-Air flag on
the local machine is ON.
</para>
</sect2>
<sect2 xml:id="sect.rml.add_next__px_">
<title>Add Next [PX]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>rdairplay</command><manvolnum>1</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>PX</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Insert a cart in a log in the next to play position.
</para>
<para>
<userinput>PX
<replaceable>mach</replaceable>
<replaceable>cart</replaceable>!</userinput>
</para>
<para>
Insert cart <replaceable>cart</replaceable>> in the next to play
position on log machine <replaceable>mach</replaceable>.
</para>
</sect2>
<sect2 xml:id="sect.rml.binary_serial_out__bo_">
<title>Binary Serial Out [BO]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>ripcd</command><manvolnum>8</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>BO</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Output a string of binary codes.
</para>
<para>
<userinput>BO
<replaceable>portnum</replaceable>
<replaceable>hexcode</replaceable>
<replaceable>..</replaceable>!</userinput>
</para>
<para>
Output a string of binary codes represented by
<replaceable>hexcode</replaceable> <replaceable>..</replaceable> on
serial port <replaceable>portnum</replaceable>!
</para>
</sect2>
<sect2 xml:id="sect.rml.clear_serial_trap__sc_">
<title>Clear Serial Trap [SC]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>ripcd</command><manvolnum>8</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>SC</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Clear a serial trap.
</para>
<para>
<userinput>SC
<replaceable>portnum</replaceable>
<replaceable>cart</replaceable>
<replaceable>string</replaceable>!</userinput>
</para>
<para>
<userinput>SC
<replaceable>portnum</replaceable>
<replaceable>cart</replaceable>!</userinput>
</para>
<para>
<userinput>SC
<replaceable>portnum</replaceable>!</userinput>
</para>
<para>
Clear a serial trap. The three argument form will clear all traps on
<replaceable>port</replaceable> that reference
<replaceable>cart</replaceable> and <replaceable>string</replaceable>.
The two argument form will clear all traps on
<replaceable>port</replaceable> that reference
<replaceable>cart</replaceable>, while the one argument form will
clear all traps on <replaceable>port</replaceable>.
</para>
</sect2>
<sect2 xml:id="sect.rml.command_send__cc_">
<title>Command Send [CC]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>ripcd</command><manvolnum>8</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>CC</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Send RML to a remote host.
</para>
<para>
<userinput>CC
<replaceable>dest</replaceable>
[<userinput>:</userinput><replaceable>udpport</replaceable>]
<replaceable>rml</replaceable>!</userinput>
</para>
<para>
Send the RML command <replaceable>rml</replaceable> to
<replaceable>dest</replaceable>.<replaceable>dest</replaceable> may be
either a Rivendell host name or an IP address. A UDP port value may be
optionally specified as <replaceable>udpport</replaceable> (default
value 5859).
</para>
</sect2>
<sect2 xml:id="sect.rml.connect_jack_ports__jc_">
<title>Connect Jack Ports [JC]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>ripcd</command><manvolnum>8</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>JC</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Connect a JACK input port to an output port.
</para>
<para>
<userinput>JC
<replaceable>output</replaceable>
<replaceable>input</replaceable>!</userinput>
</para>
<para>
Attempt to connect JACK input port <replaceable>input</replaceable>
to <replaceable>output</replaceable>.
</para>
</sect2>
<sect2 xml:id="sect.rml.console_label__cl_">
<title>Console Label [CL]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>ripcd</command><manvolnum>8</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>CL</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Set the label on a control surface.
</para>
<para>
<userinput>CL
<replaceable>matrix</replaceable>
<replaceable>surface</replaceable>
<replaceable>chan</replaceable>
<replaceable>label</replaceable>!</userinput>
</para>
<para>
On matrix <replaceable>matrix</replaceable>, set the input
<replaceable>chan</replaceable> module label of control surface
<replaceable>surface</replaceable> to <replaceable>label</replaceable>.
</para>
</sect2>
<sect2 xml:id="sect.rml.copy_cut__cp_">
<title>Copy Cut [CP]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>rdcatchd</command><manvolnum>8</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>CP</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Copy cut audio and metadata.
</para>
<para>
<userinput>CP
<replaceable>srccart</replaceable>
<replaceable>srccut</replaceable>
<replaceable>dstcart</replaceable>
<replaceable>dstcut</replaceable>!</userinput>
</para>
<para>
Copy the audio and metadata from cut number
<replaceable>srccut</replaceable> in cart
<replaceable>srccart</replaceable> to cut number
<replaceable>dstcut</replaceable> in cart
<replaceable>dstcart</replaceable>. The destination cart/cut must
already exist.
</para>
</sect2>
<sect2 xml:id="sect.rml.cut_event__ce_">
<title>Cut Event [CE]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>rdcatchd</command><manvolnum>8</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>CE</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Place a cut event at the current location of an active RDCatch recording.
</para>
<para>
<userinput>CE
<replaceable>decknum</replaceable>
<replaceable>eventnum</replaceable>!</userinput>
</para>
<para>
Place a cut event with event number
<replaceable>eventnum</replaceable> at the current position of the
active recording in RDCatch Deck
<replaceable>decknum</replaceable>.
</para>
</sect2>
<sect2 xml:id="sect.rml.database_backup__db_">
<title>Database Backup [DB]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>ripcd</command><manvolnum>8</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>DB</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Backup the Rivendell database.
</para>
<para>
<userinput>DB
<replaceable>filename</replaceable>!</userinput>
</para>
<para>
Create a backup copy of the active Rivendell database in
<replaceable>filename</replaceable>.
</para>
</sect2>
<sect2 xml:id="sect.rml.disconnect_jack_ports__jd_">
<title>Disconnect Jack Ports [JD]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>ripcd</command><manvolnum>8</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>JD</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Disconnect a JACK input port from an output port.
</para>
<para>
<userinput>JD
<replaceable>output</replaceable>
<replaceable>input</replaceable>!</userinput>
</para>
<para>
Attempt to disconnect JACK input port <replaceable>input</replaceable>
from <replaceable>output</replaceable>.
</para>
</sect2>
<sect2 xml:id="sect.rml.duck_panel_button__pd_">
<title>Duck Panel Button [PD]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>rdairplay</command><manvolnum>1</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>PD</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Set the duck level of a SoundPanel button in RDAirPlay.
</para>
<para>
<userinput>PD
<replaceable>panel</replaceable>
<replaceable>col</replaceable>
<replaceable>row</replaceable>
<replaceable>level</replaceable>
<replaceable>fade</replaceable>
[<replaceable>mport</replaceable>]!</userinput>
</para>
<para>
Set the duck level of button at <replaceable>column</replaceable>,
<replaceable>row</replaceable>> of panel
<replaceable>panel</replaceable>.
Panel: <userinput>S1</userinput>...<userinput>S50</userinput> or
<userinput>U1</userinput>...<userinput>U50</userinput>;
<userinput>C</userinput> for <replaceable>panel</replaceable> means
currently selected panel.
If <replaceable>col</replaceable> and/or <replaceable>row</replaceable>
is <userinput>0</userinput>: duck all buttons in
<replaceable>col</replaceable> or <replaceable>row</replaceable>.
If playing, the audio fades to <replaceable>level</replaceable>
(in dbFS) in <replaceable>fade</replaceable> msecs.
If specified, only stop carts playing on panel port
<replaceable>mport</replaceable>. The duck level will be set to 0 after
the playback is finished, or the button is stopped or reset.
</para>
</sect2>
<sect2 xml:id="sect.rml.execute_breakaway__dx_">
<title>Execute Breakaway [DX]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>rdcartslots</command><manvolnum>1</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>DX</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Execute a breakaway.
</para>
<para>
<userinput>DX
<replaceable>slot</replaceable><replaceable>len</replaceable>!</userinput>
</para>
<para>
Execute a breakaway of length <replaceable>len</replaceable> (in mS)
using the autofill carts configured for the service currently loaded
in the <replaceable>slot</replaceable> slot. The slot must be in
Breakaway mode. If a breakaway is currently executing, it will
immediately be aborted and a new one started. Passing a '0' for
<replaceable>len</replaceable> will cause any currently executing
breakaway immediately to be aborted and input audio restored.
</para>
</sect2>
<sect2 xml:id="sect.rml.execute_cart__ex_">
<title>Execute Cart [EX]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>rdcatchd</command><manvolnum>8</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>EX</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Execute a macro cart.
</para>
<para>
<userinput>EX
<replaceable>cartnum</replaceable>!</userinput>
</para>
<para>
Execute macro cart <replaceable>cartnum</replaceable> on the local host.
</para>
</sect2>
<sect2 xml:id="sect.rml.fire_salvo__fs_">
<title>Fire Salvo [FS]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>ripcd</command><manvolnum>8</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>FS</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Execute a switcher salvo.
</para>
<para>
<userinput>FS
<replaceable>matrix</replaceable>
<replaceable>salvo</replaceable>!</userinput>
</para>
<para>
Fire salvo number <replaceable>salvo</replaceable> on matrix
<replaceable>matrix</replaceable>.
</para>
</sect2>
<sect2 xml:id="sect.rml.gpi_enable__ge_">
<title>GPI Enable [GE]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>ripcd</command><manvolnum>8</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>GE</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Enable/disable a GPI line.
</para>
<para>
<userinput>GE
<replaceable>matrix</replaceable>
<replaceable>type</replaceable>
<replaceable>gpinum</replaceable>
<replaceable>state</replaceable>!</userinput>
</para>
<para>
Enable or disable the GPI line of type <replaceable>type</replaceable>
indicated by <replaceable>gpinum</replaceable> on matrix
<replaceable>matrix</replaceable>. Possible types are:
</para>
<para>
<variablelist>
<varlistentry>
<term><userinput>I</userinput></term>
<listitem>Input</listitem>
</varlistentry>
<varlistentry>
<term><userinput>O</userinput></term>
<listitem>Output</listitem>
</varlistentry>
</variablelist>
</para>
</sect2>
<sect2 xml:id="sect.rml.gpi_enable__ge___old_format__deprecated_">
<title>GPI Enable [GE] (old format, deprecated)</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>ripcd</command><manvolnum>8</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>GE</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Enable/disable a GPI line.
</para>
<para>
<userinput>GE
<replaceable>matrix</replaceable>
<replaceable>gpinum</replaceable>
<replaceable>state</replaceable>!</userinput>
</para>
<para>
Enable or disable the GPI line indicated by
<replaceable>gpinum</replaceable> on matrix
<replaceable>matrix</replaceable>.
</para>
</sect2>
<sect2 xml:id="sect.rml.gpi_set__gi_">
<title>GPI Set [GI]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>ripcd</command><manvolnum>8</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>GI</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Set action in response to a GPIO event.
</para>
<para>
<userinput>GI
<replaceable>matrix</replaceable>
<replaceable>type</replaceable>
<replaceable>gpinum</replaceable>
<replaceable>state</replaceable>
<replaceable>cart</replaceable>!</userinput>
</para>
<para>
Execute the macro cart <replaceable>cart</replaceable> upon transition
of the GPIO of type <replaceable>type</replaceable> and line
<replaceable>gpinum</replaceable> on matrix
<replaceable>matrix</replaceable> to <replaceable>state</replaceable>.
Possible types are:
</para>
<para>
<variablelist>
<varlistentry>
<term><userinput>I</userinput></term>
<listitem>Input</listitem>
</varlistentry>
<varlistentry>
<term><userinput>O</userinput></term>
<listitem>Output</listitem>
</varlistentry>
</variablelist>
</para>
</sect2>
<sect2 xml:id="sect.rml.gpi_set__gi___old_format__deprecated_">
<title>GPI Set [GI] (old format, deprecated)</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>ripcd</command><manvolnum>8</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>GI</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Set action in response to a GPIO event.
</para>
<para>
<userinput>GI
<replaceable>matrix</replaceable>
<replaceable>gpinum</replaceable>
<replaceable>state</replaceable>
<replaceable>cart</replaceable>!</userinput>
</para>
<para>
Execute the macro cart <replaceable>cart</replaceable> upon transition
of the GPIO of line <replaceable>gpinum</replaceable> on matrix
<replaceable>matrix</replaceable> to <replaceable>state</replaceable>.
</para>
</sect2>
<sect2 xml:id="sect.rml.gpo_set__go_">
<title>GPO Set [GO]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>ripcd</command><manvolnum>8</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>GO</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Set the state of a GPIO line.
</para>
<para>
<userinput>GO
<replaceable>matrix</replaceable>
<replaceable>type</replaceable>
<replaceable>gponum</replaceable>
<replaceable>state</replaceable>
<replaceable>length</replaceable>!</userinput>
</para>
<para>
Command GPIO line <replaceable>gponum</replaceable> of type
<replaceable>type</replaceable> on matrix
<replaceable>matrix</replaceable>> to <replaceable>state</replaceable>
for <replaceable>length</replaceable>> mS. A length of
<userinput>0</userinput> indicates to hold the state indefinitely.
Possible types are:
</para>
<para>
<variablelist>
<varlistentry>
<term><userinput>I</userinput></term>
<listitem>Input</listitem>
</varlistentry>
<varlistentry>
<term><userinput>O</userinput></term>
<listitem>Output</listitem>
</varlistentry>
</variablelist>
</para>
<para>
Possible states are:
</para>
<para>
<variablelist>
<varlistentry>
<term><userinput>0</userinput></term>
<listitem>OFF</listitem>
</varlistentry>
<varlistentry>
<term><userinput>1</userinput></term>
<listitem>ON</listitem>
</varlistentry>
<varlistentry>
<term><userinput>-1</userinput></term>
<listitem>Passthrough hardware input (valid only for Input type)</listitem>
</varlistentry>
</variablelist>
</para>
</sect2>
<sect2 xml:id="sect.rml.gpo_set__go___old_format__deprecated_">
<title>GPO Set [GO] (old format, deprecated)</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>ripcd</command><manvolnum>8</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>GO</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Set the state of a GPIO line.
</para>
<para>
<userinput>GO
<replaceable>matrix</replaceable>
<replaceable>gponum</replaceable>
<replaceable>state</replaceable>
<replaceable>length</replaceable>!</userinput>
</para>
<para>
Command GPIO line <replaceable>gponum</replaceable> on matrix
<replaceable>matrix</replaceable>> to <replaceable>state</replaceable>
for <replaceable>length</replaceable>> mS. A length of
<userinput>0</userinput> indicates to hold the state indefinitely.
</para>
</sect2>
<sect2 xml:id="sect.rml.insert_serial_trap__si_">
<title>Insert Serial Trap [SI]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>ripcd</command><manvolnum>8</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>SI</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Insert a serial trap to detect a character sequence.
</para>
<para>
<userinput>SI
<replaceable>portnum</replaceable>
<replaceable>cart</replaceable>
<replaceable>string</replaceable>!</userinput>
</para>
<para>
Insert a serial trap to execute the macro cart
<replaceable>cart</replaceable> upon receipt of
<replaceable>string</replaceable> on serial port
<replaceable>port</replaceable>.
</para>
</sect2>
<sect2 xml:id="sect.rml.label_panel__pc_">
<title>Label Panel [PC]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>rdairplay</command><manvolnum>1</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>PC</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Set the label of a SoundPanel button in RDAirPlay.
</para>
<para>
<userinput>PC
<replaceable>panel</replaceable>
<replaceable>col</replaceable>
<replaceable>row</replaceable>
<replaceable>label</replaceable>
<replaceable>color</replaceable>!</userinput>
</para>
<para>
Set the button at <replaceable>col</replaceable>,
<replaceable>row</replaceable> of panel <replaceable>panel</replaceable>
to have a text label of <replaceable>label</replaceable> and a
background color of <replaceable>color</replaceable>.
Panel: <userinput>S1</userinput>...<userinput>S50</userinput> or
<userinput>U1</userinput>...<userinput>U50</userinput>;
<userinput>C</userinput> for <replaceable>panel</replaceable> means
currently selected panel.
</para>
</sect2>
<sect2 xml:id="sect.rml.load_log__ll_">
<title>Load Log [LL]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>rdairplay</command><manvolnum>1</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>LL</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Load a log into RDAirPlay.
</para>
<para>
<userinput>LL
<replaceable>mach</replaceable>
[<replaceable>logname</replaceable>]
[<replaceable>startline</replaceable>]!</userinput>
</para>
<para>
Load the log <replaceable>logname</replaceable> in log machine
<replaceable>mach</replaceable>. After loading, start the log at line
<replaceable>startline</replaceable> if it is >=0. If
<replaceable>startline</replaceable> is -2, the log will be started at
the first event if that event does not have a 'stop' transition.
Default <replaceable>startline</replaceable>=-1. If no
<replaceable>log</replaceable>> is specified, the machine's current log
is unloaded.
</para>
</sect2>
<sect2 xml:id="sect.load_panel__pe_">
<title>Load Panel [PE]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>rdairplay</command><manvolnum>1</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>PE</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Load a cart into a SoundPanel button in RDAirPlay.
</para>
<para>
<userinput>PE
<replaceable>panel</replaceable>
<replaceable>col</replaceable>
<replaceable>row</replaceable>
<replaceable>cart</replaceable>!</userinput>
</para>
<para>
Load cart <replaceable>cart</replaceable> into the button at
<replaceable>col</replaceable>,<replaceable>row</replaceable> of panel
<replaceable>panel</replaceable>.
Panel: <userinput>S1</userinput>...<userinput>S50</userinput> or
<userinput>U1</userinput>...<userinput>U50</userinput>;
<userinput>C</userinput> for <replaceable>panel</replaceable> means
currently selected panel.
</para>
</sect2>
<sect2 xml:id="sect.rml.load_slot__dl_">
<title>Load Slot [DL]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>rdcartslots</command><manvolnum>1</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>DL</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Load an RDCartSlots slot.
</para>
<para>
This command has two syntaxes, depending upon the mode of the slot.
</para>
<para>
Cart Deck Mode syntax:
</para>
<para>
<userinput>DL
<replaceable>slot</replaceable>
<replaceable>cart</replaceable>!</userinput>
</para>
<para>
Load the cart <replaceable>cart</replaceable> into the
<replaceable>slot</replaceable> slot. Passing a '0' for
<replaceable>cart</replaceable> will cause the slot to be unloaded.
This command will be ignored if the slot is currently playing.
</para>
<para>
Breakaway Mode syntax:
</para>
<para>
<userinput>DL
<replaceable>slot</replaceable>
<replaceable>svcname</replaceable>!</userinput>
</para>
<para>
Set the <replaceable>slot</replaceable> slot to use service
<replaceable>svcname</replaceable>. Omitting the
<replaceable>svcname</replaceable> argument will cause the slot to be
unloaded. This command will be ignored if the slot is currently
executing a breakaway.
</para>
</sect2>
<sect2 xml:id="sect.rml.login__lo_">
<title>Login [LO]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>ripcd</command><manvolnum>8</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>LO</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Change the active Rivendell user context.
</para>
<para>
<userinput>LO
<replaceable>user</replaceable>
<replaceable>password</replaceable>!</userinput>
</para>
<para>
Set the current Rivendell user to <replaceable>user</replaceable>.
If no arguments are supplied, log out the station --i.e. revert to the
default user.
</para>
</sect2>
<sect2 xml:id="sect.rml.macro_timer__mt_">
<title>Macro Timer [MT]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>ripcd</command><manvolnum>8</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>MT</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Timer for running macro carts.
</para>
<para>
<userinput>MT
<replaceable>timernum</replaceable>
<replaceable>timeout</replaceable>
<replaceable>cart</replaceable>!</userinput>
</para>
<para>
Set the macro timer <replaceable>timernum</replaceable> to execute macro
cart <replaceable>cart</replaceable> in
<replaceable>timeout</replaceable> milliseconds. Setting
<replaceable>timeout</replaceable> to <userinput>0</userinput> disables
the timer. Sixteen macro timers (numbered 1-16) are available on each
Rivendell host.
</para>
</sect2>
<sect2 xml:id="sect.rml.make_next__mn_">
<title>Make Next [MN]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>rdairplay</command><manvolnum>1</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>MN</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Load changes to a currently loaded log in RDAirPlay.
</para>
<para>
<userinput>RL
<replaceable>mach</replaceable>
<replaceable>line</replaceable>!</userinput>
</para>
<para>
Set the next event for log machine <replaceable>mach</replaceable> to
line <replaceable>line</replaceable>>.
</para>
</sect2>
<sect2 xml:id="sect.rml.message_box__mb_">
<title>Message Box [MB]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>ripcd</command><manvolnum>8</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>MB</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Display a popup message box on a host display.
</para>
<para>
<userinput>MB
<replaceable>display</replaceable>
<replaceable>severity</replaceable>
<replaceable>msg</replaceable>!</userinput>
</para>
<para>
Display the text <replaceable>msg</replaceable> in a popup window on X
display <replaceable>display</replaceable>, with an icon to indicate
<replaceable>severity</replaceable>. Valid values of
<replaceable>severity</replaceable> are:
</para>
<variablelist>
<varlistentry>
<term><userinput>1</userinput></term>
<listitem>Information</listitem>
</varlistentry>
<varlistentry>
<term><userinput>2</userinput></term>
<listitem>Warning</listitem>
</varlistentry>
<varlistentry>
<term><userinput>3</userinput></term>
<listitem>Critical</listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 xml:id="sect.rml.pause_panel__pu_">
<title>Pause Panel [PU]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>rdairplay</command><manvolnum>1</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>PU</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Pause a SoundPanel button in RDAirPlay.
</para>
<para>
<userinput>PU
<replaceable>panel</replaceable>
<replaceable>col</replaceable>
<replaceable>row</replaceable>
[<replaceable>mport</replaceable>]!</userinput>
</para>
<para>
Pause the button at <replaceable>col</replaceable>,
<replaceable>row</replaceable> of panel <replaceable>panel</replaceable>.
Panel: <userinput>S1</userinput>...<userinput>S50</userinput> or
<userinput>U1</userinput>...<userinput>U50</userinput>;
<userinput>C</userinput> for <replaceable>panel</replaceable> means
currently selected panel.
If <replaceable>col</replaceable> and/or <replaceable>row</replaceable>
is <userinput>0</userinput>: pause all playing buttons in
<replaceable>col</replaceable> or <replaceable>row</replaceable>.
If specified, start the playout on panel port
<replaceable>mport</replaceable>.
</para>
</sect2>
<sect2 xml:id="sect.rml.play_panel__pp_">
<title>Play Panel [PP]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>rdairplay</command><manvolnum>1</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>PP</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Load a cart into a SoundPanel button in RDAirPlay.
</para>
<para>
<userinput>PP
<replaceable>panel</replaceable>
<replaceable>col</replaceable>
<replaceable>row</replaceable>
[<replaceable>mport</replaceable>]
[0|1]!</userinput>
</para>
<para>
Play the button at <replaceable>col</replaceable>,
<replaceable>row</replaceable> of panel <replaceable>panel</replaceable>.
Panel: <userinput>S1</userinput>...<userinput>S50</userinput> or
<userinput>U1</userinput>...<userinput>U50</userinput>;
<userinput>C</userinput> for <replaceable>panel</replaceable> means
currently selected panel.
If <replaceable>col</replaceable> and/or <replaceable>row</replaceable>
is <userinput>0</userinput>: Start the first loaded button that is not
active. If specified, start the playout on panel port
<replaceable>mport</replaceable>. The started panel will stay active when
finished, if the 5th argument is <userinput>1</userinput>.
</para>
</sect2>
<sect2 xml:id="sect.rml.play_slot__dp_">
<title>Play Slot [DP]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>rdcartslots</command><manvolnum>1</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>DP</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Play an RDCartSlots slot.
</para>
<para>
<userinput>DP
<replaceable>slot</replaceable>!</userinput>
</para>
<para>
Play the cart currently loaded in the <replaceable>slot</replaceable>
slot. The slot must be in Cart Deck mode. This command will be
ignored if the slot is unloaded or already playing.
</para>
</sect2>
<sect2 xml:id="sect.rml.refresh_log__rl_">
<title>Refresh Log [RL]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>rdairplay</command><manvolnum>1</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>RL</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Load changes to a currently loaded log in RDAirPlay.
</para>
<para>
<userinput>RL
<replaceable>mach</replaceable>!</userinput>
</para>
<para>
Refresh the log currently loaded in log machine
<replaceable>mach</replaceable>.
</para>
</sect2>
<sect2 xml:id="sect.rml.run_shell_command__rn_">
<title>Run Shell Command [RN]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>ripcd</command><manvolnum>8</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>RN</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Run a shell command.
</para>
<para>
<userinput>RN
<replaceable>cmd</replaceable>!</userinput>
</para>
<para>
Run the shell command <replaceable>cmd</replaceable>.
</para>
</sect2>
<sect2 xml:id="sect.rml.select_widget__pw_">
<title>Select Widget [PW]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>rdairplay</command><manvolnum>1</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>PW</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Select right-hand widget in RDAirPlay.
</para>
<para>
<userinput>PW
<replaceable>mach</replaceable>!</userinput>
</para>
<para>
Select right-hand widget to log-machine <replaceable>mach</replaceable>
or <userinput>0</userinput> for sound panel.
</para>
</sect2>
<sect2 xml:id="sect.rml.serial_out__so_">
<title>Serial Out [SO]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>ripcd</command><manvolnum>8</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>SO</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Output a string on a serial port.
</para>
<para>
<userinput>SO
<replaceable>portnum</replaceable>
<replaceable>data</replaceable>!</userinput>
</para>
<para>
Output <replaceable>data</replaceable> on serial port
<replaceable>portnum</replaceable>. <replaceable>data</replaceable> can
consist of arbitrary binary data as well as textual characters (see
<command>Binary Data</command> above).
</para>
</sect2>
<sect2 xml:id="sect.rml.serial_reload__sy_">
<title>Serial Reload [SY]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>ripcd</command><manvolnum>8</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>SY</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Reload the configuration for a serial port.
</para>
<para>
<userinput>SY
<replaceable>portnum</replaceable>!</userinput>
</para>
<para>
Reload the configuration for serial port
<replaceable>portnum</replaceable>. Normally, this should only be
issued by RDAdmin following a configuration change.
</para>
</sect2>
<sect2 xml:id="sect.rml.set_color_label__lc_">
<title>Set Color Label [LC]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>rdairplay</command><manvolnum>1</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>LC</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Display a color message in the label widget on RDAirPlay.
</para>
<para>
<userinput>LC
<replaceable>color</replaceable>
<replaceable>string</replaceable>!</userinput>
</para>
<para>
Display <replaceable>string</replaceable>> in color
<replaceable>color</replaceable> in the message widget.
</para>
</sect2>
<sect2 xml:id="sect.rml.set_default_now___next_cart__sn_">
<title>Set Default Now &amp; Next Cart [SN]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>rdairplay</command><manvolnum>1</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>SN</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Set the default Now &amp; Next cart.
</para>
<para>
<userinput>SN
now</userinput>|<userinput>next
<replaceable>mach</replaceable>
<replaceable>cart</replaceable>!</userinput>
</para>
<para>
Set the default Now &amp; Next cart for log
<replaceable>mach</replaceable> to <replaceable>cart</replaceable>.
</para>
</sect2>
<sect2 xml:id="sect.rml.set_display__sd_">
<title>Set Display [SD]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>ripcd</command><manvolnum>8</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>SD</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Set a console display.
</para>
<para>
<userinput>SD
<replaceable>matrix</replaceable>
<replaceable>display</replaceable>
<replaceable>line</replaceable>
<replaceable>col</replaceable>
<replaceable>attr</replaceable>
<replaceable>label</replaceable>!</userinput>
</para>
<para>
On matrix <replaceable>matrix</replaceable>, set the console display
<replaceable>display</replaceable> to <replaceable>label</replaceable>,
starting at position <replaceable>line</replaceable>,
<replaceable>col</replaceable> and using message attributes
<replaceable>attr</replaceable>.
</para>
<para>
The message attributes value is constructed as follows:
</para>
<variablelist>
<varlistentry>
<term>Bit 7</term>
<listitem>Display mode</listitem>
</varlistentry>
<varlistentry>
<term>Bits 6,5</term>
<listitem>Video attribute</listitem>
</varlistentry>
<varlistentry>
<term>Bit 2,1,0</term>
<listitem>Message Text Color</listitem>
</varlistentry>
</variablelist>
<para>
Display Mode:
</para>
<variablelist>
<varlistentry>
<term>0</term>
<listitem>Overwrite text</listitem>
</varlistentry>
<varlistentry>
<term>1</term>
<listitem>Insert text</listitem>
</varlistentry>
</variablelist>
<para>
Video Attribute:
</para>
<variablelist>
<varlistentry>
<term>00</term>
<listitem>Normal</listitem>
</varlistentry>
<varlistentry>
<term>01</term>
<listitem>Flash</listitem>
</varlistentry>
<varlistentry>
<term>02</term>
<listitem>Reverse</listitem>
</varlistentry>
</variablelist>
<para>
Text Color:
</para>
<variablelist>
<varlistentry>
<term>000</term>
<listitem>White</listitem>
</varlistentry>
<varlistentry>
<term>001</term>
<listitem>Red</listitem>
</varlistentry>
<varlistentry>
<term>010</term>
<listitem>Yellow</listitem>
</varlistentry>
<varlistentry>
<term>011</term>
<listitem>Green</listitem>
</varlistentry>
<varlistentry>
<term>100</term>
<listitem>Cyan</listitem>
</varlistentry>
<varlistentry>
<term>101</term>
<listitem>Magenta</listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 xml:id="sect.rml.set_duck_level__md_">
<title>Set Duck Level [MD]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>rdairplay</command><manvolnum>1</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>MD</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Set duck level for an RDAirPlay log machine.
</para>
<para>
<userinput>MD
<replaceable>mach</replaceable>
<replaceable>level</replaceable>
<replaceable>fade</replaceable>
[<replaceable>mport</replaceable>]!</userinput>
</para>
<para>
Set the duck level of <replaceable>mach</replaceable>, or
<userinput>0</userinput> for all log machines. If playing, the audio
fades to <replaceable>level</replaceable> (in dbFS) in
<replaceable>fade</replaceable> msecs. If specified, only affect carts
playing on machine port <replaceable>mport</replaceable>.
Loading or clearing a log will set the duck level back to 0.
</para>
</sect2>
<sect2 xml:id="sect.rml.set_label__lb_">
<title>Set Label [LB]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>rdairplay</command><manvolnum>1</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>LB</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Display a message in the label widget on RDAirPlay.
</para>
<para>
<userinput>LB
<replaceable>string</replaceable>!</userinput>
</para>
<para>
Display <replaceable>string</replaceable>> in the message widget.
</para>
</sect2>
<sect2 xml:id="sect.rml.set_mode__pm_">
<title>Set Mode [PM]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>rdairplay</command><manvolnum>1</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>PM</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Set the mode of an RDAirPlay log machine.
</para>
<para>
<userinput>PM
<replaceable>mode</replaceable>
[<replaceable>mach</replaceable>]!</userinput>
</para>
<para>
Set log machine <replaceable>mach</replaceable> to mode
<replaceable>mode</replaceable>. If mode is not given or the Mode
Control Style is set to 'Unified', then all log machines are set to
<replaceable>mode</replaceable>. Valid values for
<replaceable>mode</replaceable> are:
<variablelist>
<varlistentry>
<term>1</term>
<listitem>LiveAssist</listitem>
</varlistentry>
<varlistentry>
<term>2</term>
<listitem>Auto</listitem>
</varlistentry>
<varlistentry>
<term>3</term>
<listitem>Manual</listitem>
</varlistentry>
</variablelist>
</para>
</sect2>
<sect2 xml:id="sect.rml.sleep__sp_">
<title>Sleep [SP]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>ripcd</command><manvolnum>8</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>SP</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Pause for specified time.
</para>
<para>
<userinput>SP
<replaceable>msecs</replaceable>!</userinput>
</para>
<para>
Wait for <replaceable>msecs</replaceable> milliseconds.
</para>
</sect2>
<sect2 xml:id="sect.rml.start__pl_">
<title>Start [PL]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>rdairplay</command><manvolnum>1</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>PL</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Start a log at a specified line.
</para>
<para>
<userinput>PL
<replaceable>mach</replaceable>
<replaceable>line</replaceable>!</userinput>
</para>
<para>
Start log machine <replaceable>mach</replaceable> at line
<replaceable>line</replaceable> if stopped, otherwise do nothing.
</para>
</sect2>
<sect2 xml:id="sect.rml.start_button__pb_">
<title>Start Button [PB]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>rdairplay</command><manvolnum>1</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>PB</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Push an RDAirPlay Start button.
</para>
<para>
<userinput>PB
<replaceable>button</replaceable>!</userinput>
</para>
<para>
Push button <replaceable>button</replaceable>.
</para>
</sect2>
<sect2 xml:id="sect.rml.start_next__pn_">
<title>Start Next [PN]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>rdairplay</command><manvolnum>1</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>PN</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Start the next event in a log.
</para>
<para>
<userinput>PN
<replaceable>mach</replaceable>
[<replaceable>mport</replaceable>]
[<replaceable>skip</replaceable>]!</userinput>
</para>
<para>
Start log machine <replaceable>mach</replaceable>> if stopped, or start
next event if already running. If specified, start the playout on
machine port <replaceable>mport</replaceable>>. If
<replaceable>skip</replaceable> is supplied, equal to '1' and the log
machine is in Manual or Live Assist mode, then any intervening
meta-events in log between the current 'next' event and the next cart
will be skipped over.
</para>
</sect2>
<sect2 xml:id="sect.rml.start_record_deck__rs_">
<title>Start Record Deck [RS]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>rdcatchd</command><manvolnum>8</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>RS</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Start an RDCatch Recording
</para>
<para>
<userinput>RS
<replaceable>decknum</replaceable>
<replaceable>cartnum</replaceable>
<replaceable>cutnum</replaceable>
<replaceable>maxlen</replaceable>!</userinput>
</para>
<para>
Start recording to cut <replaceable>cutnum</replaceable> of cart
<replaceable>cartnum</replaceable>, using RDCatch record deck
<replaceable>decknum</replaceable> for a maximum time of
<replaceable>maxlen</replaceable> mS. The record parameters used
(format, sample rate, channels, etc) will be those configured for the
selected deck in RDAdmin->ManageHosts->RDCatch. The selected cart and
cut must already exist. Any audio previously residing in the selected
cart and cut will be overwritten.
</para>
</sect2>
<sect2 xml:id="sect.stop__rs_">
<title>Stop [PS]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>rdairplay</command><manvolnum>1</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>PS</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Stop a log in RDAirPlay.
</para>
<para>
<userinput>PS
<replaceable>mach</replaceable>|<userinput>0</userinput>
[<replaceable>fade</replaceable>]
[<replaceable>mport</replaceable>]!</userinput>
</para>
<para>
Stop log machine <replaceable>mach</replaceable>, or
<userinput>0</userinput> for all log machines. If specified, only stop
carts playing on machine port <replaceable>mport</replaceable>. If
specified, fade out <replaceable>fade</replaceable> msecs.
</para>
</sect2>
<sect2 xml:id="sect.rml.stop_panel__pt_">
<title>Stop Panel [PT]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>rdairplay</command><manvolnum>1</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>PT</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Stop a SoundPanel button in RDAirPlay.
</para>
<para>
<userinput>PT
<replaceable>panel</replaceable>
<replaceable>col</replaceable>
<replaceable>row</replaceable>
[<replaceable>mport</replaceable>]
[0|1]
<replaceable>fade</replaceable>!</userinput>
</para>
<para>
Stop the button at <replaceable>col</replaceable>,
<replaceable>row</replaceable> of panel <replaceable>panel</replaceable>.
Panel: <userinput>S1</userinput>...<userinput>S50</userinput> or
<userinput>U1</userinput>...<userinput>U50</userinput>;
<userinput>C</userinput> for <replaceable>panel</replaceable> means
currently selected panel.
If <replaceable>col</replaceable> and/or <replaceable>row</replaceable>
is <userinput>0</userinput>: stop all playing buttons in
<replaceable>col</replaceable> or <replaceable>row</replaceable>.
If specified, start the playout on panel port
<replaceable>mport</replaceable>. The stopped panel will stay active when
finished, if the 5th argument is <userinput>1</userinput>.
</para>
</sect2>
<sect2 xml:id="sect.rml.stop_record_deck__rr_">
<title>Stop Record Deck [RR]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>rdcatchd</command><manvolnum>8</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>RR</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Stop an RDCatch Recording
</para>
<para>
<userinput>RR
<replaceable>decknum</replaceable>!</userinput>
</para>
<para>
Stop any active recording on RDCatch deck <replaceable>decknum</replaceable>.
</para>
</sect2>
<sect2 xml:id="sect.rml.stop_slot__ds_">
<title>Stop Slot [DS]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>rdcartslots</command><manvolnum>1</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>DS</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Stop an RDCartSlots slot.
</para>
<para>
<userinput>DS
<replaceable>slot</replaceable>!</userinput>
</para>
<para>
Stop the cart currently loaded in the <replaceable>slot</replaceable>
slot. The slot must be in Cart Deck mode. This command will be
ignored if the slot is unloaded or already playing.
</para>
</sect2>
<sect2 xml:id="sect.rml.switch_add__sa_">
<title>Switch Add [SA]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>ripcd</command><manvolnum>8</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>SA</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Add an input to an output.
</para>
<para>
<userinput>SA
<replaceable>matrix</replaceable>
<replaceable>input</replaceable>
<replaceable>output</replaceable>!</userinput>
</para>
<para>
Command switch matrix number <replaceable>matrix</replaceable> to add
input number <replaceable>input</replaceable> to output number
<replaceable>output</replaceable>. Unlike <command>SWITCH TAKE</command>,
this command leaves any other previously assigned inputs unchanged.
</para>
</sect2>
<sect2 xml:id="sect.rml.switch_add_with_gain__sg_">
<title>Switch Add With Gain [SG]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>ripcd</command><manvolnum>8</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>SG</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Add an input to an output while specifyng the crosspoint gain.
</para>
<para>
<userinput>SG
<replaceable>matrix</replaceable>
<replaceable>input</replaceable>
<replaceable>output</replaceable>
<replaceable>gain</replaceable>!</userinput>
</para>
<para>
Command switch matrix number <replaceable>matrix</replaceable> to add
input number <replaceable>input</replaceable> to output number
<replaceable>output</replaceable> at gain <replaceable>gain</replaceable>.
The gain is specified in 1/10 of a dB, with 0 = unity gain.
Unlike <command>SWITCH TAKE</command>, this command leaves any other
previously assigned inputs unchanged.
</para>
</sect2>
<sect2 xml:id="sect.rml.switch_crosspoint_gain__sx_">
<title>Switch Crosspoint Gain [SX]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>ripcd</command><manvolnum>8</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>SX</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Set crosspoint gain.
</para>
<para>
<userinput>SX
<replaceable>matrix</replaceable>
<replaceable>input</replaceable>
<replaceable>output</replaceable>
<replaceable>level</replaceable>!</userinput>
</para>
<para>
Command switch matrix number <replaceable>matrix</replaceable> to adjust
the gain of the crosspoint connecting input
<replaceable>input</replaceable> to output
<replaceable>output</replaceable> to <replaceable>level</replaceable> dB.
</para>
</sect2>
<sect2 xml:id="sect.rml.switch_level__sl_">
<title>Switch Level [SL]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>ripcd</command><manvolnum>8</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>SL</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Set input gain.
</para>
<para>
<userinput>SL
<replaceable>matrix</replaceable>
<replaceable>input</replaceable>
<replaceable>level</replaceable>!</userinput>
</para>
<para>
Command switch matrix number <replaceable>matrix</replaceable> to adjust
the gain of input number <replaceable>input</replaceable> to
<replaceable>level</replaceable> dB.
</para>
</sect2>
<sect2 xml:id="sect.rml.switch_reload__sz_">
<title>Switch Reload [SZ]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>ripcd</command><manvolnum>8</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>SZ</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Reload the configuration for a switch matrix.
</para>
<para>
<userinput>SZ
<replaceable>matrix</replaceable>!</userinput>
</para>
<para>
Reload the configuration for switch matrix
<replaceable>matrix</replaceable>. Normally, this should only be
issued by RDAdmin following a configuration change.
</para>
</sect2>
<sect2 xml:id="sect.rml.switch_remove__sr_">
<title>Switch Remove [SR]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>ripcd</command><manvolnum>8</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>SR</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Remove an input from an output.
</para>
<para>
<userinput>SR
<replaceable>matrix</replaceable>
<replaceable>input</replaceable>
<replaceable>output</replaceable>!</userinput>
</para>
<para>
Command switch matrix number <replaceable>matrix</replaceable> to remove
input number <replaceable>input</replaceable> from output number
<replaceable>output</replaceable>. Unlike <command>SWITCH TAKE</command>,
this command leaves any other previously assigned inputs unchanged.
</para>
</sect2>
<sect2 xml:id="sect.rml.switch_take__st_">
<title>Switch Take [ST]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>ripcd</command><manvolnum>8</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>ST</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Exclusively route an input to an output.
</para>
<para>
<userinput>ST
<replaceable>matrix</replaceable>
<replaceable>input</replaceable>
<replaceable>output</replaceable>!</userinput>
</para>
<para>
Command switch matrix number <replaceable>matrix</replaceable> to take
input number <replaceable>input</replaceable> to output number
<replaceable>output</replaceable>. "Take" in this context implies
removing any previously assigned inputs from the referenced output.
</para>
</sect2>
<sect2 xml:id="sect.rml.toggle_on_air_flag__ta_">
<title>Toggle On Air Flag [TA]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>ripcd</command><manvolnum>8</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>TA</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Set the state of the On Air flag.
</para>
<para>
<userinput>TA 0</userinput>|<userinput>1!</userinput>
</para>
<para>
Set the On-Air flag to ON [<userinput>1</userinput>] or OFF
[<userinput>0</userinput>].
</para>
</sect2>
<sect2 xml:id="sect.rml.udp_out__uo_">
<title>UDP Out [UO]</title>
<para>
<variablelist>
<varlistentry>
<term>Module</term>
<listitem><command>ripcd</command><manvolnum>8</manvolnum></listitem>
</varlistentry>
<varlistentry>
<term>Mnemonic</term>
<listitem><userinput>UO</userinput></listitem>
</varlistentry>
</variablelist>
</para>
<para>
Send data to a UDP port.
</para>
<para>
<userinput>UO
<replaceable>ipaddr</replaceable>
<replaceable>udpport</replaceable>
<replaceable>data</replaceable>!</userinput>
</para>
<para>
Send <replaceable>data</replaceable> in a UDP packet to port
<replaceable>udpport</replaceable> at <replaceable>ipaddr</replaceable>.
<replaceable>data</replaceable> can consist of arbitrary binary data as
well as textual characters (see <command>Binary Data</command> above).
</para>
</sect2>
</sect1>
</chapter>
<chapter xml:id="chapter.utilities">
<title>Interfacing with the Linux Ecosystem: Command-Line Utilities</title>
<para>
Rivendell includes a number of command-line utilities. Some of these
can be used to perform efficient &quot;bulk&quot; operations --e.g.
import thousands of audio files in one command -- while others are
useful in various aspects of system maintenance. This section provides
a brief overview of the available utilities; full documentation for each
is available via the Linux man page facility.
</para>
<sect1 xml:id="sect.utilities.rdclilogedit">
<title>rdclilogedit(1)</title>
<para>
<command>rdclilogedit</command><manvolnum>1</manvolnum> is a
command-line interface (CLI) program that can be used to edit
Rivendell logs. It is loosely modeled after the venerable
<command>ed</command><manvolnum>1</manvolnum> command-line editor
and so is particularly well suited for use in scripting
environments.
</para>
<para>
Full documentation is available by doing
<userinput>man 1 rdclilogedit</userinput>.
</para>
</sect1>
<sect1 xml:id="sect.utilities.rdconvert">
<title>rdconvert(1)</title>
<para>
<command>rdconvert</command><manvolnum>1</manvolnum> is a command-line
interface (CLI) program that can be used to convert an audio file
into a different format.
</para>
<para>
Full documentation is available by doing
<userinput>man 1 rdconvert</userinput>.
</para>
</sect1>
<sect1 xml:id="sect.utilities.rddbcheck">
<title>rddbcheck(8)</title>
<para>
<command>rddbcheck</command><manvolnum>8</manvolnum> is a
command-line interface (CLI) program that can be used to check a
Rivendell database for consistency and correct errors found.
</para>
<para>
Full documentation is available by doing
<userinput>man 8 rddbcheck</userinput>.
</para>
</sect1>
<sect1 xml:id="sect.utilities.rdexport">
<title>rdexport(1)</title>
<para>
<command>rdexport</command><manvolnum>1</manvolnum> is a command-line
interface (CLI) program that can be used to
export audio material from the Rivendell Library. It is particularly
useful in situations where a large number of audio files need to be
exported in an automated fashion, and is capable of exporting
thousands of files with a single command-line invocation.
</para>
<para>
Full documentation is available by doing
<userinput>man 1 rdexport</userinput>.
</para>
</sect1>
<sect1 xml:id="sect.utilities.rdimport">
<title>rdimport(1)</title>
<para>
<command>rdimport</command><manvolnum>1</manvolnum> is a command-line
interface (CLI) program that can be used to
import audio material into the Rivendell Library. It is particularly
useful in situations where a large number of audio files need to be
imported in an automated fashion, and is capable of importing
thousands of files with a single command-line invocation.
</para>
<para>
Full documentation is available by doing
<userinput>man 1 rdimport</userinput>.
</para>
</sect1>
<sect1 xml:id="sect.utilities.rdmarkerset">
<title>rdmarkerset(8)</title>
<para>
<command>rdmarkerset</command><manvolnum>8</manvolnum> is a
command-line interface (CLI) program that can be used to set or
alter audio cut markers in the Rivendell Radio Automation System.
It is capable of altering multiple cuts in a single operation.
</para>
<para>
Full documentation is available by doing
<userinput>man 8 rdmarkerset</userinput>.
</para>
</sect1>
<sect1 xml:id="sect.utilities.rdrevert">
<title>rdrevert(8)</title>
<para>
<command>rdrevert</command><manvolnum>8</manvolnum> is a
command-line interface (CLI) program that can be used to revert a
Rivendell database to a previous schema version.
</para>
<para>
Full documentation is available by doing
<userinput>man 8 rdrevert</userinput>.
</para>
</sect1>
<sect1 xml:id="sect.utilities.mlsend_1_">
<title>rmlsend(1)</title>
<para>
<command>rmlsend</command><manvolnum>1</manvolnum> is a small
utility that can be used to send RML commands to a
local or remote Rivendell host. It can operate in two modes: GUI or
a command line interface (CLI).
</para>
<para>
If started with no arguments, RMLSend will come up in GUI mode.
</para>
<para>
<mediaobject>
<imageobject>
<imagedata align="center" fileref="utilities.rmlsend_screenshot.png" scale="60"/>
</imageobject>
<caption><para>RMLSend in GUI Mode</para></caption>
</mediaobject>
</para>
<para>
Full documentation is available by doing
<userinput>man 1 rmlsend</userinput>.
</para>
</sect1>
</chapter>
<appendix xml:id="appendix.gplv2">
<title>The GNU General Public License, Version Two</title>
<sect1 xml:id="sect.gplv2.the_gnu_general_public_license__version_two">
<title>GNU GENERAL PUBLIC LICENSE</title>
<subtitle>Version 2, June 1991</subtitle>
<para>
Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA.
</para>
<para>
Everyone is permitted to copy and distribute verbatim copies of
this license document, but changing it is not allowed.
</para>
<sect2 xml:id="sect.gplv2.preamble">
<title>Preamble</title>
<para>
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit
to using it. (Some other Free Software Foundation software is
covered by the GNU Library General Public License instead.)
You can apply it to your programs, too.
</para>
<para>
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and
charge for this service if you wish), that you receive source code
or can get it if you want it, that you can change the software or
use pieces of it in new free programs; and that you know you can do
these things.
</para>
<para>
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the
rights. These restrictions translate to certain responsibilities
for you if you distribute copies of the software, or if you modify
it.
</para>
<para>
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights
that you have. You must make sure that they, too, receive or can
get the source code. And you must show them these terms so they
know their rights.
</para>
<para>
We protect your rights with two steps: (1) copyright the software,
and (2) offer you this license which gives you legal permission to
copy, distribute and/or modify the software.
</para>
<para>
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed
on, we want its recipients to know that what they have is not the
original, so that any problems introduced by others will not reflect
on the original authors' reputations.
</para>
<para>
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making
the program proprietary. To prevent this, we have made it clear
that any patent must be licensed for everyone's free use or not
licensed at all.
</para>
<para>
The precise terms and conditions for copying, distribution and
modification follow.
</para>
</sect2>
<sect2 xml:id="sect.gplv2.gnu_general_public_license">
<title>GNU GENERAL PUBLIC LICENSE</title>
<subtitle>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND
MODIFICATION</subtitle>
<orderedlist startingnumber="0" numeration="arabic">
<listitem>
<para>
This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be
distributed under the terms of this General Public License. The
&quot;Program&quot;, below, refers to any such program or work,
and a &quot;work based on the Program&quot; means either the
Program or any derivative work under copyright law: that is to
say, a work containing the Program or a portion of it, either
verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without
limitation in the term &quot;modification&quot;.) Each licensee
is addressed as &quot;you&quot;.
</para>
<para>
Activities other than copying, distribution and modification are
not covered by this License; they are outside its scope. The act
of running the Program is not restricted, and the output from
the Program is covered only if its contents constitute a work
based on the Program (independent of having been made by running
the Program). Whether that is true depends on what the Program
does.
</para>
</listitem>
<listitem>
<para>
You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep
intact all the notices that refer to this License and to the
absence of any warranty; and give any other recipients of the
Program a copy of this License along with the Program.
</para>
<para>
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange
for a fee.
</para>
</listitem>
<listitem>
<para>
You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section
1 above, provided that you also meet all of these conditions:
</para>
<orderedlist startingnumber="1" numeration="loweralpha">
<listitem>
<para>
You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
</para>
</listitem>
<listitem>
<para>
You must cause any work that you distribute or publish, that
in whole or in part contains or is derived from the Program
or any part thereof, to be licensed as a whole at no charge
to all third parties under the terms of this License.
</para>
</listitem>
<listitem>
<para>
If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display
an announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you
provide a warranty) and that users may redistribute the
program under these conditions, and telling the user how to
view a copy of this License. (Exception: if the Program
itself is interactive but does not normally print such an
announcement, your work based on the Program is not required
to print an announcement.)
</para>
<para>
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the
Program, and can be reasonably considered independent and
separate works in themselves, then this License, and its
terms, do not apply to those sections when you distribute
them as separate works. But when you distribute the same
sections as part of a whole which is a work based on the
Program, the distribution of the whole must be on the terms
of this License, whose permissions for other licensees extend
to the entire whole, and thus to each and every part
regardless of who wrote it.
</para>
<para>
Thus, it is not the intent of this section to claim rights
or contest your rights to work written entirely by you;
rather, the intent is to exercise the right to control the
distribution of derivative or collective works based on the
Program.
</para>
<para>
In addition, mere aggregation of another work not based on
the Program with the Program (or with a work based on the
Program) on a volume of a storage or distribution medium
does not bring the other work under the scope of this License.
</para>
</listitem>
</orderedlist>
</listitem>
<listitem>
<para>
You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the
terms of Sections 1 and 2 above provided that you also do one
of the following:
</para>
<orderedlist startingnumber="1" numeration="loweralpha">
<listitem>
<para>
Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of
Sections 1 and 2 above on a medium customarily used for
software interchange; or,
</para>
</listitem>
<listitem>
<para>
Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange; or,
</para>
</listitem>
<listitem>
<para>
Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
</para>
</listitem>
</orderedlist>
<para>
The source code for a work means the preferred form of the work
for making modifications to it. For an executable work, complete
source code means all the source code for all modules it
contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable.
However, as a special exception, the source code distributed
need not include anything that is normally distributed (in
either source or binary form) with the major components
(compiler, kernel, and so on) of the operating system on which
the executable runs, unless that component itself accompanies
the executable.
</para>
<para>
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
</para>
</listitem>
<listitem>
<para>
You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program
is void, and will automatically terminate your rights under this
License. However, parties who have received copies, or rights,
from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
</para>
</listitem>
<listitem>
<para>
You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to
modify or distribute the Program or its derivative works. These
actions are prohibited by law if you do not accept this License.
Therefore, by modifying or distributing the Program (or any work
based on the Program), you indicate your acceptance of this
License to do so, and all its terms and conditions for copying,
distributing or modifying the Program or works based on it.
</para>
</listitem>
<listitem>
<para>
Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from
the original licensor to copy, distribute or modify the Program
subject to these terms and conditions. You may not impose any
further restrictions on the recipients' exercise of the rights
granted herein. You are not responsible for enforcing compliance
by third parties to this License.
</para>
</listitem>
<listitem>
<para>
If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent
issues), conditions are imposed on you (whether by court order,
agreement or otherwise) that contradict the conditions of this
License, they do not excuse you from the conditions of this
License. If you cannot distribute so as to satisfy
simultaneously your obligations under this License and any other
pertinent obligations, then as a consequence you may not
distribute the Program at all. For example, if a patent license
would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you,
then the only way you could satisfy both it and this License
would be to refrain entirely from distribution of the Program.
</para>
<para>
If any portion of this section is held invalid or unenforceable
under any particular circumstance, the balance of the section is
intended to apply and the section as a whole is intended to
apply in other circumstances.
</para>
<para>
It is not the purpose of this section to induce you to infringe
any patents or other property right claims or to contest
validity of any such claims; this section has the sole purpose
of protecting the integrity of the free software distribution
system, which is implemented by public license practices. Many
people have made generous contributions to the wide range of
software distributed through that system in reliance on
consistent application of that system; it is up to the
author/donor to decide if he or she is willing to distribute
software through any other system and a licensee cannot impose
that choice.
</para>
<para>
This section is intended to make thoroughly clear what is
believed to be a consequence of the rest of this License.
</para>
</listitem>
<listitem>
<para>
If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces,
the original copyright holder who places the Program under this
License may add an explicit geographical distribution limitation
excluding those countries, so that distribution is permitted only
in or among countries not thus excluded. In such case, this
License incorporates the limitation as if written in the body of
this License.
</para>
</listitem>
<listitem>
<para>
The Free Software Foundation may publish revised and/or new
versions of the General Public License from time to time.
Such new versions will be similar in spirit to the present
version, but may differ in detail to address new problems or
concerns.
</para>
<para>
Each version is given a distinguishing version number. If the
Program specifies a version number of this License which applies
to it and "any later version", you have the option of following
the terms and conditions either of that version or of any later
version published by the Free Software Foundation. If the
Program does not specify a version number of this License, you
may choose any version ever published by the Free Software
Foundation.
</para>
</listitem>
<listitem>
<para>
If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to
the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free
status of all derivatives of our free software and of promoting
the sharing and reuse of software generally.
</para>
</listitem>
</orderedlist>
</sect2>
<sect2 xml:id="sect.gplv2.no_warranty">
<title>NO WARRANTY</title>
<orderedlist startingnumber="11" numeration="arabic">
<listitem>
<para>
BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM &quot;AS IS&quot;
WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE
RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.
SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
NECESSARY SERVICING, REPAIR OR CORRECTION.
</para>
</listitem>
<listitem>
<para>
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY
MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE
LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS
OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH
ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
</para>
</listitem>
</orderedlist>
</sect2>
<sect2 xml:id="sect.gplv2.end_of_terms_and_conditions">
<title>END OF TERMS AND CONDITIONS</title>
</sect2>
</sect1>
<sect1 xml:id="sect.gplv2.how_to_apply_these_terms_to_your_new_programs">
<title>How to Apply These Terms to Your New Programs</title>
<para>
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make
it free software which everyone can redistribute and change under
these terms.
</para>
<para>
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
</para>
<sect2 xml:id="sect.gplv2.example">
<para>
<literallayout>
&lt;one line to give the program's name and a brief idea of what it does.&gt;
Copyright (C) &lt;year&gt; &lt;name of author&gt;
</literallayout>
</para>
<para>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
</para>
<para>
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
</para>
<para>
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA
</para>
</sect2>
<para>
Also add information on how to contact you by electronic and paper mail.
</para>
<para>
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
</para>
<para>
<literallayout>
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
</literallayout>
</para>
<para>
The hypothetical commands `show w' and `show c' should show the
appropriate parts of the General Public License. Of course, the
commands you use may be called something other than `show w' and
`show c'; they could even be mouse-clicks or menu items --whatever
suits your program.
</para>
<para>
You should also get your employer (if you work as a programmer) or
your school, if any, to sign a "copyright disclaimer" for the program,
if necessary. Here is a sample; alter the names:
</para>
<sect2 xml:id="sect.gplv2.example2">
<para>
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
</para>
<literallayout>
&lt;signature of Ty Coon&gt;, 1 April 1989
Ty Coon, President of Vice
</literallayout>
</sect2>
<para>
This General Public License does not permit incorporating your
program into proprietary programs. If your program is a subroutine
library, you may consider it more useful to permit linking proprietary
applications with the library. If this is what you want to do, use
the GNU Library General Public License instead of this License.
</para>
</sect1>
</appendix>
<appendix xml:id="appendix.gpio_switcher_devices">
<title>Supported GPIO/Switcher Devices</title>
<para>
The following GPIO/switcher devices are supported under Rivendell:
</para>
<sect1 xml:id="sect.gpio_switcher_devices.am16">
<title>360 Systems AM-16/B Audio Crosspoint Switcher</title>
<variablelist>
<varlistentry>
<term>Driver Name:</term>
<listitem>
<para>
360 Systems AM-16/B
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Supported RML Commands:</term>
<listitem>
<para>
<simplelist>
<member>Switch Take ['<command>ST</command>']</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<sect2>
<title>General Notes</title>
<para>
Control is done by means of MIDI connections to the 'MIDI IN' and
'MIDI OUT' ports on the back of the unit, with the appropriate
MIDI device specified in the
<computeroutput>Device:</computeroutput> field in
<code>RDAdmin->ManageHosts->Switchers/GPIO</code>.
The following settings should be configured on the AM-16/B:
</para>
<variablelist>
<varlistentry>
<term>Control Port Type:</term>
<listitem>
<para>
MIDI (jumper JMP1)
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Program Send:</term>
<listitem>
<para>
OFF
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Receive Channel: o</term>
<listitem>
<para>
o (Omni mode)
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Memory Protect:</term>
<listitem>
<para>
OFF
</para>
</listitem>
</varlistentry>
</variablelist>
<para>
The driver uses MIDI programs '0' and '1' on the AM-16/B when
processing crosspoint changes; anything previously saved in
those programs will be overwritten!
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.gpio_switcher_devices.bt10x1">
<title>BroadcastTools 10x1</title>
<variablelist>
<varlistentry>
<term>Driver Name:</term>
<listitem>
<para>
BroadcastTools 10x1
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Supported RML Commands:</term>
<listitem>
<para>
<simplelist>
<member>Switch Take ['<command>ST</command>']</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<sect2>
<title>General Notes</title>
<para>
Control is done by means of an RS-232C connection to a four pin RJ11
modular jack on the back of the unit (an adapter to a standard DB9
connector is supplied by Broadcast Tools with the unit). Serial port
parameters should be set to 2400 baud rate, no parity, 8 data bits, 1
stop bit, CR/LF termination.
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.gpio_switcher_devices.bt16x1">
<title>BroadcastTools 16x1</title>
<variablelist>
<varlistentry>
<term>Driver Name:</term>
<listitem>
<para>
BroadcastTools 16x1
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Supported RML Commands:</term>
<listitem>
<para>
<simplelist>
<member>Switch Take ['<command>ST</command>']</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<sect2>
<title>General Notes</title>
<para>
Control is done by means of an RS-232C connection to a four pin RJ11
modular jack on the back of the unit (an adapter to a standard DB9
connector is supplied by Broadcast Tools with the unit). Serial port
parameters should be set to 9600 baud rate, no parity, 8 data bits, 1
stop bit, CR/LF termination.
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.gpio_switcher_devices.bt16x2">
<title>BroadcastTools 16x2</title>
<variablelist>
<varlistentry>
<term>Driver Name:</term>
<listitem>
<para>
BroadcastTools 16x2
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Supported RML Commands:</term>
<listitem>
<para>
<simplelist>
<member>GPO Set ['<command>GO</command>']</member>
<member>Switch Take ['<command>ST</command>']</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<sect2>
<title>General Notes</title>
<para>
Control is done by means of an RS-232C connection to a four pin RJ11
modular jack on the back of the unit (an adapter to a standard DB9
connector is supplied by Broadcast Tools with the unit). Serial port
parameters should be set to 9600 baud rate, no parity, 8 data bits, 1
stop bit, CR/LF termination.
</para>
<para>
Operation in 'multidrop' mode is not supported.
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.gpio_switcher_devices.8x2">
<title>BroadcastTools 8x2</title>
<variablelist>
<varlistentry>
<term>Driver Name:</term>
<listitem>
<para>
BroadcastTools 8x2
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Supported RML Commands:</term>
<listitem>
<para>
<simplelist>
<member>Switch Add ['<command>SA</command>']</member>
<member>Switch Remove ['<command>SR</command>']</member>
<member>Switch Take ['<command>ST</command>']</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<sect2>
<title>General Notes</title>
<para>
Control is done by means of an RS-232C connection to a four pin RJ11
modular jack on the back of the unit (an adapter to a standard DB9
connector is supplied by Broadcast Tools with the unit). Serial port
parameters should be set to 2400 baud rate, no parity, 8 data bits, 1
stop bit, CR/LF termination.
</para>
<para>
The 8x2 should be configured to use 'Mix' mode. This can be done
by holding down the F1 button on the switcher while powering up.
</para>
<para>
Operation in 'multidrop' mode is not supported.
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.gpio_switcher_devices.btacs82">
<title>BroadcastTools ACS8.2</title>
<variablelist>
<varlistentry>
<term>Driver Name:</term>
<listitem>
<para>
BroadcastTools ACS8.2
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Supported RML Commands:</term>
<listitem>
<para>
<simplelist>
<member>GPI Enable ['<command>GE</command>']</member>
<member>GPI Set ['<command>GI</command>']</member>
<member>GPO Set ['<command>GO</command>']</member>
<member>Switch Add ['<command>SA</command>']</member>
<member>Switch Level ['<command>SL</command>']
[output #1 only]</member>
<member>Switch Remove ['<command>SR</command>']</member>
<member>Switch Take ['<command>ST</command>']</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<sect2>
<title>General Notes</title>
<para>
Control is done by means of an RS-232C connection to a four pin RJ11
modular jack on the back of the unit (an adapter to a standard DB9
connector is supplied by Broadcast Tools with the unit). Serial port
speed on the ACS 8.2 should be set to 9600. Serial port parameters
should be set to 9600 baud rate, no parity, 8 data bits, 1 stop bit,
no termination.
</para>
<para>
The ACS 8.2 should be configured to use 'Mix' mode --i.e. DIP switches
SW17-5 and SW17-6 should both be 'on', and the unit ID should be
'0', with DIP switches SW17-1 and SW17-2 both 'off'.
</para>
<para>
Operation in 'multidrop' mode is not supported. If you wish to use
GPI (referred to as 'PIP', for 'Parallel Input Port' in the Broadcast
Tools documentation), then you will also need to be sure that DIP
switch SW17-10 is ON.
</para>
<para>
The ACS 8.2 supports the Switch Level [SL] RML for connections to
Output 1. Six different gain levels are supported: 0 dB, -3 dB,
-6 dB, -10 dB, -15 dB and -20 dB. For for a specified gain level of
greater than or equal to -20, the applied gain will be rounded down
to the next supported level. For gain levels of less than -20 dB, the
minimum supported gain (-20 dB) will be applied.
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.gpio_switcher_devices.btadms4422">
<title>BroadcastTools ADMS 44.22 Analog/AES Digital Matrix Switcher</title>
<variablelist>
<varlistentry>
<term>Driver Name:</term>
<listitem>
<para>
BroadcastTools ADMS 44.22
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Supported RML Commands:</term>
<listitem>
<para>
<simplelist>
<member>GPI Enable ['<command>GE</command>']</member>
<member>GPI Set ['<command>GI</command>']</member>
<member>GPO Set ['<command>GO</command>']</member>
<member>Switch Add ['<command>SA</command>']</member>
<member>Switch Level ['<command>SL</command>']</member>
<member>Switch Remove ['<command>SR</command>']</member>
<member>Switch Take ['<command>ST</command>']</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<sect2>
<title>General Notes</title>
<para>
Control is done by means of a serial connection to the unit's integrated
serial port. The 'OPTIONS' switches on the back of the unit should
be set as follows:
</para>
<simplelist>
<member>1: OFF (UP)</member>
<member>2: OFF (UP)</member>
<member>3: OFF (UP)</member>
<member>4: OFF (UP)</member>
<member>5: OFF (UP)</member>
<member>6: OFF (UP)</member>
<member>7: ON (DOWN)</member>
<member>8: ON (DOWN)</member>
<member>9: OFF (UP)</member>
<member>10: OFF (UP)</member>
</simplelist>
<para>
The Rivendell serial interface should be set to use 9600 bits/sec,
8 bits, 1 stop bit and no flow control.
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.gpio_switcher_devices.btgpi16">
<title>BroadcastTools GPI-16 General Purpose Input Module</title>
<variablelist>
<varlistentry>
<term>Driver Name:</term>
<listitem>
<para>
BroadcastTools GPI-16
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Supported RML Commands:</term>
<listitem>
<para>
<simplelist>
<member>GPI Enable ['<command>GE</command>']</member>
<member>GPI Set ['<command>GI</command>']</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<sect2>
<title>General Notes</title>
<para>
Control is done by means of a serial connection to the unit's
integrated serial port. There is also a 'plus' version that
features an integrated type B USB interface that simulates a serial
port.
</para>
<para>
The unit should work correctly with factory default settings.
The Rivendell serial interface should be set to use 9600 bits/sec,
8 bits, 1 stop bit and no flow control.
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.gpio_switcher_devices.btsentinel4web">
<title>BroadcastTools Sentinel 4 Web AES Switcher</title>
<variablelist>
<varlistentry>
<term>Driver Name:</term>
<listitem>
<para>
BroadcastTools Sentinel 4 Web
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Supported RML Commands:</term>
<listitem>
<para>
<simplelist>
<member>Switch Take ['<command>ST</command>']</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<sect2>
<title>General Notes</title>
<para>
Control is done by means of a TCP/IP connection to the unit's
integrated Ethernet port.
</para>
<para>
On the <computeroutput>Email/Network Setup</computeroutput>
page of the unit, be sure that the
<computeroutput>TCP Enabled</computeroutput> box is checked and
that <computeroutput>TCP Listen Port</computeroutput> is set to
the same number as is used in the
<computeroutput>IP Port</computeroutput> setting in Rivendell's
driver configuration (<userinput>56</userinput> by default).
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.gpio_switcher_devices.btsrc16">
<title>BroadcastTools SRC-16</title>
<variablelist>
<varlistentry>
<term>Driver Name:</term>
<listitem>
<para>
BroadcastTools SRC-16
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Supported RML Commands:</term>
<listitem>
<para>
<simplelist>
<member>GPI Enable ['<command>GE</command>']</member>
<member>GPI Set ['<command>GI</command>']</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<sect2>
<title>General Notes</title>
<para>
Control is done by means of a serial connection to the unit's integrated
serial port.
</para>
<para>
The unit should work correctly with factory default settings.
The Rivendell serial interface should be set to use 9600 bits/sec,
8 bits, 1 stop bit and no flow control.
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.gpio_switcher_devices.btss124">
<title>BroadcastTools SS 12.4</title>
<variablelist>
<varlistentry>
<term>Driver Name:</term>
<listitem>
<para>
BroadcastTools SS 12.4
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Supported RML Commands:</term>
<listitem>
<para>
<simplelist>
<member>Switch Add ['<command>SA</command>']</member>
<member>Switch Remove ['<command>SR</command>']</member>
<member>Switch Take ['<command>ST</command>']</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<sect2>
<title>General Notes</title>
<para>
Control is done by means of an RS-232C connection to a four pin RJ11
modular jack on the back of the unit (an adapter to a standard DB9
connector is supplied by Broadcast Tools with the unit). Serial port
parameters should be set to 9600 baud rate, no parity, 8 data bits, 1
stop bit, CR/LF termination.
</para>
<para>
The SS 12.4 should be configured to use 'Mix' mode. This can be done
by setting DIP switches SW1-7 and SW-1-3 to OFF.
</para>
<para>
Operation in 'multidrop' mode is not supported.
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.gpio_switcher_devices.btss164">
<title>BroadcastTools SS 16.4</title>
<variablelist>
<varlistentry>
<term>Driver Name:</term>
<listitem>
<para>
BroadcastTools SS 16.4
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Supported RML Commands:</term>
<listitem>
<para>
<simplelist>
<member>GPI Enable ['<command>GE</command>']</member>
<member>GPI Set ['<command>GI</command>']</member>
<member>GPO Set ['<command>GO</command>']</member>
<member>Switch Add ['<command>SA</command>']</member>
<member>Switch Remove ['<command>SR</command>']</member>
<member>Switch Take ['<command>ST</command>']</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<sect2>
<title>General Notes</title>
<para>
Control is done by means of an RS-232C connection to a four pin RJ11
modular jack on the back of the unit (an adapter to a standard DB9
connector is supplied by Broadcast Tools with the unit). Serial port
parameters should be set to 9600 baud rate, no parity, 8 data bits, 1
stop bit, CR/LF termination.
</para>
<para>
A total of 24 GPO outputs are supported, with the relays appearing as
GPO lines 1-8 and the open collector outputs as lines 9-24. All 24
'PIP' inputs are supported as GPI devices.
</para>
<para>
The SS 16.4 should be configured to use 'Mix' mode and to have 'PIP'
mode enabled. This can be done by setting DIP switches SW24-5, SW24-6
and SW24-8 to ON.
</para>
<para>
Operation in 'multidrop' mode is not supported.
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.gpio_switcher_devices.btss41mlr">
<title>BroadcastTools SS 4.1 MLR Switcher/Router</title>
<variablelist>
<varlistentry>
<term>Driver Name:</term>
<listitem>
<para>
BroadcastTools SS4.1 MLR
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Supported RML Commands:</term>
<listitem>
<para>
<simplelist>
<member>GPI Enable ['<command>GE</command>']</member>
<member>GPI Set ['<command>GI</command>']</member>
<member>Switch Take ['<command>ST</command>']</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<sect2>
<title>General Notes</title>
<para>
Control is done by means of an RS-232C connection to a four pin RJ11
modular jack on the back of the unit (an adapter to a standard DB9
connector is supplied by Broadcast Tools with the unit). Serial port
speed on the SS 4.1 should be set to 9600 (DIP switches SW6-4 and
SW6-5 set to 'off'). Serial port parameters in RDAdmin should be set
to 9600 baud rate, no parity, 8 data bits, 1 stop bit, CR/LF
termination.
</para>
<para>
The SS 4.1 should be configured to use unit ID '0', with DIP switches
SW6-1, SW6-2 and SW6-3 all set to 'off'.
</para>
<para>
Operation in 'multidrop' mode is not supported. If you wish to use
GPI (referred to as 'PIP', for 'Parallel Input Port' in the Broadcast
Tools documentation), then you will also need to be sure that DIP
switch SW6-7 is ON.
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.gpio_switcher_devices.btss42">
<title>BroadcastTools SS4.2</title>
<variablelist>
<varlistentry>
<term>Driver Name:</term>
<listitem>
<para>
BroadcastTools SS4.2
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Supported RML Commands:</term>
<listitem>
<para>
<simplelist>
<member>GPI Enable ['<command>GE</command>']</member>
<member>GPI Set ['<command>GI</command>']</member>
<member>GPO Set ['<command>GO</command>']</member>
<member>Switch Add ['<command>SA</command>']</member>
<member>Switch Remove ['<command>SR</command>']</member>
<member>Switch Take ['<command>ST</command>']</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<sect2>
<title>General Notes</title>
<para>
Control is done by means of an RS-232C connection to a four pin RJ11
modular jack on the back of the unit (an adapter to a standard DB9
connector is supplied by Broadcast Tools with the unit). Serial port
speed on the SS 4.2 should be set to 9600 (DIP switches SW13-3 and
SW13-4 set to 'off'). Serial port parameters in RDAdmin should be set
to 9600 baud rate, no parity, 8 data bits, 1 stop bit, CR/LF
termination.
</para>
<para>
The SS 4.2 should be configured to use 'Mix' mode --i.e. DIP switches
SW13-5 and SW13-6 should both be 'on', and the unit ID should be set to
'0', with DIP switches SW13-1 and SW13-2 both 'off'.
</para>
<para>
Operation in 'multidrop' mode is not supported. If you wish to use
GPI (referred to as 'PIP', for 'Parallel Input Port' in the Broadcast
Tools documentation), then you will also need to be sure that DIP
switch SW13-7 is ON.
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.gpio_switcher_devices.btss44">
<title>BroadcastTools SS4.4</title>
<variablelist>
<varlistentry>
<term>Driver Name:</term>
<listitem>
<para>
BroadcastTools SS4.4
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Supported RML Commands:</term>
<listitem>
<para>
<simplelist>
<member>GPI Enable ['<command>GE</command>']</member>
<member>GPI Set ['<command>GI</command>']</member>
<member>GPO Set ['<command>GO</command>']</member>
<member>Switch Add ['<command>SA</command>']</member>
<member>Switch Remove ['<command>SR</command>']</member>
<member>Switch Take ['<command>ST</command>']</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<sect2>
<title>General Notes</title>
<para>
Control is done by means of an RS-232C connection to a four pin RJ11
modular jack on the back of the unit (an adapter to a standard DB9
connector is supplied by Broadcast Tools with the unit). Serial port
speed on the SS 4.4 should be set to 9600 (DIP switch SW3 set to 'off').
Serial port parameters in RDAdmin should be set to 9600 baud rate,
no parity, 8 data bits, 1 stop bit, CR/LF termination.
</para>
<para>
The SS 4.4 should be configured to use 'Mix' mode --i.e. DIP switches
SW4 and SW5 should both be 'on', and the unit ID should be set to
'0', with DIP switches SW1 and SW2 both 'off'.
</para>
<para>
Operation in 'multidrop' mode is not supported. If you wish to use
GPI (referred to as 'PIP', for 'Parallel Input Port' in the Broadcast
Tools documentation), then you will also need to be sure that DIP
switch SW8 is 'on'. If you wish to use the open collector and relay
outputs as GPO, then you will also need to be sure that DIP switch
SW6 is 'off'.
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.gpio_switcher_devices.btss82">
<title>BroadcastTools SS8.2</title>
<variablelist>
<varlistentry>
<term>Driver Name:</term>
<listitem>
<para>
BroadcastTools SS8.2
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Supported RML Commands:</term>
<listitem>
<para>
<simplelist>
<member>GPI Enable ['<command>GE</command>']</member>
<member>GPI Set ['<command>GI</command>']</member>
<member>GPO Set ['<command>GO</command>']</member>
<member>Switch Add ['<command>SA</command>']</member>
<member>Switch Remove ['<command>SR</command>']</member>
<member>Switch Take ['<command>ST</command>']</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<sect2>
<title>General Notes</title>
<para>
Control is done by means of an RS-232C connection to a four pin RJ11
modular jack on the back of the unit (an adapter to a standard DB9
connector is supplied by Broadcast Tools with the unit). Serial port
speed on the SS 8.2 should be set to 19200 (some have found 9600 to work
instead). Do *not* use 38400, as there are known bugs within the SS 8.2
when used with this speed! Serial port parameters should be set to
19200 baud rate (or 9600 if that worked instead), No parity, 8 data
bits, 1 stop bit, CR/LF termination (or potentially no termination).
</para>
<para>
The SS 8.2 should be configured to use 'Mix' mode --i.e. DIP switches
SW-14-4 and SW-14-5 should both be 'on', and the unit ID should be
'0', with DIP switches SW-14-1, SW-14-2 and SW-14-3 all 'off'.
</para>
<para>
Operation in 'multidrop' mode is not supported. If you wish to use
GPI (referred to as 'PIP', for 'Parallel Input Port' in the Broadcast
Tools documentation), then you will also need to be sure that DIP
switch SW-14-10 is ON.
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.gpio_switcher_devices.btu41mlrweb">
<title>BroadcastTools Universal 4.1MLR>>Web</title>
<variablelist>
<varlistentry>
<term>Driver Name:</term>
<listitem>
<para>
BroadcastTools 4.1 MLR>>Web
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Supported RML Commands:</term>
<listitem>
<para>
<simplelist>
<member>GPI Enable ['<command>GE</command>']</member>
<member>GPI Set ['<command>GI</command>']</member>
<member>Switch Take ['<command>ST</command>']</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<sect2>
<title>General Notes</title>
<para>
Control is by means of a TCP/IP connection to port 5002.
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.gpio_switcher_devices.harlond">
<title>Harlond Virtual Mixer</title>
<variablelist>
<varlistentry>
<term>Driver Name:</term>
<listitem>
<para>
Harlond Virtual Mixer
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Supported RML Commands:</term>
<listitem>
<para>
<simplelist>
<member>Fire Salvo ['<command>FS</command>']</member>
<member>GPI Enable ['<command>GE</command>']</member>
<member>GPI Set ['<command>GI</command>']</member>
<member>GPO Set ['<command>GO</command>']</member>
<member>Switch Add ['<command>SA</command>']</member>
<member>Switch Level ['<command>SL</command>']</member>
<member>Switch Remove ['<command>SR</command>']</member>
<member>Switch Take ['<command>ST</command>']</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<sect2>
<title>General Notes</title>
<para>
Control is by means of a TCP/IP connection to port 5002. Output
busses are mapped as follows:
</para>
<table frame="all">
<title>Harlond Output Buss Mappings</title>
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colname="Output" />
<colspec colname="Buss" />
<thead>
<row><entry>Output</entry><entry>Buss</entry></row>
</thead>
<tbody>
<row><entry>1</entry><entry>PGM</entry></row>
<row><entry>2</entry><entry>AUD</entry></row>
<row><entry>3</entry><entry>UTL</entry></row>
<row><entry>4</entry><entry>CUE</entry></row>
</tbody>
</tgroup>
</table>
<para>
Input channel ON/OFF is sensed/controlled by means of the
respective GPIO number using GE/GI/GO RMLs.
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.gpio_switcher_devices.kernelgpio">
<title>Kernel GPIO</title>
<variablelist>
<varlistentry>
<term>Driver Name:</term>
<listitem>
<para>
Kernel GPIO
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Supported RML Commands:</term>
<listitem>
<para>
<simplelist>
<member>GPI Enable ['<command>GE</command>']</member>
<member>GPI Set ['<command>GI</command>']</member>
<member>GPO Set ['<command>GO</command>']</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<sect2>
<title>General Notes</title>
<para>
This driver can be used to control kernel-based GPIO interfaces,
such as the GPIO pins on a Raspberry Pi. Pins are allocated such that
inputs come first, followed by outputs.
</para>
<para>
Further information on kernel GPIO devices can be found at
https://www.kernel.org/doc/Documentation/gpio/sysfs.txt
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.gpio_switcher_devices.livewire_lwrpaudio">
<title>Livewire LWRP Audio</title>
<variablelist>
<varlistentry>
<term>Driver Name:</term>
<listitem>
<para>
Livewire LWRP Audio
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Supported RML Commands:</term>
<listitem>
<para>
<simplelist>
<member>Switch Take ['<command>ST</command>']</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<sect2>
<title>General Notes</title>
<para>
Livewire is a distributed audio router and control system, with the
components (called 'nodes') configured and controled via TCP/IP. More
information can be found at http://www.axiaaudio.com/.
</para>
<para>
This driver can be used to create and remove connections between audio
sources and destinations via Livewire Routing Protocol (LWRP).
</para>
<para>
Configuration is a matter of entering the IP address, password and base
output number for each node in
<code>RDAdmin->ManageHosts->Switcher/GPIO->LivewireNodes</code>.
The driver
will autodetect all other parameters from the nodes themselves. The
resulting constellation of nodes can be controled with the
'Switch Take' ['<command>ST</command>'] RML by specifying the
Livewire source stream number as the <replaceable>input</replaceable>
parameter and the the base output number+the slot number-1 for the
<replaceable>output</replaceable> parameter.
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.gpio_switcher_devices.livewire_lwrpgpio">
<title>Livewire LWRP GPIO</title>
<variablelist>
<varlistentry>
<term>Driver Name:</term>
<listitem>
<para>
Livewire LWRP GPIO
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Supported RML Commands:</term>
<listitem>
<para>
<simplelist>
<member>GPI Enable ['<command>GE</command>']</member>
<member>GPI Set ['<command>GI</command>']</member>
<member>GPO Set ['<command>GO</command>']</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<sect2>
<title>General Notes</title>
<para>
Livewire is a distributed audio router and control system, with the
components (called 'nodes') configured and controled via TCP/IP. More
information can be found at http://www.axiaaudio.com/.
</para>
<para>
This driver can be used to control Livewire's GPIO subsystem by means of
the Livewire Routing Protocol (LWRP) with both physical as well as
'virtual' GPIO devices.
</para>
<para>
Only two items need to be specified in the configuration: the
<computeroutput>IP address</computeroutput>
of the device to control and the
<computeroutput>'Layer</computeroutput>, with
<userinput>V</userinput> specifying a virtual
GPIO device and <userinput>D</userinput> specifying an actual
physical one. The driver
will autodetect all other parameters (e.g. the number of input and
output lines) from the device itself.
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.gpio_switcher_devices.livewire_mcastgpio">
<title>Livewire Multicast GPIO</title>
<variablelist>
<varlistentry>
<term>Driver Name:</term>
<listitem>
<para>
Livewire Multicast GPIO
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Supported RML Commands:</term>
<listitem>
<para>
<simplelist>
<member>GPI Enable ['<command>GE</command>']</member>
<member>GPI Set ['<command>GI</command>']</member>
<member>GPO Set ['<command>GO</command>']</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<sect2>
<title>General Notes</title>
<para>
Livewire is a distributed audio router and control system, with the
components (called 'nodes') configured and controled via TCP/IP. More
information can be found at http://www.axiaaudio.com/.
</para>
<para>
This driver provides the ability to access GPIO functions from Livewire-
enabled control surfaces for setups that lack a virtual GPIO device
--e.g. when interfacing audio directly to a Livewire node without
using a native Livewire software audio driver or audio adapter.
</para>
<para>
When configuring it, the <computeroutput>IP Address</computeroutput>
field should contain the address
of the local interface to which the Livewire network is attached, while
the <computeroutput>Livewire GPIOs</computeroutput> list should be
populated with the stream
number - GPIO line associations to be used.
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.gpio_switcher_devices.local_audio">
<title>Local Audio Adapter</title>
<variablelist>
<varlistentry>
<term>Driver Name:</term>
<listitem>
<para>
Local Audio Adapter
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Supported RML Commands:</term>
<listitem>
<para>
<simplelist>
<member>Switch Add ['<command>SA</command>']</member>
<member>Switch Add With Gain ['<command>SX</command>']</member>
<member>Switch Remove ['<command>SR</command>']</member>
<member>Switch Take ['<command>ST</command>']</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<sect2>
<title>General Notes</title>
<para>
It's possible to use one or more of the actual audio adapters as a
switcher device using this driver. Doing so makes it possible to
route audio directly from the adapter inputs to outputs, while at the
same time using it for audio capture/playout in the usual manner.
</para>
<para>
To configure it, set <computeroutput>Card:</computeroutput> to the
number of the audio adapter to use and the
<computeroutput>Inputs:</computeroutput> and
<computeroutput>Outputs:</computeroutput> fields to the
number of inputs and outputs on the card (as found in
<code>RDADmin->ManageHosts->AudioResources</code>.
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.gpio_switcher_devices.local_gpio">
<title>Local GPIO</title>
<variablelist>
<varlistentry>
<term>Driver Name:</term>
<listitem>
<para>
Local GPIO
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Supported RML Commands:</term>
<listitem>
<para>
<simplelist>
<member>GPI Enable ['<command>GE</command>']</member>
<member>GPI Set ['<command>GI</command>']</member>
<member>GPO Set ['<command>GO</command>']</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<sect2>
<title>General Notes</title>
<para>
This driver supports a variety of GPIO devices, including:
<simplelist>
<member>15 Pin Joystick Port</member>
<member>USB HID Devices</member>
<member>MeasurementComputing GPIO Cards</member>
</simplelist>
</para>
<sect3 xml:id="sect.gpio_switcher_devices.joysticks">
<title>15 Pin Joystick Port</title>
<para>
Joystick support utilizes the Linux Input Device subsystem. Inputs
are active-low, and should be wired as follows:
</para>
<table frame="none">
<title>15 Pin Joystick Port Wiring</title>
<tgroup cols="2" align="left" colsep="0" rowsep="0">
<colspec colname="Pin" colwidth="1.0*"/>
<colspec colname="Signal" colwidth="20.0*"/>
<thead>
<row><entry>Pin</entry><entry>Signal</entry></row>
</thead>
<tbody>
<row><entry>2</entry><entry>Input 1</entry></row>
<row><entry>4</entry><entry>Ground</entry></row>
<row><entry></entry><entry></entry></row>
<row><entry>7</entry><entry>Input 2</entry></row>
<row><entry>5</entry><entry>Ground</entry></row>
<row><entry></entry><entry></entry></row>
<row><entry>10</entry><entry>Input 3</entry></row>
<row><entry>12</entry><entry>Ground</entry></row>
<row><entry></entry><entry></entry></row>
<row><entry>14</entry><entry>Input 4</entry></row>
<row><entry>12</entry><entry>Ground</entry></row>
</tbody>
</tgroup>
</table>
<para>
In addition, you will need to connect 47 kohm resistors between the
following pins: 1-3, 6-8, 9-11 and 13-15. While not strictly needed
for the GPI portion of the interface to work, the kernel's analog
joystick driver will refuse to initialize the port if these resistors
(or a real joystick) are not present.
</para>
<para>
The device name of the joystick will be one of the
<userinput>/dev/input/event<replaceable>n</replaceable></userinput>
devices.
</para>
<para>
NOTE: There have been reports that some port models do not internally
connect pin 12 to ground. The symptom of this situation will be that
Inputs 1 and 2 work, but not Inputs 3 and 4. If this is the case,
connecting the ground for Inputs 3 and 4 to pins 04 or 05 should remedy
the problem.
</para>
</sect3>
<sect3 xml:id="sect.gpio_switcher_devices.measurementcomputing">
<title>MeasurementComputing GPIO Cards</title>
<para>
The following MeasurementComputing cards are supported:
</para>
<simplelist>
<member><link endlink="sect.gpio_switcher_devices.measurementcomputing.pci_pdis08_and_pci_pdis16">PCI-PDIS08</link></member>
<member><link endlink="sect.gpio_switcher_devices.measurementcomputing.pci_pdis08_and_pci_pdis16">PCI-PDIS16</link></member>
<member><link endlink="sect.gpio_switcher_devices.measurementcomputing.pci_dio24">PCI-DIO24</link></member>
</simplelist>
<para>
The device name for the card should be
<userinput>/dev/gpio<replaceable>n</replaceable></userinput>.
</para>
<sect4 xml:id="sect.gpio_switcher_devices.measurementcomputing.pci_pdis08_and_pci_pdis16">
<title>PCI-PDIS08 and PCI-PDIS16</title>
<para>
The Measurement Computing PCI-PDIS08 and PCI-PDIS16 boards
feature floating, opto-isolated inputs. The inputs are
not polarity sensitive and may be driven by either AC or
DC. The outputs are electro-mechanical relays with dry
contacts.
</para>
<table frame="none">
<title>PCI-PDIS08 and PCI-PDIS16 Connector Pinout (DB37F)</title>
<tgroup cols="2" align="left" colsep="0" rowsep="0">
<colspec colname="Pin" colwidth="1.0*"/>
<colspec colname="Signal" colwidth="20.0*"/>
<thead>
<row><entry>Pin</entry><entry>Signal</entry></row>
</thead>
<tbody>
<row><entry>1</entry><entry>Input 8/16</entry></row>
<row><entry>20</entry><entry>Input 8/16</entry></row>
<row><entry></entry><entry></entry></row>
<row><entry>2</entry><entry>Input 7/15</entry></row>
<row><entry>21</entry><entry>Input 7/15</entry></row>
<row><entry></entry><entry></entry></row>
<row><entry>3</entry><entry>Input 6/14</entry></row>
<row><entry>22</entry><entry>Input 6/14</entry></row>
<row><entry></entry><entry></entry></row>
<row><entry>4</entry><entry>Input 5/13</entry></row>
<row><entry>23</entry><entry>Input 5/13</entry></row>
<row><entry></entry><entry></entry></row>
<row><entry>5</entry><entry>Input 4/12</entry></row>
<row><entry>24</entry><entry>Input 4/12</entry></row>
<row><entry></entry><entry></entry></row>
<row><entry>6</entry><entry>Input 3/11</entry></row>
<row><entry>25</entry><entry>Input 3/11</entry></row>
<row><entry></entry><entry></entry></row>
<row><entry>7</entry><entry>Input 2/10</entry></row>
<row><entry>26</entry><entry>Input 2/10</entry></row>
<row><entry></entry><entry></entry></row>
<row><entry>8</entry><entry>Input 1/9</entry></row>
<row><entry>27</entry><entry>Input 1/9</entry></row>
<row><entry></entry><entry></entry></row>
<row><entry>9</entry><entry>Output 8/16 C</entry></row>
<row><entry>28</entry><entry>Output 8/16 N/O</entry></row>
<row><entry></entry><entry></entry></row>
<row><entry>10</entry><entry>Output 7/15 C</entry></row>
<row><entry>29</entry><entry>Output 7/15 N/O</entry></row>
<row><entry></entry><entry></entry></row>
<row><entry>11</entry><entry>Output 6/14 C</entry></row>
<row><entry>30</entry><entry>Output 6/14 N/O</entry></row>
<row><entry></entry><entry></entry></row>
<row><entry>12</entry><entry>Output 5/13 N/C</entry></row>
<row><entry>13</entry><entry>Output 5/13 N/O</entry></row>
<row><entry>31</entry><entry>Output 5/13 C</entry></row>
<row><entry></entry><entry></entry></row>
<row><entry>14</entry><entry>Output 4/12 N/C</entry></row>
<row><entry>32</entry><entry>Output 4/12 N/O</entry></row>
<row><entry>33</entry><entry>Output 4/12 C</entry></row>
<row><entry></entry><entry></entry></row>
<row><entry>15</entry><entry>Output 3/11 N/C</entry></row>
<row><entry>16</entry><entry>Output 3/11 N/O</entry></row>
<row><entry>34</entry><entry>Output 3/11 C</entry></row>
<row><entry></entry><entry></entry></row>
<row><entry>17</entry><entry>Output 2/10 N/C</entry></row>
<row><entry>35</entry><entry>Output 2/10 N/O</entry></row>
<row><entry>36</entry><entry>Output 2/10 C</entry></row>
<row><entry></entry><entry></entry></row>
<row><entry>18</entry><entry>Output 1/9 N/C</entry></row>
<row><entry>19</entry><entry>Output 1/9 N/O</entry></row>
<row><entry>37</entry><entry>Output 1/9 C</entry></row>
</tbody>
</tgroup>
</table>
</sect4>
<sect4 xml:id="sect.gpio_switcher_devices.measurementcomputing.pci_dio24">
<title>PCI-DIO24</title>
<para>
The Measurement Computing PCI-DIO24 board features 24
bi-directional, TTL level signal lines, referenced to a
common ground. The driver can be
configured to use all of the lines as inputs or outputs
(mixing inputs and outputs on the same board is not supported).
When used as inputs, termination resistor packs should be
installed.
</para>
<table frame="none">
<title>PCI-DIO24 Connector Pinout (DB37F)</title>
<tgroup cols="2" align="left" colsep="0" rowsep="0">
<colspec colname="Pin" colwidth="1.0*"/>
<colspec colname="Signal" colwidth="20.0*"/>
<thead>
<row><entry>Pin</entry><entry>Signal</entry></row>
</thead>
<tbody>
<row><entry>37</entry><entry>Input 1</entry></row>
<row><entry>36</entry><entry>Input 2</entry></row>
<row><entry>35</entry><entry>Input 3</entry></row>
<row><entry>34</entry><entry>Input 4</entry></row>
<row><entry>33</entry><entry>Input 5</entry></row>
<row><entry>32</entry><entry>Input 6</entry></row>
<row><entry>31</entry><entry>Input 7</entry></row>
<row><entry>30</entry><entry>Input 8</entry></row>
<row><entry>10</entry><entry>Input 9</entry></row>
<row><entry>9</entry><entry>Input 10</entry></row>
<row><entry>8</entry><entry>Input 11</entry></row>
<row><entry>7</entry><entry>Input 12</entry></row>
<row><entry>6</entry><entry>Input 13</entry></row>
<row><entry>5</entry><entry>Input 14</entry></row>
<row><entry>4</entry><entry>Input 15</entry></row>
<row><entry>3</entry><entry>Input 16</entry></row>
<row><entry>29</entry><entry>Input 17</entry></row>
<row><entry>28</entry><entry>Input 18</entry></row>
<row><entry>27</entry><entry>Input 19</entry></row>
<row><entry>26</entry><entry>Input 20</entry></row>
<row><entry>25</entry><entry>Input 21</entry></row>
<row><entry>24</entry><entry>Input 22</entry></row>
<row><entry>23</entry><entry>Input 23</entry></row>
<row><entry>22</entry><entry>Input 24</entry></row>
<row><entry>11</entry><entry>Ground</entry></row>
<row><entry>13</entry><entry>Ground</entry></row>
<row><entry>15</entry><entry>Ground</entry></row>
<row><entry>17</entry><entry>Ground</entry></row>
<row><entry>19</entry><entry>Ground</entry></row>
<row><entry>21</entry><entry>Ground</entry></row>
<row><entry>18</entry><entry>+5 vdc</entry></row>
<row><entry>20</entry><entry>+5 vdc</entry></row>
<row><entry>16</entry><entry>+12 vdc</entry></row>
<row><entry>14</entry><entry>+-12 vdc</entry></row>
</tbody>
</tgroup>
</table>
</sect4>
</sect3>
</sect2>
</sect1>
<sect1 xml:id="sect.gpio_switcher_devices.vguest">
<title>Logitek vGuest</title>
<variablelist>
<varlistentry>
<term>Driver Name:</term>
<listitem>
<para>
Logitek vGuest
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Supported RML Commands:</term>
<listitem>
<para>
<simplelist>
<member>GPI Enable ['<command>GE</command>']</member>
<member>GPI Set ['<command>GI</command>']</member>
<member>GPO Set ['<command>GO</command>']</member>
<member>Set Display ['<command>SD</command>']</member>
<member>Switch Take ['<command>ST</command>']</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<sect2>
<title>General Notes</title>
<para>
Before using the driver, the resources within the Logitek Audio Engine
system that you wish to control must be made available in a 'vGuest'
account within the Logitek 'Supervisor' system. Then, those same
resources must be mapped within the Rivendell driver. For the
'<command>ST</command>'
RML, the Logitek Engine Numbers and Device Numbers are mapped to
logical Rivendell <computeroutput>Inputs</computeroutput> and
<computeroutput>Outputs</computeroutput> within the
<computeroutput>Configure Inputs</computeroutput>
and <computeroutput>Configure Outputs</computeroutput> dialogs.
For the GPO RMLs, various Logitek
'switches' (by which we mean anything that can be turned on and off,
such as faders feeds, not just GPIO) are mapped to logical Rivendell
GPIO lines by means of their Logitek Engine, Device and Buss numbers.
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.gpio_switcher_devices.modbus">
<title>Modbus TCP</title>
<variablelist>
<varlistentry>
<term>Driver Name:</term>
<listitem>
<para>
Modbus TCP
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Supported RML Commands:</term>
<listitem>
<para>
<simplelist>
<member>GPI Enable ['<command>GE</command>']</member>
<member>GPI Set ['<command>GI</command>']</member>
<member>GPO Set ['<command>GO</command>']</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<sect2>
<title>General Notes</title>
<para>
This driver supports GPI devices that use the industry-standard
Modbus TCP protocol at TCP port 502. The device to be controlled
should be configured to use Modbus ID #1. For more information on
Modbus, see http://www.modbus.org/.
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.gpio_switcher_devices.quartz1">
<title>Quartz Electronics Type 1 Routing Protocol</title>
<variablelist>
<varlistentry>
<term>Driver Name:</term>
<listitem>
<para>
Quartz Type 1
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Supported RML Commands:</term>
<listitem>
<para>
<simplelist>
<member>Fire Salvo ['<command>FS</command>']</member>
<member>Switch Take ['<command>ST</command>']</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<sect2>
<title>General Notes</title>
<para>
Control can done either by means of an RS-232C connection or by means of
TCP/IP to TCP port 23.
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.gpio_switcher_devices.rossnkscp">
<title>Ross NK Video Switchers (via SCP/A Serial Interface)</title>
<variablelist>
<varlistentry>
<term>Driver Name:</term>
<listitem>
<para>
Ross NK-SCP/A Interface
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Supported RML Commands:</term>
<listitem>
<para>
<simplelist>
<member>Switch Take ['<command>ST</command>']</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<sect2>
<title>General Notes</title>
<para>
Control is done by means of an RS-232C connection to a NK-SCP/A serial
interface. Serial port parameters should be set to 9600 baud rate,
no parity, 8 data bits, 1 stop bit, CR termination. The Breakaway
to use is defined by setting the 'Card' parameter in the driver
configuration, with Card 0 = Breakaway 1, Card 1 = Breakaway 2, etc.
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.gpio_switcher_devices.modemlines">
<title>Serial Port Modem Control Lines</title>
<variablelist>
<varlistentry>
<term>Driver Name:</term>
<listitem>
<para>
Serial Port Modem Control Lines
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Supported RML Commands:</term>
<listitem>
<para>
<simplelist>
<member>GPI Enable ['<command>GE</command>']</member>
<member>GPI Set ['<command>GI</command>']</member>
<member>GPO Set ['<command>GO</command>']</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<sect2>
<title>General Notes</title>
<para>
This driver enables GPIO via the modem control lines on an RS-232C
serial device. The lines map as follows:
</para>
<table frame="all">
<title>Modem Serial Lines GPI Signal Mapping</title>
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colname="GPI" />
<colspec colname="Signal" />
<thead>
<row><entry>Output</entry><entry>Buss</entry></row>
</thead>
<tbody>
<row><entry>1</entry><entry>Data Set Ready (DSR)</entry></row>
<row><entry>2</entry><entry>Clear To Send (CTS)</entry></row>
<row><entry>3</entry><entry>Carrier Detect (CI)</entry></row>
<row><entry>4</entry><entry>Ring Indicator (RI)</entry></row>
</tbody>
</tgroup>
</table>
<table frame="all">
<title>Modem Serial Lines GPO Signal Mapping</title>
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colname="GPI" />
<colspec colname="Signal" />
<thead>
<row><entry>Output</entry><entry>Buss</entry></row>
</thead>
<tbody>
<row><entry>1</entry><entry>Data Terminal Ready (DTR)</entry></row>
<row><entry>2</entry><entry>Ready To Send (RTS)</entry></row>
</tbody>
</tgroup>
</table>
</sect2>
</sect1>
<sect1 xml:id="sect.gpio_switcher_devices.sas16000">
<title>Sierra Automated Systems 16000(D) Audio Router</title>
<variablelist>
<varlistentry>
<term>Driver Name:</term>
<listitem>
<para>
SAS 16000(D)
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Supported RML Commands:</term>
<listitem>
<para>
<simplelist>
<member>Switch Take ['<command>ST</command>']</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<sect2>
<title>General Notes</title>
<para>
Both analog and AES3 digital (D) variants are supported. Control
can done by means of an RS-232C connection to the 'User Serial
Interface' port on the unit. Serial port parameters should be:
9600,N,8,1.
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.gpio_switcher_devices.sas32000">
<title>Sierra Automated Systems 32000 Audio Router</title>
<variablelist>
<varlistentry>
<term>Driver Name:</term>
<listitem>
<para>
SAS 32000
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Supported RML Commands:</term>
<listitem>
<para>
<simplelist>
<member>Switch Add ['<command>SA</command>']</member>
<member>Switch Level ['<command>SL</command>'] (requires appropriate SAS hardware support)</member>
<member>Switch Remove ['<command>SR</command>']</member>
<member>Switch Take ['<command>ST</command>']</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<sect2>
<title>General Notes</title>
<para>
Control is done by means of an RS-232C connection to the 'Computer
RS-232' port on the AXC-8 System Controller. Serial port parameters
should be set to 9600 baud rate, no parity, 8 data bits, 1 stop bit
and no terminator. The AXC-8 must be equipped with firmware built to
use the 'conventional' command protocol -- the 'enhanced' version will
not work!
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.gpio_switcher_devices.sas64000">
<title>Sierra Automated Systems 64000 Audio Router</title>
<variablelist>
<varlistentry>
<term>Driver Name:</term>
<listitem>
<para>
SAS 64000
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Supported RML Commands:</term>
<listitem>
<para>
<simplelist>
<member>Switch Take ['<command>ST</command>']</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<sect2>
<title>General Notes</title>
<para>
Control is done by means of an RS-232C connection to the 'Computer
RS-232' port on the AXC-8 System Controller. Serial port parameters
should be set to 9600 baud rate, no parity, 8 data bits, 1 stop bit
and no terminator. The AXC-8 must be equipped with firmware built to
use the 'conventional' command protocol -- the 'enhanced' version will
not work!
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.gpio_switcher_devices.sas64000gpi">
<title>Sierra Automated Systems 64000 Audio Router</title>
<variablelist>
<varlistentry>
<term>Driver Name:</term>
<listitem>
<para>
SAS 64000-GPI
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Supported RML Commands:</term>
<listitem>
<para>
<simplelist>
<member>GPO Set ['<command>GO</command>']</member>
<member>Switch Take ['<command>ST</command>']</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<sect2>
<title>General Notes</title>
<para>
Control is done by means of an RS-232C connection to the 'Computer
RS-232' port on a GPI-1600 GPIO interface. Serial port parameters
should be set to 19200 baud rate, no parity, 8 data bits, 1 stop bit
and no terminator. This driver allows control of the system's GPO
outputs as well as audio crosspoints.
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.gpio_switcher_devices.sasusi">
<title>Sierra Automated Systems User Serial Interface (USI)</title>
<variablelist>
<varlistentry>
<term>Driver Name:</term>
<listitem>
<para>
SAS USI
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Supported RML Commands:</term>
<listitem>
<para>
<simplelist>
<member>Console Label ['<command>CL</command>']</member>
<member>Fire Salvo ['<command>FS</command>']</member>
<member>GPO Set ['<command>GO</command>']</member>
<member>Switch Add ['<command>SA</command>']</member>
<member>Switch Crosspoint Gain ['<command>SX</command>']</member>
<member>Switch Level ['<command>SL</command>']</member>
<member>Switch Remove ['<command>SR</command>']</member>
<member>Switch Take ['<command>ST</command>']</member>
<member>Switch Take With Gain ['<command>SG</command>']</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<sect2>
<title>General Notes</title>
<para>
Control can done either by means of an RS-232C connection to one of
the serial ports on a DRC-16E card or by means of TCP/IP to a PC
running SAS's Server Module software. TCP connections are normally
made to port 1350 on the Server Module system.
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.gpio_switcher_devices.acu1p">
<title>Sine Systems ACU-1 (Prophet Version)</title>
<variablelist>
<varlistentry>
<term>Driver Name:</term>
<listitem>
<para>
Sine ACU-1 (Prophet)
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Supported RML Commands:</term>
<listitem>
<para>
<simplelist>
<member>Switch Add ['<command>SA</command>']</member>
<member>Switch Remove ['<command>SR</command>']</member>
<member>Switch Take ['<command>ST</command>']</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<sect2>
<title>General Notes</title>
<para>
Control is done by means of an RS-232C connection to the RS-232
port on the unit. Serial port parameters in RDAdmin should be set
to 57600 baud rate, even parity, 8 data bits, 1 stop bit and no
terminator.
</para>
<para>
The ACU-1 should be set to use factory default settings. This can
be done by simultaneously pressing buttons 1 and 8 on the front
panel of the unit for at least one second.
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.gpio_switcher_devices.swauthority">
<title>Software Authority Protocol</title>
<variablelist>
<varlistentry>
<term>Driver Name:</term>
<listitem>
<para>
Software Authority Protocol
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Supported RML Commands:</term>
<listitem>
<para>
<simplelist>
<member>GPI Enable ['<command>GE</command>']</member>
<member>GPI Set ['<command>GI</command>']</member>
<member>GPO Set ['<command>GO</command>']</member>
<member>Switch Take ['<command>ST</command>']</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<sect2>
<title>General Notes</title>
<para>
Used to control devices (such as the Axia 'PathFinder' system)
by means of the 'Software Authority' protocol. Control is by
means of a TCP/IP connection (typically to port 9500) on the
controled system. The <computeroutput>Card</computeroutput>
parameter should be set to the 'Router Number' of the router
to be controlled.
</para>
<para>
Most parameters, including the number of inputs and outputs as
well as the endpoint names, are autodetected by the driver.
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.gpio_switcher_devices.starguide3">
<title>Starguide III Satellite Receiver</title>
<variablelist>
<varlistentry>
<term>Driver Name:</term>
<listitem>
<para>
StarGuide III
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Supported RML Commands:</term>
<listitem>
<para>
<simplelist>
<member>Switch Take ['<command>ST</command>']</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<sect2>
<title>General Notes</title>
<para>
Control is done by means of an RS-232C connection to the
RS-232 port on the unit. The port should be configured on the
receiver to use a speed of 9600. Serial port parameters in RDAdmin
should be set to 9600 baud rate, no parity, 8 data bits, 1 stop bit
and no terminator. Once configured, use RDAdmin to create inputs that
correspond to the StarGuide Provider and Source IDs available on the
selected DVB carrier. Provider and Source ID data is available from
the provider network.
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.gpio_switcher_devices.unity4000">
<title>Wegener Unity4000 DVB Satellite Receiver</title>
<variablelist>
<varlistentry>
<term>Driver Name:</term>
<listitem>
<para>
Wegener Unity 4000
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Supported RML Commands:</term>
<listitem>
<para>
<simplelist>
<member>Switch Take ['<command>ST</command>']</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<sect2>
<title>General Notes</title>
<para>
Control is done by means of an RS-232C connection to one of the two
RS-232 ports on the unit. If possible, use serial port number one,
as the reciever uses a larger data buffer with that port. The
selected port should be configured in the reciever to be of type
"Terminal" with a speed of 19200. Serial port parameters should be
set to 19200 baud rate, no parity, 8 data bits, 1 stop bit
and no terminator. Once configured, use RDAdmin to create inputs that
correspond to the DVB stream names available on the selected DVB
carrier.
</para>
<para>
Caution is needed when scheduling record events from the Unity4000, as
the unit is capable of outputting a given DVB stream to only a single
output at a time. Commanding a stream to an output will cause that
stream to be silently deselected from a previously selected output.
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.gpio_switcher_devices.wheatnet_lio">
<title>Wheatnet Blade LIO</title>
<variablelist>
<varlistentry>
<term>Driver Name:</term>
<listitem>
<para>
WheatNet LIO
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Supported RML Commands:</term>
<listitem>
<para>
<simplelist>
<member>GPI Enable ['<command>GE</command>']</member>
<member>GPI Set ['<command>GI</command>']</member>
<member>GPO Set ['<command>GO</command>']</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<sect2>
<title>General Notes</title>
<para>
Control is done by means of a TCP/IP connection to port 55776 on a
blade. The only required configuration parameters are
<computeroutput>IP Address</computeroutput> and
<computeroutput>IP Port</computeroutput>. The number of pins is
auto-detected at driver startup.
</para>
</sect2>
</sect1>
<sect1 xml:id="sect.gpio_switcher_devices.wheatnet_slio">
<title>Wheatnet Blade SLIO</title>
<variablelist>
<varlistentry>
<term>Driver Name:</term>
<listitem>
<para>
WheatNet SLIO
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Supported RML Commands:</term>
<listitem>
<para>
<simplelist>
<member>GPI Enable ['<command>GE</command>']</member>
<member>GPI Set ['<command>GI</command>']</member>
<member>GPO Set ['<command>GO</command>']</member>
</simplelist>
</para>
</listitem>
</varlistentry>
</variablelist>
<sect2>
<title>General Notes</title>
<para>
Control is done by means of a TCP/IP connection to port 55776 on a
blade. The only required configuration parameters are
<computeroutput>IP Address</computeroutput> and
<computeroutput>IP Port</computeroutput>. The number of pins is
auto-detected at driver startup.
</para>
</sect2>
</sect1>
</appendix>
<appendix xml:id="appendix.filepath_wildcards">
<title>Filepath Wildcards</title>
<para>
Filepath wildcards can be used in most places in RDAdmin where a filename
is required.
</para>
<sect1 xml:id="sect.filepath_wildcards.definition">
<title>Definition</title>
<para>
A date/time wildcard in Rivendell has the following form:
</para>
<para>
<userinput>%<replaceable>&lt;meta-char&gt;</replaceable><replaceable>&lt;fmt-char&gt;</replaceable></userinput>
</para>
<para>
where:
</para>
<variablelist>
<varlistentry>
<term><userinput>%</userinput></term>
<listitem>
<para>
A literal percent.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput><replaceable>&lt;meta-char&gt;</replaceable></userinput></term>
<listitem>
<para>
Optional. One of the following meta-characters:
</para>
<variablelist>
<varlistentry>
<term><userinput>^</userinput></term>
<listitem>
<para>
Convert value indicated by <userinput><replaceable>&lt;fmt-char&gt;</replaceable></userinput>
to all uppercase.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>$</userinput></term>
<listitem>
<para>
Convert the initial character of the value indicated by
<userinput><replaceable>&lt;fmt-char&gt;</replaceable></userinput> to uppercase.
</para>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput><replaceable>&lt;fmt-char&gt;</replaceable></userinput></term>
<listitem>
<para>
One of the following letters:
</para>
<variablelist>
<varlistentry>
<term><userinput>a</userinput></term>
<listitem>
<para>
Abbreviated weekday name --e.g. 'mon', 'tue'
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>A</userinput></term>
<listitem>
<para>
Full weekday name --e.g. 'monday', 'tuesday'
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>b</userinput></term>
<listitem>
<para>
Abbreviated month name --e.g. 'jan', 'feb'
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>B</userinput></term>
<listitem>
<para>
Full month name --e.g. 'january', 'february'
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>c</userinput></term>
<listitem>
<para>
[unassigned]
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>C</userinput></term>
<listitem>
<para>
Century
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>d</userinput></term>
<listitem>
<para>
Day of the month, zero padded (01 - 31)
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>D</userinput></term>
<listitem>
<para>
Date (mm/dd/yy)
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>e</userinput></term>
<listitem>
<para>
Day of the month, space padded ( 1 - 12)
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>E</userinput></term>
<listitem>
<para>
Day of the month, unpadded (1 - 12)
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>f</userinput></term>
<listitem>
<para>
[unassigned]
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>F</userinput></term>
<listitem>
<para>
Date (yyyy-mm-dd)
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>g</userinput></term>
<listitem>
<para>
Two digit year, as per ISO 8601
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>G</userinput></term>
<listitem>
<para>
Four digit year, as per ISO 8601
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>h</userinput></term>
<listitem>
<para>
Abbreviated month name --e.g. 'jan', 'feb'
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>H</userinput></term>
<listitem>
<para>
Hour, 24 hour, zero padded (00 - 23)
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>i</userinput></term>
<listitem>
<para>
Hour, 12 hour, space padded ( 0 - 12)
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>I</userinput></term>
<listitem>
<para>
Hour, 12 hour, zero padded (00 - 12)
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>j</userinput></term>
<listitem>
<para>
Day of year, zero padded (000 - 355)
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>J</userinput></term>
<listitem>
<para>
Hour, 12 hour, unpadded (1 - 12)
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>k</userinput></term>
<listitem>
<para>
Hour, 24 hour, space padded ( 0 - 23)
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>K</userinput></term>
<listitem>
<para>
[unassigned]
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>l</userinput></term>
<listitem>
<para>
[unassigned]
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>L</userinput></term>
<listitem>
<para>
[unassigned]
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>m</userinput></term>
<listitem>
<para>
Month, zero padded (01 - 12)
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>M</userinput></term>
<listitem>
<para>
Minute, zero padded (00 - 59)
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>n</userinput></term>
<listitem>
<para>
[unassigned]
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>N</userinput></term>
<listitem>
<para>
[unassigned]
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>o</userinput></term>
<listitem>
<para>
[unassigned]
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>O</userinput></term>
<listitem>
<para>
[unassigned]
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>p</userinput></term>
<listitem>
<para>
AM/PM string
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>P</userinput></term>
<listitem>
<para>
[unassigned]
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>q</userinput></term>
<listitem>
<para>
[unassigned]
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>Q</userinput></term>
<listitem>
<para>
[unassigned]
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>r</userinput></term>
<listitem>
<para>
Rivendell Host Name [not FQDN]
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>R</userinput></term>
<listitem>
<para>
Rivendell Host Short Name
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>s</userinput></term>
<listitem>
<para>
Service Name
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>S</userinput></term>
<listitem>
<para>
Seconds, zero padded (00 - 60)
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>t</userinput></term>
<listitem>
<para>
[unassigned]
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>T</userinput></term>
<listitem>
<para>
[unassigned]
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>u</userinput></term>
<listitem>
<para>
Day of the week, numeric, 1=Monday, 7=Sunday
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>U</userinput></term>
<listitem>
<para>
[unassigned]
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>v</userinput></term>
<listitem>
<para>
[unassigned]
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>V</userinput></term>
<listitem>
<para>
Week number, as per ISO 8601
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>w</userinput></term>
<listitem>
<para>
Day of the week, numeric, 0=Sunday,6=Saturday
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>W</userinput></term>
<listitem>
<para>
Week number, as per ISO 8601
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>x</userinput></term>
<listitem>
<para>
[unassigned]
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>X</userinput></term>
<listitem>
<para>
[unassigned]
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>y</userinput></term>
<listitem>
<para>
Two digit year
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>Y</userinput></term>
<listitem>
<para>
Four digit year
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>z</userinput></term>
<listitem>
<para>
[unassigned]
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>Z</userinput></term>
<listitem>
<para>
[unassigned]
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>%</userinput></term>
<listitem>
<para>
A literal '%'
</para>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
</variablelist>
</sect1>
<sect1 xml:id="sect.filepath_wildcards.examples">
<title>Examples</title>
<para>
For the date time of February 3rd, 2017 at 2:34:26 PM:
</para>
<variablelist>
<varlistentry>
<term><userinput>%b</userinput></term>
<listitem>
<para>
<code>feb</code>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>%B</userinput></term>
<listitem>
<para>
<code>february</code>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>%^B</userinput></term>
<listitem>
<para>
<code>FEBRUARY</code>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>%$B</userinput></term>
<listitem>
<para>
<code>February</code>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>%A</userinput></term>
<listitem>
<para>
<code>friday</code>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>%a</userinput></term>
<listitem>
<para>
<code>fri</code>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>%u</userinput></term>
<listitem>
<para>
<code>5</code>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>%D</userinput></term>
<listitem>
<para>
<code>02/03/17</code>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>%j</userinput></term>
<listitem>
<para>
<code>034</code>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>%m/%d/%Y - %H:%M:%S</userinput></term>
<listitem>
<para>
<code>02/03/2017 - 14:34:26</code>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><userinput>%m/%d/%Y - %I:%M:%S %p</userinput></term>
<listitem>
<para>
<code>02/03/2017 - 02:34:26 PM</code>
</para>
</listitem>
</varlistentry>
</variablelist>
</sect1>
</appendix>
<appendix xml:id="appendix.metadata_wildcards">
<title>Metadata Wildcards</title>
<para>
These codes are used in Rivendell to indicate when a substitution of the
indicated cart metadata field should be performed --e.g. in the
'--metadata-pattern' switch of rdimport(1) or the RLMResolveNowNext*()
functions in the Rivendell Loadable Module API.
</para>
<table xml:id="table.metadata_wildcards" frame="all" pgwide="0">
<title>Metadata Wildcards</title>
<tgroup cols="3" align="left" colsep="1" rowsep="1">
<colspec colname="Now" colwidth="2.0*"/>
<colspec colname="Next" colwidth="2.0*"/>
<colspec colname="Field" colwidth="10.0*"/>
<tbody>
<row><entry>Now</entry><entry>Next</entry><entry>Field</entry></row>
<row><entry><userinput>%a</userinput></entry><entry><userinput>%A</userinput></entry><entry>Artist</entry></row>
<row><entry><userinput>%b</userinput></entry><entry><userinput>%B</userinput></entry><entry>Record Label</entry></row>
<row><entry><userinput>%c</userinput></entry><entry><userinput>%C</userinput></entry><entry>Client</entry></row>
<row><entry><userinput>%d(<replaceable>&lt;dt&gt;</replaceable>)</userinput></entry><entry><userinput>%D(<replaceable>&lt;dt&gt;</replaceable>)</userinput></entry><entry>Date/Time (see the <link linkend="table.metadata_wildcards.datetimes">Metadata DateTime Specification</link> for values of <userinput><replaceable>&lt;dt&gt;</replaceable></userinput>)</entry></row>
<row><entry><userinput>%e</userinput></entry><entry><userinput>%E</userinput></entry><entry>Agency</entry></row>
<row><entry><userinput>%f</userinput></entry><entry><userinput>%F</userinput></entry><entry>[unassigned]</entry></row>
<row><entry><userinput>%g</userinput></entry><entry><userinput>%G</userinput></entry><entry>Rivendell group name</entry></row>
<row><entry><userinput>%h</userinput></entry><entry><userinput>%H</userinput></entry><entry>Event length (milliseconds)</entry></row>
<row><entry><userinput>%i</userinput></entry><entry><userinput>%I</userinput></entry><entry>Cut Description</entry></row>
<row><entry><userinput>%j</userinput></entry><entry><userinput>%J</userinput></entry><entry>Cut Number</entry></row>
<row><entry><userinput>%k</userinput></entry><entry><userinput>%K</userinput></entry><entry>Start [<userinput>%k</userinput>]/end [<userinput>%K</userinput>] time for <command>rdimport</command><manvolnum>1</manvolnum> [HH:MM:SS]</entry></row>
<row><entry><userinput>%l</userinput></entry><entry><userinput>%L</userinput></entry><entry>Album</entry></row>
<row><entry><userinput>%m</userinput></entry><entry><userinput>%M</userinput></entry><entry>Composer</entry></row>
<row><entry><userinput>%n</userinput></entry><entry><userinput>%N</userinput></entry><entry>Rivendell cart number</entry></row>
<row><entry><userinput>%o</userinput></entry><entry><userinput>%O</userinput></entry><entry>Outcue</entry></row>
<row><entry><userinput>%p</userinput></entry><entry><userinput>%P</userinput></entry><entry>Publisher</entry></row>
<row><entry><userinput>%q</userinput></entry><entry><userinput>%Q</userinput></entry><entry>Start [<userinput>%q</userinput>]/end [<userinput>%Q</userinput>] date for <command>rdimport</command><manvolnum>1</manvolnum> [YYYY-MM-DD]</entry></row>
<row><entry><userinput>%r</userinput></entry><entry><userinput>%R</userinput></entry><entry>Conductor</entry></row>
<row><entry><userinput>%s</userinput></entry><entry><userinput>%S</userinput></entry><entry>Song ID</entry></row>
<row><entry><userinput>%t</userinput></entry><entry><userinput>%T</userinput></entry><entry>Title</entry></row>
<row><entry><userinput>%u</userinput></entry><entry><userinput>%U</userinput></entry><entry>User Definied</entry></row>
<row><entry><userinput>%v</userinput></entry><entry><userinput>%V</userinput></entry><entry>[Unassigned]</entry></row>
<row><entry><userinput>%w</userinput></entry><entry><userinput>%W</userinput></entry><entry>[Unassigned]</entry></row>
<row><entry><userinput>%x</userinput></entry><entry><userinput>%X</userinput></entry><entry>[Unassigned]</entry></row>
<row><entry><userinput>%y</userinput></entry><entry><userinput>%Y</userinput></entry><entry>Release Year</entry></row>
<row><entry><userinput>%z</userinput></entry><entry><userinput>%Z</userinput></entry><entry>[Unassigned]</entry></row>
<row><entry><userinput>\r</userinput></entry><entry><userinput>\r</userinput></entry><entry>Literal Carriage Return (ASCII 13)</entry></row>
<row><entry><userinput>\n</userinput></entry><entry><userinput>\n</userinput></entry><entry>Literal Linefeed (ASCII 10)</entry></row>
</tbody>
</tgroup>
</table>
<table xml:id="table.metadata_wildcards.datetimes" frame="all" pgwide="0">
<title>Metadata DateTime Specification</title>
<tgroup cols="2" align="left" colsep="1" rowsep="1">
<colspec colname="Wildcard" colwidth="2.0*"/>
<colspec colname="Meaning" colwidth="10.0*"/>
<tbody>
<row><entry>Wildcard</entry><entry>Meaning</entry></row>
<row><entry><userinput>d</userinput></entry><entry>The day as a number without a leading zero (1 to 31)</entry></row>
<row><entry><userinput>dd</userinput></entry><entry>The day as a number with a leading zero (01 to 31)</entry></row>
<row><entry><userinput>ddd</userinput></entry><entry>The abbreviated localized day name ('Mon' or 'Sun')</entry></row>
<row><entry><userinput>dddd</userinput></entry><entry>The long localized day name ('Monday' or 'Sunday')</entry></row>
<row><entry><userinput>M</userinput></entry><entry>The month as a number without a leading zero (1 to 12)</entry></row>
<row><entry><userinput>MM</userinput></entry><entry>The month as a number with a leading zero (01 to 12)</entry></row>
<row><entry><userinput>MMM</userinput></entry><entry>The abbreviated localized month name ('Jan' or 'Dec')</entry></row>
<row><entry><userinput>MMMM</userinput></entry><entry> The long localized month name ('January' or 'December')</entry></row>
<row><entry><userinput>yy</userinput></entry><entry>The last two digits of the year</entry></row>
<row><entry><userinput>yyyy</userinput></entry><entry>The full four digits of the year</entry></row>
<row><entry><userinput>h</userinput></entry><entry>The hour without a leading zero (0 - 23, or 1 - 12 if using AM/PM display)</entry></row>
<row><entry><userinput>hh</userinput></entry><entry>The hour with a leading zero (00 - 23, or 01 -12 if using AM/PM display)</entry></row>
<row><entry><userinput>m</userinput></entry><entry>The minute without a leading zero (0 - 59)</entry></row>
<row><entry><userinput>mm</userinput></entry><entry>The minute with a leading zero (00 - 59)</entry></row>
<row><entry><userinput>s</userinput></entry><entry>The second without a leading zero (00 - 60)</entry></row>
<row><entry><userinput>ss</userinput></entry><entry>The second with a leading zero (00 - 60)</entry></row>
<row><entry><userinput>z</userinput></entry><entry>The milliseconds without a leading zero (0 - 999)</entry></row>
<row><entry><userinput>zzz</userinput></entry><entry>The milliseconds with leading zeros (000 - 999)</entry></row>
<row><entry><userinput>AP</userinput></entry><entry>Use AM/PM display. The 'AP' will be replaced by 'AM' or 'PM' as appropriate</entry></row>
<row><entry><userinput>ap</userinput></entry><entry>Use AM/PM display. The 'ap' will be replaced by 'am' or 'pm' as appropriate</entry></row>
</tbody>
</tgroup>
</table>
</appendix>
<!--
<index>
</index>
-->
</book>
<!--
<structure xml:id="manual">
<output renderas="book"/>
</structure>
-->