2017-11-03 Fred Gleason <fredg@paravelsystems.com>

* Refactored the XML source for the Operations Guide up into
	per-chapter files.
This commit is contained in:
Fred Gleason 2017-11-03 14:20:22 -04:00
parent 669ae37762
commit 242167c3d6
20 changed files with 9765 additions and 9743 deletions

1
.gitignore vendored
View File

@ -33,6 +33,7 @@ docs/apis/*.html
docs/apis/*.pdf
docs/opsguide/*.html
docs/opsguide/*.pdf
docs/opsguide/frontspiece.xml
helpers/cwrap
helpers/jsmin
importers/nexgen_filter

View File

@ -16247,3 +16247,6 @@
2017-11-03 Fred Gleason <fredg@paravelsystems.com>
* Moved the contents of 'docs/metadata_wildcards.txt' to an
appendix in the Operations Guide.
2017-11-03 Fred Gleason <fredg@paravelsystems.com>
* Refactored the XML source for the Operations Guide up into
per-chapter files.

View File

@ -504,6 +504,7 @@ AC_CONFIG_FILES([rivendell.spec \
docs/apis/Makefile \
docs/examples/Makefile \
docs/manpages/Makefile \
docs/opsguide/frontspiece.xml \
docs/opsguide/Makefile \
docs/tables/Makefile \
debian/Makefile \

View File

@ -19,94 +19,110 @@
##
## Use automake to process this into a Makefile.in
##
## Build Dependencies
##
%.html: %.xml
xsltproc -o $@ $(DOCBOOK_STYLESHEETS)/xhtml/docbook.xsl $<
%.pdf: %.xml
xsltproc $(DOCBOOK_STYLESHEETS)/fo/docbook.xsl $< | fop - -pdf $@
%.1: %.xml
xsltproc $(DOCBOOK_STYLESHEETS)/manpages/docbook.xsl $<
%.8: %.xml
xsltproc $(DOCBOOK_STYLESHEETS)/manpages/docbook.xsl $<
OPSGUIDE_DEPS = filepath_wildcards.xml\
gpio_switcher_devices.xml\
gplv2.xml\
opsguide.xml\
overview.xml\
metadata_wildcards.xml\
rdairplay.audio_meter.png\
rdairplay.button_log_widget.png\
rdairplay.delete_from.png\
rdairplay.edit_button_dialog.png\
rdairplay.edit_buttons.png\
rdairplay.edit_event_dialog.png\
rdairplay.full_log_widget.png\
rdairplay.label_widget.png\
rdairplay.mode_widget.png\
rdairplay.next_stop_widget.png\
rdairplay.piewedge_widget.png\
rdairplay.postpoint_early_widget.png\
rdairplay.postpoint_late_widget.png\
rdairplay.postpoint_ontime_widget.png\
rdairplay.rdairplay_screenshot.png\
rdairplay.select_a_log_dialog.png\
rdairplay.soundpanel_widget.png\
rdairplay.wallclock_widget.png\
rdairplay.where_to.png\
rdairplay.xml\
rdcatch.add_event_dialog.png\
rdcatch.edit_cart_event_dialog.png\
rdcatch.edit_download_dialog.png\
rdcatch.edit_playout_dialog.png\
rdcatch.edit_recording_dialog.png\
rdcatch.edit_switcher_event_dialog.png\
rdcatch.edit_upload_dialog.png\
rdcatch.rdcatch_screenshot.png\
rdcatch.xml\
rdlibrary.cd_ripper_dialog.png\
rdlibrary.edit_cart_dialog.png\
rdlibrary.edit_cut_info_dialog.png\
rdlibrary.edit_macro_cart_dialog.png\
rdlibrary.edit_marker_dialog.png\
rdlibrary.import_export_dialog.png\
rdlibrary.rdlibrary_screenshot.png\
rdlibrary.rip_disk_dialog.png\
rdlibrary.set_cart_cut_dialog.png\
rdlibrary.xml\
rdlogedit.edit_log_chain_dialog.png\
rdlogedit.edit_log_dialog.png\
rdlogedit.edit_log_entry_dialog.png\
rdlogedit.edit_log_marker_dialog.png\
rdlogedit.edit_voice_track_marker_dialog.png\
rdlogedit.rdlogedit_screenshot.png\
rdlogedit.select_cart_dialog.png\
rdlogedit.xml\
rdlogin.rdlogin_screenshot.png\
rdlogin.xml\
rdlogmanager.edit_clock_dialog.png\
rdlogmanager.edit_event_assignment_dialog.png\
rdlogmanager.edit_grid_dialog.png\
rdlogmanager.editing_event.png\
rdlogmanager.generate_log_dialog.png\
rdlogmanager.generate_log_dialog_fully_merged.png\
rdlogmanager.generate_log_dialog_music_merge_required.png\
rdlogmanager.generate_log_dialog_traffic_merge_required.png\
rdlogmanager.log_clock_list.png\
rdlogmanager.log_clocks.png\
rdlogmanager.log_events_dialog.png\
rdlogmanager.log_grids_dialog.png\
rdlogmanager.rdlogmanager_screenshot.png\
rdlogmanager.rivendell_services_dialog.png\
rdlogmanager.select_date_dialog.png\
rdlogmanager.select_report_dates_dialog.png\
rdlogmanager.service_association_dialog.png\
rdlogmanager.xml\
rml.xml\
utilities.rmlsend_screenshot.png\
utilities.xml\
voicetracking.voice_tracker_dialog.png\
voicetracking.voice_tracker_dialog_recording.png\
voicetracking.voice_tracker_dialog_track_1_playing.png\
voicetracking.voice_tracker_dialog_track_2_playing.png\
voicetracking.voice_tracker_dialog_track_completed.png\
voicetracking.voice_tracker_dialog_track_selected.png\
voicetracking.xml
opsguide.html: $(OPSGUIDE_DEPS) frontspiece.xml
xsltproc -o opsguide.html $(DOCBOOK_STYLESHEETS)/xhtml/docbook.xsl opsguide.xml
opsguide.pdf: $(OPSGUIDE_DEPS) frontspiece.xml
xsltproc $(DOCBOOK_STYLESHEETS)/fo/docbook.xsl opsguide.xml | fop - -pdf opsguide.pdf
all-local: opsguide.html\
opsguide.pdf
EXTRA_DIST = opsguide.html\
opsguide.pdf\
opsguide.xml\
rdairplay.audio_meter.png\
rdairplay.button_log_widget.png\
rdairplay.delete_from.png\
rdairplay.edit_button_dialog.png\
rdairplay.edit_buttons.png\
rdairplay.edit_event_dialog.png\
rdairplay.full_log_widget.png\
rdairplay.label_widget.png\
rdairplay.mode_widget.png\
rdairplay.next_stop_widget.png\
rdairplay.piewedge_widget.png\
rdairplay.postpoint_early_widget.png\
rdairplay.postpoint_late_widget.png\
rdairplay.postpoint_ontime_widget.png\
rdairplay.rdairplay_screenshot.png\
rdairplay.select_a_log_dialog.png\
rdairplay.soundpanel_widget.png\
rdairplay.wallclock_widget.png\
rdairplay.where_to.png\
rdcatch.add_event_dialog.png\
rdcatch.edit_cart_event_dialog.png\
rdcatch.edit_download_dialog.png\
rdcatch.edit_playout_dialog.png\
rdcatch.edit_recording_dialog.png\
rdcatch.edit_switcher_event_dialog.png\
rdcatch.edit_upload_dialog.png\
rdcatch.rdcatch_screenshot.png\
rdlibrary.cd_ripper_dialog.png\
rdlibrary.edit_cart_dialog.png\
rdlibrary.edit_cut_info_dialog.png\
rdlibrary.edit_macro_cart_dialog.png\
rdlibrary.edit_marker_dialog.png\
rdlibrary.import_export_dialog.png\
rdlibrary.rdlibrary_screenshot.png\
rdlibrary.rip_disk_dialog.png\
rdlibrary.set_cart_cut_dialog.png\
rdlogedit.edit_log_chain_dialog.png\
rdlogedit.edit_log_dialog.png\
rdlogedit.edit_log_entry_dialog.png\
rdlogedit.edit_log_marker_dialog.png\
rdlogedit.edit_voice_track_marker_dialog.png\
rdlogedit.rdlogedit_screenshot.png\
rdlogedit.select_cart_dialog.png\
rdlogin.rdlogin_screenshot.png\
rdlogmanager.edit_clock_dialog.png\
rdlogmanager.edit_event_assignment_dialog.png\
rdlogmanager.edit_grid_dialog.png\
rdlogmanager.editing_event.png\
rdlogmanager.generate_log_dialog.png\
rdlogmanager.generate_log_dialog_fully_merged.png\
rdlogmanager.generate_log_dialog_music_merge_required.png\
rdlogmanager.generate_log_dialog_traffic_merge_required.png\
rdlogmanager.log_clock_list.png\
rdlogmanager.log_clocks.png\
rdlogmanager.log_events_dialog.png\
rdlogmanager.log_grids_dialog.png\
rdlogmanager.rdlogmanager_screenshot.png\
rdlogmanager.rivendell_services_dialog.png\
rdlogmanager.select_date_dialog.png\
rdlogmanager.select_report_dates_dialog.png\
rdlogmanager.service_association_dialog.png\
utilities.rmlsend_screenshot.png\
voicetracking.voice_tracker_dialog.png\
voicetracking.voice_tracker_dialog_recording.png\
voicetracking.voice_tracker_dialog_track_1_playing.png\
voicetracking.voice_tracker_dialog_track_2_playing.png\
voicetracking.voice_tracker_dialog_track_completed.png\
voicetracking.voice_tracker_dialog_track_selected.png
EXTRA_DIST = $(OPSGUIDE_DEPS)\
frontspiece.xml.in\
opsguide.html\
opsguide.pdf
CLEANFILES = *~\
*.html\
*.pdf
DISTCLEANFILES = frontspiece.xml
CLEANFILES = *~
MAINTAINERCLEANFILES = *~\
*.1\
*.8\

View File

@ -0,0 +1,587 @@
<appendix xmlns="http://docbook.org/ns/docbook" ml: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>

View File

@ -0,0 +1,20 @@
<info xmlns="http://docbook.org/ns/docbook">
<title>Rivendell Radio Automation System</title>
<subtitle>Operations Guide</subtitle>
<author>
<personname>
<firstname>Fred</firstname><surname>Gleason</surname>
</personname>
</author>
<edition>
@VERSION@
</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>

File diff suppressed because it is too large Load Diff

483
docs/opsguide/gplv2.xml Normal file
View File

@ -0,0 +1,483 @@
<appendix xmlns="http://docbook.org/ns/docbook" 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>

View File

@ -0,0 +1,80 @@
<appendix xmlns="http://docbook.org/ns/docbook" 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>

File diff suppressed because it is too large Load Diff

327
docs/opsguide/overview.xml Normal file
View File

@ -0,0 +1,327 @@
<chapter xmlns="http://docbook.org/ns/docbook" 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>

568
docs/opsguide/rdairplay.xml Normal file
View File

@ -0,0 +1,568 @@
<chapter xmlns="http://docbook.org/ns/docbook" 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>

747
docs/opsguide/rdcatch.xml Normal file
View File

@ -0,0 +1,747 @@
<chapter xmlns="http://docbook.org/ns/docbook" 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>

1043
docs/opsguide/rdlibrary.xml Normal file

File diff suppressed because it is too large Load Diff

594
docs/opsguide/rdlogedit.xml Normal file
View File

@ -0,0 +1,594 @@
<chapter xmlns="http://docbook.org/ns/docbook" 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>

54
docs/opsguide/rdlogin.xml Normal file
View File

@ -0,0 +1,54 @@
<chapter xmlns="http://docbook.org/ns/docbook" 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>

View File

@ -0,0 +1,547 @@
<chapter xmlns="http://docbook.org/ns/docbook" 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>

2284
docs/opsguide/rml.xml Normal file

File diff suppressed because it is too large Load Diff

129
docs/opsguide/utilities.xml Normal file
View File

@ -0,0 +1,129 @@
<chapter xmlns="http://docbook.org/ns/docbook" 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>

View File

@ -0,0 +1,225 @@
<chapter xmlns="http://docbook.org/ns/docbook" 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>