# System Overview

## Introducing Rivendell

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:

- Audio Routing Switchers
- Satellite Downlink Receivers
- Audio Mixing Consoles
- Commercial Traffic and Music Scheduling Systems

Rivendell is made available under the terms of the GNU General Public License, version 2. As such, it comes with absolutely no warranty, not even the implied warranties of merchantability or fitness for a particular purpose. See the full text of the GPLv2 for details.

Rivendell has been designed and developed from the ground up to run on the popular and highly stable GNU/Linux operating system. Selected tools (mostly having to do with log generation) have also been ported to run in the Microsoft Windows environment as well. Full source code as well as binary installation packages for Windows and select Linux distributions are available on line.

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.

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:

RDLibrary
  Library content management
RDCatch
  Automatic event scheduler
RDAirPlay
  On-air play out application
RDLogEdit
  Log editing and voicetracking tool
RDLogManager
  Automated log generation and interface utility
RDLogin
  Set the current user on a Rivendell host
RDCartSlots
  Emulate a traditional broadcast cart machine
RDPanel
  Large "cart wall" application
RDCastManager
  Podcast feed manager
RDAdmin
  System wide configuration

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.

### The Rivendell Object Paradigm

All Rivendell modules make use of the following four classes of system resources:

- Hosts
- Users
- Groups
- Services

We'll cover each of these concepts in turn.

#### Hosts

Every physical computer within a given network that is running Rivendell software is referred to as a host. 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.

#### Users

Every host on a Rivendell network has one or more users 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 default user. 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.

#### Groups

A Rivendell group 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.

#### Services

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 service, 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.

### The Rivendell Hardware Paradigm

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.

#### Audio Adapters

An audio adapter 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:

Advanced Linux Sound Architecture (ALSA)

  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/.

HPI Adapters

  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/.

JACK Audio Interconnect Kit

  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/.

#### Serial Ports

Commonly known in the DOS/Windows world as 'COM ports', serial ports 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.

#### GPIO/Switcher Devices

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. GPIO 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. GPI (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 GPO (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.