mirror of
				https://github.com/ElvishArtisan/rivendell.git
				synced 2025-11-04 08:04:12 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			328 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			328 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
<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><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><link linkend="chapter.rdcartslots">RDCartSlots</link></term>
 | 
						|
	  <listitem>
 | 
						|
	    Emulate a traditional broadcast cart machine
 | 
						|
	  </listitem>
 | 
						|
	</varlistentry>
 | 
						|
	<varlistentry>
 | 
						|
	  <term>RDPanel</term>
 | 
						|
	  <listitem>
 | 
						|
	    Large "cart wall" application
 | 
						|
	  </listitem>
 | 
						|
	</varlistentry>
 | 
						|
	<varlistentry>
 | 
						|
	  <term>RDCastManager</term>
 | 
						|
	  <listitem>
 | 
						|
	    Podcast feed manager
 | 
						|
	  </listitem>
 | 
						|
	</varlistentry>
 | 
						|
	<varlistentry>
 | 
						|
	  <term><link linkend="chapter.rdadmin">RDAdmin</link></term>
 | 
						|
	  <listitem>
 | 
						|
	    System wide configuration
 | 
						|
	  </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>
 |