<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.rivendellaudio.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ElvishArtisan</id>
		<title>Rivendell Wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.rivendellaudio.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ElvishArtisan"/>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php/Special:Contributions/ElvishArtisan"/>
		<updated>2026-05-10T17:55:17Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.26.4</generator>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=ChangeSummary&amp;diff=791</id>
		<title>ChangeSummary</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=ChangeSummary&amp;diff=791"/>
				<updated>2025-10-13T17:17:29Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: /* Version 4.X Changes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Rivendell Change Summary ==&lt;br /&gt;
&lt;br /&gt;
This page contains version change descriptions in summary form for Rivendell versions released within at least the most recent five years (quite probably longer). Change descriptions are limited (mostly) to user-visible changes.&lt;br /&gt;
&lt;br /&gt;
This change summary tracks the two most recent stable versions. As of November, 2023 you can see summaries for versions [[#Version 4.X Changes|4.X]] and [[#Version 3.X Changes|3.X]].&lt;br /&gt;
&lt;br /&gt;
Please see the [https://github.com/ElvishArtisan/rivendell/blob/v4/ChangeLog ChangeLog] (version 4) and [https://github.com/ElvishArtisan/rivendell/blob/v4/NEWS NEWS] (version 4) files in the [https://github.com/elvishartisan/rivendell source code] for a complete list of changes and bug fixes.&lt;br /&gt;
&lt;br /&gt;
See the [https://github.com/elvishartisan/rivendell/issues Issues] list for current reported bugs, issues and feature requests.&lt;br /&gt;
&lt;br /&gt;
== Version 4.X Changes ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.4.1 (2025-10-13) ===&lt;br /&gt;
&lt;br /&gt;
* Database version '''376'''&lt;br /&gt;
&lt;br /&gt;
Rivendell 4.4.1 is primarily a bug-fix release. It fixes an installer problem that could result in a corrupt database.&lt;br /&gt;
&lt;br /&gt;
==== ''RDAlsaConfig'' Fixes ====&lt;br /&gt;
The RDAlsaConfig applet has been refactored to better deal with ALSA devices that bundle multiple PCMs into a single device instance. In particular, it better handles the AoIP driver for Wheatstone's 'WheatNet' system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.4.0 (2025-08-21) ===&lt;br /&gt;
&lt;br /&gt;
* Database version '''376'''&lt;br /&gt;
&lt;br /&gt;
Rivendell 4.4.0 is primarily a bug-fix release. Many issues are addressed in the release. Please find a partial list of changes below. Consult the  [https://raw.githubusercontent.com/ElvishArtisan/rivendell/master/ChangeLog ChangeLog] for all the details.&lt;br /&gt;
&lt;br /&gt;
Several bugs related to audio playout with segues are addressed.&lt;br /&gt;
&lt;br /&gt;
Two new utilities are added to aid in backing up and restoring Rivendell data; both the Rivendell database and the audio store.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blueviolet&amp;quot;&amp;gt;Database Schema Change&amp;lt;/font&amp;gt;: Dropped the &amp;amp;lsquo;RDAIRPLAY.INSTANCE&amp;amp;rsquo; field from the database&lt;br /&gt;
&lt;br /&gt;
==== ''RDAirPlay'' Fixes ====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in rdairplay(1) that could cause events with Segue transitions to clip off the end of the previous event if the previous event did not have a segue marker set&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in rdairplay(1) that caused STOP transitions to be treated as PLAY&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed several regressions in rdairplay(1) that caused the end of play-outs to be clipped and/or that broke segue transitions&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a race in the voice tracker that could cause play-out to stop in the middle of a segue&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdairplay(1) that caused the voice tracker to be left in an undefined state after attempting to load a locked log&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Modified log machine logic in rdairplay(1) to properly timescale event transitions&lt;br /&gt;
&lt;br /&gt;
==== ''RDImport'' Fixes ====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdimport(1) that caused filename corruption when processing input filenames containing the &amp;amp;lsquo;[&amp;amp;rsquo; (''left square bracket'') character&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdimport(1) that could cause a double-decode of glob wildcards (e.g., &amp;lt;tt&amp;gt;**&amp;lt;/tt&amp;gt;) when in dropbox mode&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in the RDXport service (&amp;lt;tt&amp;gt;rdxport.cgi&amp;lt;/tt&amp;gt;) that could cause the IMPORT call to return a &amp;amp;lsquo;no such cart&amp;amp;rsquo; error when trying to create a new cart&lt;br /&gt;
&lt;br /&gt;
==== ''RDCatch'' Fixes ====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in the &amp;amp;lsquo;Edit Download&amp;amp;rsquo; dialog in rdcatch(1) that caused the &amp;amp;lsquo;Username&amp;amp;rsquo; and &amp;amp;lsquo;Password&amp;amp;rsquo; controls to be disabled when entering a URL scheme of &amp;amp;lsquo;https&amp;amp;rsquo;&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdcatchd(8) that caused embedded source start and end datetime metadata to fail to be applied in download events when the &amp;amp;lsquo;Update Library Metadata&amp;amp;rsquo; attribute was not selected&lt;br /&gt;
&lt;br /&gt;
==== ''RDLibrary'' Fixes ====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Restored the &amp;amp;lsquo;Show Only First 100 Carts&amp;amp;rsquo; checkbox to the &amp;amp;lsquo;RDCartFilter&amp;amp;rsquo; widget&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in the &amp;amp;lsquo;Edit Audio&amp;amp;rsquo; dialog in rdlibrary(1) that caused a marker to be removed from the view if it was dragged beyond the left hand edge of the view&lt;br /&gt;
&lt;br /&gt;
==== ''PyPAD Subsystem'' Fixes ====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in the PyPAD service that could cause resolution of the &amp;amp;lsquo;%d()&amp;amp;rsquo; wildcard to return dangling whitespace&lt;br /&gt;
* &amp;lt;font sytle=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Modified the &amp;amp;lsquo;PyPAD&amp;amp;rsquo; Python module to use &amp;amp;lsquo;configparser.read_file()&amp;amp;rsquo; instead of &amp;amp;lsquo;configparser.readfp()&amp;amp;rsquo;&lt;br /&gt;
&lt;br /&gt;
==== ''rddbmgr'' Changes ====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Modified rddbmgr(8) to make the 293=&amp;amp;gt;294 schema update a no-op&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added code at the 275=&amp;amp;gt;276 schema transition in rddbmgr(8) to clean up corrupted meta-tables&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added a check for orphaned database tables in rddbmgr(8)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added schema 376 support for &amp;amp;lsquo;--orphaned-tables&amp;amp;rsquo; in rddbmgr(8)&lt;br /&gt;
&lt;br /&gt;
==== Miscelaneous Fixes and Changes ====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in the &amp;amp;lsquo;Editing Event&amp;amp;rsquo; in rdlogmanager(1) that caused double SQL lookups&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdadmin(1) that thew a SQL error when creating a new Host record&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Modified three dialog boxes so as to retain previous service selection across invocations: the &amp;amp;lsquo;Select Log&amp;amp;rsquo; (voice tracker in ''rdairplay''), &amp;amp;lsquo;Podcast Item List&amp;amp;rsquo; in ''rdcastmanager'', and &amp;amp;lsquo;Edit Log Chain&amp;amp;rsquo; dialog in ''rdlogedit''&lt;br /&gt;
&lt;br /&gt;
==== Internal Code Changes ====&lt;br /&gt;
&lt;br /&gt;
These changes and fixes have no visible effect to the graphical or command line apps.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Added a &amp;amp;lsquo;bool incl_str_fields&amp;amp;rsquo; parameter to the &amp;amp;lsquo;RDCut::setMetadata()&amp;amp;rsquo; and &amp;amp;lsquo;RDCut::getMetadata()&amp;amp;rsquo; methods&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Refactored the &amp;amp;lsquo;RDCart::updateLength()&amp;amp;rsquo; so as to process evergreen cuts properly&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Fixed a bug in &amp;amp;lsquo;RDCart::updateLength()&amp;amp;rsquo; that could cause SQL errors&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Fixed a bug in the &amp;amp;lsquo;hpiplayout-test&amp;amp;rsquo; test harness that caused the build to fail when HPI support was disabled&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Refactored the &amp;amp;lsquo;Editing Event&amp;amp;rsquo; dialog in rdlogmanager(1) to use &amp;amp;lsquo;RDCartFilter&amp;amp;rsquo; for filtering the library&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Fixed a bug in &amp;amp;lsquo;CopyAudio&amp;amp;rsquo; Web API service that failed to log the correct	error message when the operation failed&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Added &amp;amp;lsquo;python3-virtualenv&amp;amp;rsquo; to the lists of required build packages for Debian and Ubuntu in &amp;amp;lsquo;INSTALL&amp;amp;rsquo;&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Added a &amp;amp;lsquo;RDTimeArray&amp;amp;rsquo; class for optimization and debugging&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Modified &amp;amp;lsquo;RDCartFilter to apply a maximum limit of 100 matches for all searches&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Fixed a bug in &amp;amp;lsquo;RDPam&amp;amp;rsquo; that could cause a segfault when processing an authentication&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Fixed a bug in the WebGet service that caused uploads to fail when using an Apache package with &amp;amp;lsquo;PrivateTmp=true&amp;amp;rsquo; set in it&amp;amp;rsquo;s Systemd service definition&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Fixed bugs in schema conversion 296=&amp;amp;gt;297 that could cause SQL errors&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Fixed a bug in &amp;amp;lsquo;RDCut::setMetadata()&amp;amp;rsquo; where processing an &amp;amp;lsquo;RDWaveData&amp;amp;rsquo; structure containing segue data but no endpoint data could result with a record where the value of &amp;amp;lsquo;CUTS.SEGUE_END_POINT&amp;amp;rsquo; was greater than that of &amp;amp;lsquo;CUTS.END_POINT&amp;amp;rsquo;. This code change affects audio playout in ''RDAirPlay''&lt;br /&gt;
&lt;br /&gt;
==== Documentation Changes ====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:orange&amp;quot;&amp;gt;Documentation&amp;lt;/font&amp;gt;: Updated the URL for the Python Packaging User Guide in &amp;amp;lsquo;versions/README.txt&amp;amp;rsquo;&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:orange&amp;quot;&amp;gt;Documentation&amp;lt;/font&amp;gt;: Updated screenshots showing cart filter controls in the Operations Guide&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:orange&amp;quot;&amp;gt;Documentation&amp;lt;/font&amp;gt;: Added a &amp;amp;lsquo;File Metadata&amp;amp;rsquo; appendix to the Operations Guide&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:orange&amp;quot;&amp;gt;Documentation&amp;lt;/font&amp;gt;: Added a &amp;amp;lsquo;NULL POINTERS&amp;amp;rsquo; section to &amp;amp;lsquo;CODINGSTYLE&amp;amp;rsquo;&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:orange&amp;quot;&amp;gt;Documentation&amp;lt;/font&amp;gt;: Added a step to &amp;amp;lsquo;docs/misc/rivendell_release_checklist.txt&amp;amp;rsquo;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.3.0 (2024-06-26) ===&lt;br /&gt;
&lt;br /&gt;
* Database version '''375'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blueviolet&amp;quot;&amp;gt;Database Schema Change&amp;lt;/font&amp;gt;: Changed the &amp;amp;lsquo;ELR_LINES.EXT_EVENT_ID&amp;amp;rsquo; database field from &amp;amp;lsquo;varchar(8)&amp;amp;rsquo; to &amp;amp;rsquo;varchar(32)&amp;amp;rsquo;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in the &amp;amp;lsquo;Edit Audio&amp;amp;rsquo; dialog that caused it to ignore the state of the &amp;amp;lsquo;Edit Audio&amp;amp;rsquo; user privilege&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in the SoundPanel that caused button color highlighting for addition/move/delete operations to fail to be displayed for User panels when the user didn&amp;amp;rsquo;t have the &amp;amp;lsquo;Configure System Panels&amp;amp;rsquo; privilege&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in rdairplay(1) that caused the start time indicators in the button log to display the incorrect color for hard time events&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in the audio importation system that could cause the detected length of an MPEG file to be &amp;amp;lsquo;0&amp;amp;rsquo;&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in the &amp;amp;lsquo;Edit Service&amp;amp;rsquo; dialog in rdadmin(1) that made it impossible to use a field width of greater than 8 for the &amp;amp;lsquo;Event ID&amp;amp;rsquo; log import field&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdpadd(8) that could cause corruption when processing JSON updates&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in the &amp;amp;lsquo;pypad_icecast2.py PyPAD script that caused mojibake when sending ISO-8859-1 characters with code points &amp;amp;gt;= 0x80&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in the &amp;amp;lsquo;Edit Audio&amp;amp;rsquo; dialog in rdlibrary(1) that caused play-out to fail to stop at the end marker when using the &amp;amp;lsquo;Play To&amp;amp;rsquo; feature&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Refactored the &amp;amp;lsquo;RDEventLine::generateLog()&amp;amp;rsquo; method to isolate music selector code into the &amp;amp;lsquo;RDEventLine::GenerateMusicSchedEvent()&amp;amp;rsquo; method&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Added &amp;amp;lsquo;python3-venv&amp;amp;rsquo;, &amp;amp;lsquo;python3-virtualenv&amp;amp;rsquo;,  &amp;amp;lsquo;python3-build&amp;amp;rsquo; and &amp;amp;lsquo;twine&amp;amp;rsquo; packages to the list of required build packages for Ubuntu 22.04 LTS and Ubuntu 24.04 LTS in &amp;amp;lsquo;INSTALL&amp;amp;rsquo;&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Added a &amp;amp;lsquo;Debian 12 &amp;quot;Bookworm&amp;quot;&amp;amp;rsquo; section to the &amp;amp;lsquo;INSTALL&amp;amp;rsquo; file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.2.2 (2024-05-02) ===&lt;br /&gt;
&lt;br /&gt;
* Database version '''374''' (no change from previous release)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdlibrary(1) that could cause segfaults when deleting cut entries from a cart&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in the build system that failed to package &amp;amp;lsquo;Appendix I. Library Text Searches&amp;amp;rsquo; in the HTML version of the Operations Guide&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in rdlibrary(1) that caused output of the Cart Report to not reflect the current filter and sorting state of the library list&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a race condition in the PAD XML feed that could cause corrupt updates&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in the WebGet service that caused stale temp files to be left behind after processing&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in &amp;amp;lsquo;RDWaveFile&amp;amp;rsquo; that broke reading of start and end dates in files containing a &amp;amp;lsquo;scot&amp;amp;rsquo; chunk&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added a &amp;amp;lsquo;KillPypadAfterError=&amp;amp;rsquo; directive to the &amp;amp;lsquo [Debugging]&amp;amp;rsquo; section of rd.conf(5)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:orange&amp;quot;&amp;gt;Documentation&amp;lt;/font&amp;gt;: Documented the &amp;amp;lsquo;[Debugging]&amp;amp;rsquo; section in the rd.conf(5) man page&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.2.1 (2024-04-24) ===&lt;br /&gt;
&lt;br /&gt;
* Database version '''374''' (no change from previous release)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug that failed to remove a temporary directory after use&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in the PyPAD subsystem that broke null datetime handling and cause PyPAD instances to crash&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added an &amp;amp;lsquo;Ubuntu 24.04 LTS&amp;amp;rsquo; section to &amp;amp;lsquo;INSTALL&amp;amp;rsquo;&lt;br /&gt;
&lt;br /&gt;
=== 4.2.0 (2024-04-06) ===&lt;br /&gt;
&lt;br /&gt;
* Database version '''374''' (changed from previous release)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blueviolet&amp;quot;&amp;gt;Database Schema Change&amp;lt;/font&amp;gt;: Added a &amp;amp;lsquo;RDAIRPLAY.MESSAGE_WIDGET_URL&amp;amp;rsquo; field to the database&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blueviolet&amp;quot;&amp;gt;Database Schema Change&amp;lt;/font&amp;gt;: Changed the &amp;amp;lsquo;AUDIO_CARDS.NAME&amp;amp;rsquo; database field from &amp;amp;lsquo;&amp;lt;tt&amp;gt;varchar(64)&amp;lt;/tt&amp;gt;&amp;amp;rsquo; to &amp;amp;lsquo;&amp;lt;tt&amp;gt;text&amp;lt;/tt&amp;gt;&amp;amp;rsquo;&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blueviolet&amp;quot;&amp;gt;Database Schema Change&amp;lt;/font&amp;gt;: Added a &amp;amp;lsquo;REPLICATORS.PROGRAM_CODE&amp;amp;rsquo; field to the database&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in rdairplay(1) that could cause the space bar to fail to start the next main log event&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in rdlogmanager(1) that caused clock titles to fail to be centered in the pie wedge display in the &amp;amp;lsquo;Edit Clock&amp;amp;rsquo; dialog&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in rdlibrary(1) that caused the &amp;amp;lsquo;Forced Length&amp;amp;rsquo; control in the &amp;amp;lsquo;Edit Cart&amp;amp;rsquo; dialog to be misformatted when the system was configured to use 12 hour time format&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed bugs in rdairplay(1) that caused scroll bars to appear when loading web content into the message widget&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in rdlogmanager(1) that could throw SQL &amp;amp;ldquo;''column out of range''&amp;amp;rdquo; errors when importing traffic logs&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdlogmanager(1) that threw SQL errors when processing log GUIDs containing apostrophes&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in rdairplay(1) that caused invalid PAD JSON to be emitted when processing a Chain event&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in the PAD subsystem that caused meta-events to be included in the update events&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added a check to the audio importation system to validate metadata cue point positions relative to the actual audio duration&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Several changes to the Rivendell replication code:&lt;br /&gt;
:* added a &amp;amp;lsquo;''Program Code''&amp;amp;rsquo; control to the &amp;amp;lsquo;''Rivendell Replicators''&amp;amp;rsquo; dialog in rdadmin(1)&lt;br /&gt;
:* renamed the &amp;amp;lsquo;''Citadel X-Digital Portal''&amp;amp;rsquo; replicator to &amp;amp;lsquo;''X-Digital National ISCI Model''&amp;amp;rsquo;&lt;br /&gt;
:* added a &amp;amp;lsquo;''X-Digital Cue Model''&amp;amp;rsquo; replicator&lt;br /&gt;
:* added the option to provision users from an existing RSS feed to the &amp;amp;lsquo;''Add RSS Feed''&amp;amp;rsquo; dialog in rdadmin(1)&lt;br /&gt;
:* (internal, code change) added &amp;amp;lsquo;&amp;lt;tt&amp;gt;RDReplicator::programCode()&amp;lt;/tt&amp;gt;&amp;amp;rsquo; and &amp;amp;lsquo;&amp;lt;tt&amp;gt;RDReplicator::setProgramCode()&amp;lt;/tt&amp;gt;&amp;amp;rsquo; methods&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added support for displaying web pages in RDAirPlay&amp;amp;lsquo;s message panel. Changes include:&lt;br /&gt;
:* implementation of a new &amp;amp;ldquo;Load Message&amp;amp;rdquo; [&amp;amp;lsquo;LM&amp;amp;rsquo;] RML&lt;br /&gt;
:* modification of rdairplay(1) to make the Message Widget retain the loaded URL across instances&lt;br /&gt;
:* modification of rdairplay(1) to make the Message Widget continually poll and update loaded URLs using the &amp;amp;lsquo;file:&amp;amp;rsquo; schema&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added support for extended event program associated data (PAD, aka metadata); changes include:&lt;br /&gt;
:* addition of an extended event PAD output at TCP port 34290&lt;br /&gt;
:* addition of an &amp;amp;lsquo;ExtendedNextPadEvents=&amp;amp;rsquo; directive to rd.conf(5) (see the 'ExtendedNextPadEvents=' directive in the '[Tuning]' section of the &amp;lt;tt&amp;gt;rd.conf&amp;lt;/tt&amp;gt;(5) manual page)&lt;br /&gt;
&lt;br /&gt;
=== 4.1.3 (2024-01-24) ===&lt;br /&gt;
&lt;br /&gt;
* Database version '''371''' (no change)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a race in the log machine logic that could cause truncated play-outs with segue transitions&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in ripcd(8) that could cause a segfault when processing a null password in the &amp;amp;lsquo;Login&amp;amp;rsquo; [&amp;amp;rsquo;LO&amp;amp;rsquo;] RML&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in rdairplay(1) that caused the &amp;amp;lsquo;Sch. Time&amp;amp;rsquo; column to be removed from the Full Log lists&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in rdairplay(1) when using the &amp;amp;lsquo;Append Log&amp;amp;rsquo; [&amp;amp;rsquo;AL&amp;amp;rsquo;] RML caused the Full Log widget to only display the first event of the appended log&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in rdcartslots(1) that broke audio meters&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in rdcatch(1) that broke play-out of the head and tail audition buttons&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in rdcatchd(8) that broke play-out events&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in rdcatchd(8) that caused recordings to always be saved in PCM16 format when the &amp;amp;lsquo;Normalize&amp;amp;rsquo; attribute was set for the recording event&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in rdcatchd(8) that caused recordings to MPEG Layer II to fail&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in the &amp;amp;lsquo;Cut Info / Record&amp;amp;rsquo; dialog in rdlibrary(1) that caused the audio meter to fail to be zeroed when resetting from record ready&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed regressions in &amp;amp;lsquo;RDCae&amp;amp;rsquo; and the HPI driver in caed(8) that caused the length of audio captures to be reported incorrectly&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed regressions in the CAE subsystem that broke play-out positioning and active output port reporting&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Reduced the minimum size of rdairplay(1) to 1280x870 so as to fit on a 1280x1024 display&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added support for subclauses in the cart library search filter&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Optimized the handling of cart numbers when searching for carts&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Cleaned up warnings about unprocessed CAE commands in the syslog&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Refactored the CAE control interface to assign session IDs from the client rather than the service end&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Added &amp;amp;lsquo;debhelper&amp;amp;rsquo; to the list of required build packages for Debian 11 &amp;quot;Bullseye&amp;quot; in &amp;amp;lsquo;INSTALL&amp;amp;rsquo;&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Removed the &amp;amp;lsquo;card-num&amp;amp;rsquo;, &amp;amp;lsquo;port-num&amp;amp;rsquo; and &amp;amp;lsquo;stream-num&amp;amp;rsquo; parameters from the &amp;amp;lsquo;Set Output Volume&amp;amp;rsquo; [&amp;amp;rsquo;OV&amp;amp;rsquo;] and &amp;amp;lsquo;Fade Output Volume&amp;amp;rsquo; [&amp;amp;rsquo;FV&amp;amp;rsquo;] CAE commands&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Removed vestigal support for the &amp;amp;lsquo;Open RTP Capture Channel&amp;amp;rsquo; [&amp;amp;rsquo;CO&amp;amp;rsquo;] CAE command&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Removed vestigal support for the &amp;amp;lsquo;Output Stream Status&amp;amp;rsquo; [&amp;amp;rsquo;MS&amp;amp;rsquo;] CAE command&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Added &amp;amp;lsquo;Wants=hpklinux.service&amp;amp;rsquo; to the &amp;amp;lsquo;rivendell&amp;amp;rsquo; SystemD service definition&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Changed the default value of the &amp;amp;lsquo;RDLogLine::Imported&amp;amp;rsquo; start time from &amp;amp;lsquo;00:00:00&amp;amp;rsquo; to NULL&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Changed the distro name from &amp;amp;lsquo;Raspbian&amp;amp;rsquo; to &amp;amp;lsquo;Raspberry Pi OS&amp;amp;rsquo; in &amp;amp;lsquo;configure.ac&amp;amp;rsquo;&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Changed the recommended base branch for PRs from &amp;amp;lsquo;master&amp;amp;rsquo; to &amp;amp;lsquo;v4&amp;amp;rsquo; in the &amp;amp;lsquo;CONTRIBUTING CHANGES&amp;amp;rsquo; section of &amp;amp;lsquo;CODINGSTYLE&amp;amp;rsquo;&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Modified the call parameters of the &amp;amp;lsquo;Output Stream Meter Levels&amp;amp;rsquo; [&amp;amp;rsquo;MO&amp;amp;rsquo;] CAE command to use play session serial numbers rather than card and stream numbers&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Modified the schema reversion 348=&amp;amp;gt;347 in rddbmgr(8) to remove out-of-bounds SoundPanel button entries&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Documented the meaning of the &amp;amp;lsquo;RDLogLine::StartTimeType&amp;amp;rsquo; enum in &amp;amp;lsquo;lib/rdlog_line.h&amp;amp;rsquo;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:orange&amp;quot;&amp;gt;Documentation&amp;lt;/font&amp;gt;: Documented the &amp;amp;lsquo;Source&amp;amp;rsquo; and &amp;amp;lsquo;Ingest&amp;amp;rsquo; fields for Cuts in the &amp;amp;lsquo;RDLibrary&amp;amp;rsquo; chapter of the Operations Guide&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:orange&amp;quot;&amp;gt;Documentation&amp;lt;/font&amp;gt;: Rewrote and expanded the &amp;amp;lsquo;Events&amp;amp;rsquo; section of the &amp;amp;lsquo;RDLogManager&amp;amp;rsquo; chapter of the Operations Guide&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:orange&amp;quot;&amp;gt;Documentation&amp;lt;/font&amp;gt;: Added an &amp;amp;lsquo;Evergreen Cuts&amp;amp;rsquo; section to the &amp;amp;lsquo;RDLibrary&amp;amp;rsquo; chapter of the Operations Guide&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:orange&amp;quot;&amp;gt;Documentation&amp;lt;/font&amp;gt;: Rewrote the CAE API documentation so as to use the term &amp;amp;lsquo;stream&amp;amp;rsquo; more consistently&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:orange&amp;quot;&amp;gt;Documentation&amp;lt;/font&amp;gt;: Added a &amp;amp;lsquo;Library Text Searches&amp;amp;rsquo; appendix to the Operations Guide&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.1.2 (2023-11-21) ===&lt;br /&gt;
&lt;br /&gt;
* Database version '''371''' (no change)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdvairplayd(8) that caused virtual logs to fail to process &amp;amp;lsquo;Load Log&amp;amp;lsquo; [&amp;amp;lsquo;LL&amp;amp;rsquo;], &amp;amp;lsquo;Set Duck Level&amp;amp;rsquo; [&amp;amp;lsquo;MD&amp;amp;rsquo;] and &amp;amp;lsquo;Stop&amp;amp;rsquo; [&amp;amp;lsquo;PS&amp;amp;rsquo;] RMLs with a &amp;amp;lsquo;mach&amp;amp;rsquo; parameter of &amp;amp;lsquo;0&amp;amp;rsquo;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in the &amp;amp;lsquo;RDHPIPlayStream&amp;amp;rsquo; that could cause audio play-out to be truncated; this code is used to play on Audio Science audio adapters&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fixes&amp;lt;/font&amp;gt;: Fixed many bugs in &amp;amp;lsquo;RDSoundPanel&amp;amp;rsquo;. Many &amp;amp;ldquo;cosmetic&amp;amp;rdquo; changes including those affecting drag-and-drop operation, button rendering, colors, resizing, etc., as well as crash fixes&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in caed(8) that caused multiple play-outs on a common port to interfere with each others mixer settings&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug that failed to remove records from the &amp;amp;lsquo;USER_SERVICE_PERMS&amp;amp;rsquo; database table&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdairplay(1) that caused a segfault when attempting to unload a log from the voice tracker while the tracker was active&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdairplay(1) that allowed access to the Voice Tracker even when the current user had the &amp;amp;lsquo;Voicetrack Logs&amp;amp;rsquo; privilege revoked&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdlogmanager(1) that caused scheduler codes containing space characters to fail to be processed correctly&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a long-standing (and annoying) bug in ripcd(8) that caused memory to be leaked when processing RMLs&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in caed(8) that could cause play-outs from different hosts to cross-talk into each other&amp;amp;rsquo;s outputs when using a shared caed(8) instance&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added a &amp;amp;lsquo;TestOutputStreams=&amp;amp;rsquo; directive to the &amp;amp;lsquo;[Caed]&amp;amp;rsquo; section of rd.conf(5); this is likely useful only for developers&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added a &amp;amp;lsquo;PadSegueOverlap=&amp;amp;rsquo; directive to rd.conf(5); this value is used in the playout engine to alter the start time of tracks when the transition type is set to '''SEGUE'''&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added a &amp;amp;lsquo;--dump-panel-updates&amp;amp;rsquo; switch to rdpanel(1)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added a &amp;amp;lsquo;--dump-panel-updates&amp;amp;rsquo; switch to rdairplay(1)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added a &amp;amp;lsquo;SoundPanel Buttons&amp;amp;rsquo; notification&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Prepended the string &amp;amp;lsquo;[mixer]&amp;amp;rsquo; to all syslog entries generated as a result of enabling the &amp;amp;lsquo;EnableMixerLogging=&amp;amp;rsquo; directive in rd.conf(5)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added checks to the &amp;amp;lsquo;Add Scheduler Code&amp;amp;rsquo; dialog in rdadmin(1) to enforce the use of only alphanumeric characters plus space&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Refactored the &amp;amp;lsquo;RDSoundPanel&amp;amp;rsquo;, &amp;amp;lsquo;RDPanelButton&amp;amp;rsquo; and &amp;amp;lsquo;RDButtonPanel&amp;amp;rsquo; classes to avoid races when changing the current Rivendell user&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Added code to the &amp;amp;lsquo;Unload Playback&amp;amp;rsquo; [&amp;amp;lsquo;UP&amp;amp;rsquo;] CAE command to mute all output port volume controls from the subject output stream&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Added a feature to the &amp;amp;lsquo;Set Output Port&amp;amp;rsquo; [&amp;amp;lsquo;OP&amp;amp;rsquo;] CAE command where passing a &amp;amp;lsquo;-1&amp;amp;rsquo; for the &amp;amp;lsquo;port-num&amp;amp;rsquo; argument will cause all output stream volume controls for the specified stream to be muted&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Added a &amp;amp;lsquo;RDJsonEscape(const QString &amp;amp;str)&amp;amp;rsquo; function in &amp;amp;lsquo;lib/rdweb.cpp&amp;amp;rsquo; and &amp;amp;lsquo;lib/rdweb.h&amp;amp;rsquo;&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Refactored the &amp;amp;lsquo;RDCae&amp;amp;rsquo; class to use the native BSD sockets API instead of &amp;amp;lsquo;QTcpSocket&amp;amp;rsquo;&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Added a &amp;amp;lsquo;gpio_fuzz_test&amp;amp;rsquo; test harness in &amp;amp;lsquo;tests/&amp;amp;rsquo;&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Added a &amp;amp;lsquo;rml_torture_test&amp;amp;rsquo; test harness in &amp;amp;lsquo;tests/&amp;amp;rsquo;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:orange&amp;quot;&amp;gt;Documentation&amp;lt;/font&amp;gt;: Added a rdpanel(1) man page&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:orange&amp;quot;&amp;gt;Documentation&amp;lt;/font&amp;gt;: Clarified the entries for the &amp;amp;lsquo;Pause Panel&amp;amp;rsquo; [&amp;amp;lsquo;PU&amp;amp;rsquo;] and &amp;amp;lsquo;Stop Panel&amp;amp;rsquo; [&amp;amp;lsquo;PT&amp;amp;rsquo;] RMLs in the Operations Guide&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:orange&amp;quot;&amp;gt;Documentation&amp;lt;/font&amp;gt;: Corrected typos in the Operations Guide for the &amp;amp;lsquo;Duck Panel Button&amp;amp;rsquo; [&amp;amp;lsquo;PD&amp;amp;rsquo;] and &amp;amp;lsquo;Set Duck Level&amp;amp;rsquo; [&amp;amp;lsquo;MD&amp;amp;rsquo;] RMLs that incorrectly specified &amp;amp;lsquo;dBFS&amp;amp;rsquo; as the unit for the &amp;amp;lsquo;level&amp;amp;rsquo; parameter&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:orange&amp;quot;&amp;gt;Documentation&amp;lt;/font&amp;gt;: Corrected an error in the invocation specification for the &amp;amp;lsquo;Insert Cart&amp;amp;rsquo; [&amp;amp;lsquo;PX&amp;amp;rsquo;] RML in the Operations Guide&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:orange&amp;quot;&amp;gt;Documentation&amp;lt;/font&amp;gt;: Added &amp;amp;lsquo;Realms&amp;amp;rsquo; to &amp;amp;lsquo;The Rivendell Object Paradigm&amp;amp;rsquo; section of the Operations Guide&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:orange&amp;quot;&amp;gt;Documentation&amp;lt;/font&amp;gt;: Added a note about RDS configuration settings to the exemplar file for the &amp;amp;lsquo;pypad_nautel.py&amp;amp;rsquo; plug-in&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.1.0 (2023-08-09) ===&lt;br /&gt;
&lt;br /&gt;
* Database verson '''371'''&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed regressions that caused spontaneous resizing of the main window in rdairplay(1) when switching between Sound Panel and Voice Tracker views on the right-hand side&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in rdlogmanager(1) that caused the pie chart to fail to be drawn correctly upon first displaying the &amp;amp;lsquo;Edit Clock&amp;amp;rsquo; dialog&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a fencepost bug in the &amp;amp;lsquo;Render Log&amp;amp;rsquo; dialog in rdlogedit(1) that caused rendered log to include the cart immediately after the end of the selected section when setting the &amp;amp;lsquo;Include&amp;amp;rsquo; dropdown to &amp;amp;lsquo;Only Selected Events&amp;amp;rsquo;&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdlibrary(1) that could cause the &amp;amp;lsquo;Add Cart&amp;amp;rsquo; dialog to display the incorrect type for the selected group&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdcastmanager(1) where changes to podcast metadata would fail to be reflected in the feed list&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in rdlogmanager(1) that caused records to be omitted from reports using the &amp;amp;lsquo;CBSI DeltaFlex Traffic Reconciliation v2.01&amp;amp;rsquo; export filter&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in rdlibrary(1) that caused cart deletion to fail with the message &amp;quot;Voicetrack Found&amp;quot;&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added an &amp;amp;lsquo;ID&amp;amp;rsquo; column to the &amp;amp;lsquo;Podcast Item List&amp;amp;rsquo; dialog in rdcastmanager(1)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added three columns to the library list in rdlibrary(1): &amp;amp;lsquo;Plays&amp;amp;rsquo;, &amp;amp;lsquo;Last Played&amp;amp;rsquo;, and &amp;amp;lsquo;Ingested On&amp;amp;rsquo;&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added support for updating library metadata on subsequent dropbox imports&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:orange&amp;quot;&amp;gt;Documentation&amp;lt;/font&amp;gt;: Added a rivendell(7) manual page&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4.0.2 (2023-06-23) ===&lt;br /&gt;
&lt;br /&gt;
* Database verson '''370'''&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in the voice tracker that caused the waveform displays to be greyed out out immediately after creating a new track marker&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdcatchd(8) that would cause a segfault after reception of a &amp;amp;lsquo;Start Record Deck&amp;amp;rsquo; [&amp;amp;lsquo;RS&amp;amp;rsquo;] RML&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in rdcatch(1) that caused a phantom event entry to appear in the Event List while processing the &amp;amp;lsquo;Start Record Deck&amp;amp;rsquo; [&amp;amp;lsquo;RS&amp;amp;rsquo;] RML&lt;br /&gt;
&lt;br /&gt;
=== 4.0.1 (2023-06-16) ===&lt;br /&gt;
&lt;br /&gt;
* Database verson '''370'''&lt;br /&gt;
&lt;br /&gt;
Rivendell version 4, in development for more than two years, brings many &amp;amp;ldquo;under-the-hood&amp;amp;ldquo; as well as visible changes to the system. This list is incomplete, but attempts to highlight the most important changes. Please edit this page if you see something missing.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Many bugs have been fixed; many more have likely been introduced&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: switch to graphical programming library [https://www.qt.io/ Qt] version [https://doc.qt.io/qt-5/ 5].&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: new layout of the RDAirPlay window: You may now resize the RDAirPlay window; note however that RDAirPlay has a '''minimum size''' of 1310x870 pixels. RDAirPlay also received a revamped level metering system; the side effect of this is that the meters are now oriented vertically instead of horizontally&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: the minimum supported display (monitor) size is 1680 x 1050 pixels; displays smaller than this may cause problems with some Rivendell applications&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: the &amp;amp;lsquo;Edit Markers&amp;amp;rsquo; window has changed significantly; see the current manual for instructions on setting, changing, and deleting markers from Cuts&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Rivendell v4.x aims for full compatibility with MySQL 8.0 and earlier versions in their default installation configurations.&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: RDPanel, as well as several windows within RDAdmin now allow for dynamic window sizing&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Date and time presentation formats can now be customized on the basis of site perferences&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: It is now possible to disable grid processing on a service-by-service basis, thus permitting a complete schedule to be generated by an external music scheduler. See the &amp;amp;lsquo;Bypassing Grid Processing&amp;amp;rsquo; section in the &amp;amp;lsquo;Generating Logs and Reports with RDLogManager&amp;amp;rsquo; section of the Operation Guide for details&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added JACK environment variable &amp;lt;tt&amp;gt;JACK_PROMISCUOUS_SERVER&amp;lt;/tt&amp;gt; to the Rivendell systemd service unit file (''rivendell.service''); this enables JACK interaction between the Rivendell Core Audio Engine Daemon (''caed'') and applications launched by non-root users (See [[Jack|this page]] for more details)&lt;br /&gt;
*  &amp;lt;font style=&amp;quot;color:orange&amp;quot;&amp;gt;Documentation&amp;lt;/font&amp;gt;: The documentation has been edited and brought up to date with respect to the current code and functionality of the system&lt;br /&gt;
&lt;br /&gt;
== Version 3.X Changes ==&lt;br /&gt;
&lt;br /&gt;
=== 3.6.8 (2023-11-21) ===&lt;br /&gt;
&lt;br /&gt;
* Database verson '''347'''&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a long-standing (and annoying) bug in ripcd(8) that caused memory to be leaked when processing RMLs&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in the PyPAD API that caused incorrect date/time resolutions when using the &amp;amp;lsquo;MMM&amp;amp;rsquo; wildcard&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Changed the value of the &amp;amp;lsquo;Password=&amp;amp;rsquo; directive in the &amp;amp;lsquo;[mySQL]&amp;amp;rsquo; section of &amp;amp;lsquo;conf/rd.conf-sample&amp;amp;rsquo; to &amp;amp;lsquo;hackme&amp;amp;rsquo;&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added the API documentation to the &amp;amp;lsquo;rivendell-opsguide&amp;amp;rsquo; RPM package&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added API documentation and man pages to the &amp;amp;lsquo;rivendell-opsguide&amp;amp;rsquo; RPM package&lt;br /&gt;
&lt;br /&gt;
=== 3.6.7 (2023-01-27) ===&lt;br /&gt;
&lt;br /&gt;
* Database verson '''347'''&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed broken waveform generation on ARM architectures&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdcatchd(8) that caused record events to be captured with the incorrect sampling rate&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in the podcasting subsystem that broke validation of the &amp;amp;lsquo;direct&amp;amp;rsquo; name space&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdlibrary(1) that caused the field names for the &amp;amp;lsquo;FILENAME&amp;amp;rsquo; and &amp;amp;lsquo;LENGTH&amp;amp;rsquo; fields in the &amp;amp;lsquo;Cart Data Dump (CSV)&amp;amp;rsquo; report to be corrupted&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdservice(8) that could cause dropboxes to be instantiated with invalid segue level values&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdlogmanager(1) that caused the slop factors for inline traffic events to fail to be applied when importing a traffic log&lt;br /&gt;
*  &amp;lt;font style=&amp;quot;color:orange&amp;quot;&amp;gt;Documentation&amp;lt;/font&amp;gt;: Corrected errors in the WebAPI documentation regarding the argument type of the &amp;amp;lsquo;LINE&amp;amp;lt;n&amp;amp;gt;_TIME_TYPE&amp;amp;rsquo; field in the &amp;amp;lsquo;SaveLog&amp;amp;rsquo; call&lt;br /&gt;
&lt;br /&gt;
=== 3.6.6 (2022-10-02) ===&lt;br /&gt;
&lt;br /&gt;
* Database verson '''347'''&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdrssd(8) that caused a podcast episode to be deleted immediately after being made active if the &amp;amp;lsquo;Air Date/Time&amp;amp;rsquo; was set for the future and &amp;amp;lsquo;Item Expires&amp;amp;rsquo; was set to &amp;amp;lsquo;No&amp;amp;rsquo; in the &amp;amp;lsquo;Editing Item&amp;amp;rsquo; dialog&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdcastmanager(1) that caused incorrect ordering when sorting by the &amp;amp;lsquo;Start&amp;amp;rsquo; and &amp;amp;lsquo;Expiration&amp;amp;rsquo; columns in the &amp;amp;lsquo;Podcast Item List&amp;amp;rsquo; dialog&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in the CDDB parser that caused it to emit an error message when processing a 202 response&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in PyPAD where resolution of datetimes could be incorrect&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdservice(8) that could cause a segfault (crash) when started with a previous instance running&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdlogmanager(1) that could cause a segfault (crash) when merging a log&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdrssd(8) that caused incorrect error data to be logged&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in the Disc Ripper in rdlibrary(1) that caused manual changes to track metadata to be incorrectly applied&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added &amp;amp;lsquo;--by-isci&amp;amp;rsquo; and &amp;amp;lsquo;--dump-isci-xref&amp;amp;rsquo; options to rdimport(1) and modified rdimport(1) to allow the &amp;amp;lsquo;--by-isci&amp;amp;rsquo; option to take a service name option&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added a &amp;amp;lsquo;StayOnTop=&amp;amp;rsquo; directive to the &amp;amp;lsquo;[SoftKeys]&amp;amp;rsquo; section of rd.conf(5)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Changed the default &amp;amp;lsquo;--process-interval=&amp;amp;rsquo; value from 60 seconds to 30 seconds in rdrssd(8)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added &amp;amp;lsquo;RDListView::DateTimeSort&amp;amp;rsquo; to the &amp;amp;lsquo;RDListView::SortType enumeration&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added explicit processing for 201, 230, 401, 402, 403, 409, 431, 432, 433, 434, 501, 502, 503 and 530 returns in the CDDB parser&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added an Online Feed Report to rdcastmanager(1)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Modified the full disc ripper and the per-track ripper in rdlibrary(1) to use CD-Text&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Renamed the &amp;amp;lsquo;CD Metadata Source&amp;amp;rsquo; control in rdlibrary(1) to use &amp;amp;lsquo;CDDB&amp;amp;rsquo; instead of &amp;amp;lsquo;FreeDB&amp;amp;rsquo; when configuring CDDB lookups&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added support for a &amp;amp;lsquo;SuppressLinkParameterInheritance=&amp;amp;rsquo; directive in the &amp;amp;lsquo;[Hacks]&amp;amp;rsquo; section of rd.conf(5)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Added code to the podcasting subsystem to log extended curl(1) information to syslog&lt;br /&gt;
&lt;br /&gt;
=== 3.6.5 (2022-03-18) ===&lt;br /&gt;
&lt;br /&gt;
* Database verson '''347'''&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdimport(1) that could create duplicate Scheduler Code entries when using the &amp;amp;lsquo;--to-cart&amp;amp;rsquo; and &amp;amp;lsquo;--add-scheduler-code&amp;amp;rsquo; switches simultaneously&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in the &amp;amp;lsquo;rdxport&amp;amp;rsquo; service that caused the &amp;amp;lsquo;ListLog&amp;amp;rsquo; WebAPI call to return null values in the &amp;amp;lsquo;description&amp;amp;rsquo;, &amp;amp;lsquo;isrc&amp;amp;rsquo;, &amp;amp;lsquo;isci&amp;amp;rsquo;, &amp;amp;lsquo;recordingMbId&amp;amp;rsquo; and &amp;amp;lsquo;releaseMbId&amp;amp;rsquo; fields&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added a &amp;amp;lsquo;direct&amp;amp;rsquo; namespace to the &amp;amp;lsquo;Apple iTunes&amp;amp;rsquo; and &amp;amp;lsquo;Apple iTunes + Superfeed&amp;amp;rsquo; RSS schemas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3.6.4 (2022-02-22) ===&lt;br /&gt;
&lt;br /&gt;
Note: version 3.6.3 was tagged, but not released.&lt;br /&gt;
&lt;br /&gt;
* Database verson '''347'''&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdlogmanager(1) that caused leading event attributes to fail to be preserved when suppressing Music of Traffic import markers&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in the rdxport &amp;amp;lsquo;Import&amp;amp;rsquo; service that could result in incorrect end marker placement when processing variable bit rate (VBR) MPEG files&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed an arithmetic overflow bug in &amp;amp;lsquo;RDWaveFile&amp;amp;rsquo; that could cause the play length of MPEG-encoded to be incorrectly calculated&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdimport(1) that caused premature validation of metadata&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdxport(8) that caused the &amp;amp;lsquo;SaveLog&amp;amp;rsquo; WebAPI call to fail if the target log didn&amp;amp;rsquo;t exist&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rddbmgr(8) that could cause the 346=&amp;amp;gt;347 schema conversion to hang indefinitely with databases containing large cart libraries&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added a &amp;amp;lsquo;SuppressMusicImportLinks=&amp;amp;rsquo; directive to the [Hacks] section of rd.conf(5)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added support for [NowGroups] and [NextGroups] sections in PyPAD script configurations&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Deprecated use of the &amp;amp;lsquo;Transmit Now &amp;amp; Next data&amp;amp;rsquo; checkbox in the &amp;amp;lsquo;Group&amp;amp;rsquo; dialog in rdadmin(1)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added a &amp;amp;lsquo;SaveWebgetFilesDirectory=&amp;amp;rsquo; directive to rd.conf(5)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Modified the mode of files generated by the rd-conf(5) &amp;amp;lsquo;SaveWebgetFilesDirectory=&amp;amp;rsquo; configuration directive from 0440 to 0664&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added a &amp;amp;lsquo;linkLength&amp;amp;rsquo; field and a &amp;amp;lsquo;graceTime&amp;amp;rsquo; field to the return XML for the &amp;amp;lsquo;ListLog&amp;amp;rsquo; WebAPI call&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added a &amp;amp;lsquo;Log Listing (CSV)&amp;amp;rsquo; report to rdlogedit(1)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added a &amp;amp;lsquo;--print-progress&amp;amp;rsquo; switch to rddbmgr(8)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Overhauled the code for reading MPEG frame headers in &amp;amp;lsquo;RDWaveFile&amp;amp;rsquo;&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Increased the import process timeout for the WebGet service to 1200 seconds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3.6.2 (2021-07-30) ===&lt;br /&gt;
* Database verson '''347'''&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added support for system dark themes in RDAirplay&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdlogedit(1) that could cause a crash when attempting to play a non-audio event in the &amp;amp;lsquo;Voice Tracker&amp;amp;rsquo; dialog&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdimport(1) that caused the cart title uniqueness check to be applied to the incorrect string when the &amp;amp;lsquo;--set-string-title=&amp;amp;rsquo; switch was used&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3.6.1 (2021-06-06) ===&lt;br /&gt;
* Database verson '''347'''&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdimport(1) that could cause a crash when the &amp;amp;lsquo;--fix-broken-formats&amp;amp;rsquo; switch is used&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added syslog DEBUG messages around the start/stop of ephemeral processes in rdservice(8)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added an &amp;amp;lsquo;--initial-maintenance&amp;amp;rsquo; switch to rdservice(8)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added an &amp;amp;lsquo;--force-system-maintenance&amp;amp;rsquo; switch to rdservice(8)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Modified rdmaint(8) to enable it to operate even when the Rivendell services are not running&lt;br /&gt;
&lt;br /&gt;
=== 3.6.0 (2021-05-15) ===&lt;br /&gt;
* Database verson '''347'''&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed title separation in rdlogmanager(1) scheduler&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed bug in library code ''lib/rdwavefile.cpp'' that copied CartChunk Cut ID past the end of the first &amp;quot;NULL&amp;quot; character&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdairplay(1) that caused the Talk Timer to fail to be populated when adding new carts to a log&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in the Cart Selector Dialog that made it impossible to enter an apostrophe character in the filter search line&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdimport(1) where the title of an existing cart would be overwritten with a default title even when no title was found in the file metadata&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in &amp;amp;lsquo;RDFlacDecode&amp;amp;rsquo; that caused conversion of files with names containing non-ASCII characters to fail&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdadmin(1) where clicking the &amp;amp;lsquo;OK&amp;amp;rsquo; button in the &amp;amp;lsquo;Edit Switcher&amp;amp;rsquo; dialog would cause an error dialog to appear with a &amp;amp;lsquo;primary serial device not active&amp;amp;rsquo; warning. The following devices are affected: &amp;amp;lsquo;Local GPIO&amp;amp;rsquo;, &amp;amp;lsquo;Local Audio Adapter&amp;amp;rsquo;, &amp;amp;lsquo;Logitek vGuest&amp;amp;rsquo;, &amp;amp;lsquo;Livewire LWRP Audio&amp;amp;rsquo;, and &amp;amp;lsquo;Kernel GPIO&amp;amp;rsquo;&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Modified rdimport(1) and the Webget service so as to send e-mail reports to the address of the current Rivendell user in addition to the group&amp;amp;rsquo;s Notification E-Mail Address&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added a &amp;amp;lsquo;STACK_LINES.TITLE&amp;amp;rsquo; field to the database&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added the value of the detected CartChunk CutID to the error message generated when rejecting said CutID as invalid when using the &amp;amp;lsquo;--use-cartchunk-cutid&amp;amp;rsquo; switch in rdimport(1)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added code to print the value of the detected CartChunk CutID when using both the &amp;amp;lsquo;--use-cartchunk-cutid&amp;amp;rsquo; and &amp;amp;lsquo;--verbose&amp;amp;rsquo; flags in rdimport(1)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Created pypad_ino713_tcp based upon pypad_ino713, converting from UDP to TCP. Added an adjustable delay to account for broadcast air delays&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Created pypad_nautel based upon pypad_ino713_tcp, including RDS parameters from documentation. Includes delay as above&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added a new &amp;amp;lsquo;RadioTraffic.com Traffic Reconciliation&amp;amp;rsquo; report. Renamed the existing &amp;amp;lsquo;RadioTraffic.com Traffic Reconciliation&amp;amp;rsquo; to &amp;amp;lsquo;Original RadioTraffic.com Traffic Reconciliation (DEPRECATED)&amp;amp;rsquo;&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Changed the way in which the VU Meter UDP port is chosen. One can now specify the base port number and the maximum number of UDP ports to consider when caed(8) sets up the VU meter port&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:orange&amp;quot;&amp;gt;Documentation&amp;lt;/font&amp;gt;: Documented the &amp;amp;lsquo;MeterPortBaseNumber=&amp;amp;rsquo; and &amp;amp;lsquo;MeterPointRange=&amp;amp;rsquo; directives in the rd.conf(5) man page&lt;br /&gt;
&lt;br /&gt;
=== 3.5.0 (2020-12-12) ===&lt;br /&gt;
* Database verson '''346'''&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Corrected the column settings in RDAdmin &amp;gt; Manage Hosts &amp;gt; [host] &amp;gt; Dropboxes&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed regression with &amp;quot;Scheduler Code:&amp;quot; label overlapping &amp;quot;Group&amp;quot; combobox in rdlibrary(1)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed several bugs in rdadmin(1) that messed with passwords, user settings, and other important settings&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed several bugs in rdlogmanager(1) that caused all kinds of mischief&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdairplay(1) where copying a log event using the &amp;amp;lsquo;Copy&amp;amp;rsquo; button would result in the new event always getting a &amp;amp;lsquo;PLAY&amp;amp;rsquo; transition&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rddbmgr(8) that could cause database corruption problems&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed bugs in rdimport(1) that caused incorrect exit codes to be emitted when a non-existent group was specified, and that caused generation of double error messages when processing invalid audio files&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdmonitor(1) that caused false indications of a failed audio store when used with autofs(8)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Major overhaul of Rivendell&amp;amp;rsquo;s podcast handling features; see the ChangeLog for all the details&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Modified the GVC7000 switcher driver to insert 50 mS pauses between protocol commands&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Allow RN Macro to run when Rivendell daemons running as non-root&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Many changes to rdadmin(1), including:&lt;br /&gt;
:* Added whitespace to the set of banned characters for service names&lt;br /&gt;
:* Added a &amp;amp;lsquo;SSH Ident. File&amp;amp;rsquo; control to the &amp;amp;lsquo;Host&amp;amp;rsquo; dialog&lt;br /&gt;
:* Added an &amp;amp;lsquo;Inline Traffic Inheritance&amp;amp;rsquo; control to the &amp;amp;lsquo;Edit Service&amp;amp;rsquo; dialog&lt;br /&gt;
:* Added type icons to the &amp;amp;lsquo;Imported Events&amp;amp;rsquo; list in the &amp;amp;lsquo;Test Import&amp;amp;rsquo; dialog&lt;br /&gt;
:* Renamed the &amp;amp;lsquo;Inline Traffic Inheritance&amp;amp;rsquo; control to &amp;amp;lsquo;Inline Traffic Start/Length&amp;amp;rsquo; and moved it to the &amp;amp;lsquo;Music Data Import&amp;amp;rsquo; section of the &amp;amp;lsquo;Edit Service&amp;amp;rsquo; dialog&lt;br /&gt;
:* Added an &amp;amp;lsquo;Encoder Profiles&amp;amp;rsquo; dialog&lt;br /&gt;
:* Renamed the &amp;amp;lsquo;Note Cart String&amp;amp;rsquo; controls to &amp;amp;lsquo;Insert Marker String&amp;amp;rsquo; in the &amp;amp;lsquo;Edit Service dialog&lt;br /&gt;
:* Added an &amp;amp;lsquo;Origin E-Mail Address&amp;amp;rsquo; control to the &amp;amp;lsquo;System-Wide Settings&amp;amp;rsquo; dialog&lt;br /&gt;
:* Added a &amp;amp;lsquo;Notification E-Mail Addresses&amp;amp;rsquo; control to the &amp;amp;lsquo;Group&amp;amp;rsquo; dialog&lt;br /&gt;
:* Added a &amp;amp;lsquo;Send e-mail reports&amp;amp;rsquo; checkbox to the &amp;amp;lsquo;Dropbox Configuration&amp;amp;rsquo; dialog&lt;br /&gt;
:* Added &amp;amp;lsquo;E-Mail Address&amp;amp;rsquo;, &amp;amp;lsquo;Phone Number&amp;amp;rsquo; and &amp;amp;lsquo;Local Auth&amp;amp;rsquo; columns to the &amp;amp;lsquo;Users&amp;amp;rsquo; list in the &amp;amp;lsquo;Rivendell User List&amp;amp;rsquo; dialog&lt;br /&gt;
:* Added an &amp;amp;lsquo;Administer RSS Feeds&amp;amp;rsquo; checkbox to the &amp;amp;lsquo;Administrative Rights&amp;amp;rsquo; section of the &amp;amp;lsquo;User&amp;amp;rsquo; dialog&lt;br /&gt;
:* Added a deprecation warning for the &amp;amp;lsquo;Allow Duplicate Cart Titles&amp;amp;rsquo; and &amp;amp;lsquo;Auto-Correct Duplicate Cart Titles&amp;amp;rsquo; checkboxes on the &amp;amp;lsquo;System-Wide Settings&amp;amp;rsquo; dialog&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added support for FTPS protocol for uploading, downloading, and Feed management&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Significant update to the Rivendell Web interfaces (Web API, WebGet service, rivwebcapi API, etc.)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added &amp;amp;lsquo;--scheduler-code=&amp;amp;rsquo; switch to rdexport(1)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added generation of an &amp;amp;lsquo;RDLogManager Error Report&amp;amp;rsquo; when errors are detected when importing an external scheduler file in rdlogmanager(1)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Restored operation of Label/Note carts in rdlogmanager(1)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Updated rdservice(8) to use standard exit code defines&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Implemented the &amp;amp;lsquo;--verbose&amp;amp;rsquo; switch for rdmaint(8)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added a sample Fail2Ban jail filter for the WebAPI in &amp;amp;lsquo;conf/rivendell-webapi.conf&amp;amp;rsquo;&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added command line options &amp;amp;lsquo;--output-pattern&amp;amp;rsquo;, &amp;amp;lsquo;--ticket=&amp;amp;rsquo;, &amp;amp;lsquo;--send-mail&amp;amp;rsquo; and &amp;amp;lsquo;--mail-per-file&amp;amp;rsquo; to rdimport(1)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added the name of the import file to schedule import failure reports&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:orange&amp;quot;&amp;gt;Documentation&amp;lt;/font&amp;gt;: Documented the &amp;amp;lsquo;%%&amp;amp;rsquo; filepath wildcard in the Operations Guide&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:orange&amp;quot;&amp;gt;Documentation&amp;lt;/font&amp;gt;: Added an &amp;amp;lsquo;RDCastManager&amp;amp;rsquo; chapter to the Operations Guide&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:orange&amp;quot;&amp;gt;Documentation&amp;lt;/font&amp;gt;: Revised the &amp;amp;lsquo;Managing Services&amp;amp;rsquo; section of the Operations Guide&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:orange&amp;quot;&amp;gt;Documentation&amp;lt;/font&amp;gt;: Rewrote the &amp;amp;lsquo;Webget&amp;amp;rsquo; chapter of the Operations Guide to conform to changes in Webget&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:orange&amp;quot;&amp;gt;Documentation&amp;lt;/font&amp;gt;: Added a &amp;amp;lsquo;Configuring Webget&amp;amp;rsquo; section to the Operations Guide&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:orange&amp;quot;&amp;gt;Documentation&amp;lt;/font&amp;gt;: Removed the &amp;amp;lsquo;Cart Data Dump (fixed width)&amp;amp;rsquo; from the Operations Guide&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:orange&amp;quot;&amp;gt;Documentation&amp;lt;/font&amp;gt;: Documented user-facing changes to the &amp;amp;lsquo;System-Wide Settings&amp;amp;rsquo; dialog, the &amp;amp;lsquo;Rivendell Group List&amp;amp;rsquo; and the &amp;amp;lsquo;Group&amp;amp;rsquo; dialogs in rdadmin(1) in the Operations Guide&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:orange&amp;quot;&amp;gt;Documentation&amp;lt;/font&amp;gt;: Documented the &amp;amp;lsquo;Send e-mail reports&amp;amp;rsquo; checkbox in the &amp;amp;lsquo;Dropbox Configuration&amp;amp;rsquo; dialog in rdadmin(1) in the Operations Guide&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Prepended &amp;amp;lsquo;RD_&amp;amp;rsquo; to the names of all common Javascript functions in &amp;amp;lsquo;web/common/utils.js&amp;amp;rsquo;&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Added a &amp;amp;lsquo;webget&amp;amp;rsquo; subpackage to the &amp;amp;lsquo;make rpm&amp;amp;rsquo; target&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:blue&amp;quot;&amp;gt;Code (internal) change&amp;lt;/font&amp;gt;: Refactored the &amp;amp;lsquo;Run Script&amp;amp;rsquo; [&amp;amp;rsquo;RN&amp;amp;rsquo;] RML to invoke scripts via the system shell, this change also removed the dependency on runuser(1)&lt;br /&gt;
&lt;br /&gt;
=== 3.4.1 (2020-07-21) ===&lt;br /&gt;
* Database verson '''317'''&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added a &amp;amp;lsquo;Results Report&amp;amp;rsquo; report in rdadmin(1)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Removed the checkbox from the &amp;amp;lsquo;Delete&amp;amp;rsquo; right-click menu item in the &amp;amp;lsquo;Edit Event&amp;amp;rsquo; dialog in rdlogmanager(1)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Modified &amp;amp;lsquo;RDWaveFile&amp;amp;rsquo; to work around known fencepost errors in WAV files generated by &amp;quot;Sonic Studio soundBlade&amp;quot; by &amp;quot;PME Mastering, Inc.&amp;quot;&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Modified the &amp;amp;lsquo;Edit Event&amp;amp;rsquo; dialog in rdlogmanager(1) to show &amp;amp;lsquo;[auto]&amp;amp;rsquo; as the transition type for the leading event in Pre-/Post-Import lists&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdlibrary(1) that caused cuts to be incorrectly sorted when scheduled &amp;amp;lsquo;By Specified Order&amp;amp;rsquo;&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in the Rivendell command line apps that caused value-only arguments containing &amp;amp;lsquo;=&amp;amp;rsquo; characters to be incorrectly parsed&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in the Podcast Manager, Library Exporter and Web API that caused an error when processing multipart-mime submissions containing &amp;amp;lsquo;=&amp;amp;rsquo; characters&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdairplay(1) where attempting to audition an audio cart with a disabled cue output would crash the application&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in rdairplay(1) that caused the &amp;amp;lsquo;Forced Segue&amp;amp;rsquo; setting in rdadmin(1) to be ignored when executing an event with a hard start attribute&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdairplay(1) where a paused event could not be removed by dropping the empty cart on it&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdairplay(1) that cause incorrect pie timer indications after adding or deleting events to a running log&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdlibrary(1) that would cause a crash when attempting to delete a range of cuts, one of which was in the clipboard&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a math bug in rdairplay(1) that caused the estimated stop-down times in the post point widget to be incorrect after adding or removing events from a running log&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdadmin(1) that made it impossible to enter useful strings in the &amp;amp;lsquo;WaveForm Caption&amp;amp;rsquo; control on the &amp;amp;lsquo;Edit RDLogEdit&amp;amp;rsquo; dialog&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in RDRenderer that caused segue transitions to be rendered without regard to the &amp;amp;lsquo;No Fade on Segue Out&amp;amp;rsquo; checkbox in the &amp;amp;lsquo;Edit Audio&amp;amp;rsquo; dialog&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in ripcd(8) that caused connections to ModbusTCP devices to fail to be properly restored by the connection watchdog&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in the &amp;amp;lsquo;Edit Event&amp;amp;rsquo; dialog in rdlogmanager(1) that caused the first cart transition type to be incorrect when the &amp;amp;lsquo;Pre-Import Carts&amp;amp;rsquo; list was populated&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in the &amp;amp;lsquo;Add Next&amp;amp;rsquo; [&amp;amp;rsquo;PX&amp;amp;rsquo;] RML that failed to return an error when an invalid offset value was supplied&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in the &amp;amp;lsquo;Add Next&amp;amp;rsquo; [&amp;amp;rsquo;PX&amp;amp;rsquo;] RML that failed to honor the &amp;amp;lsquo;Default Trans. Type&amp;amp;rsquo; setting in the &amp;amp;lsquo;Configure RDAirPlay&amp;amp;rsquo; dialog in rdadmin(1)&lt;br /&gt;
&lt;br /&gt;
=== 3.4.0 (2020-05-19) ===&lt;br /&gt;
* Database verson '''317'''&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in rdairplay(1) that caused two events to be started by a single spacebar tap if a SoundPanel event had been played previously&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdlogmanager(1) that caused the initial event in an imported set to fail receive the proper time and transition type if the &amp;amp;lsquo;Include Import Markers in Finished Logs&amp;amp;rsquo; checkbox in rdadmin(1) had not been ticked&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in rdexport(1) that caused exported file names to be constructed improperly&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdlogmanager(1) that caused &amp;amp;lsquo;Make Post Point&amp;amp;rsquo; label to be displayed without last &amp;amp;lsquo;t&amp;amp;rsquo;&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdairplay(1) where timer was not set properly when crossing midnight&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in the &amp;amp;lsquo;List GPIs&amp;amp;rsquo; dialog in rdadmin(1) that prevented changes in GPI assignments from being propagated to the underlying device&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in the &amp;amp;lsquo;Software Authority&amp;amp;rsquo; driver that caused autodetection of the number of GPIOs in a router to be unreliable&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in &amp;amp;lsquo;RDEventLine&amp;amp;rsquo; that caused the &amp;amp;lsquo;Append Log&amp;amp;rsquo; [&amp;amp;rsquo;AL&amp;amp;rsquo;] RML to append a copy of the currently loaded log instead of the one specified in the RML command&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdlogedit(1) that caused garbled text to appear when &amp;amp;lsquo;Start Immediately&amp;amp;rsquo; was selected in the &amp;amp;lsquo;Edit Log Entry&amp;amp;rsquo; dialog box&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression that broke the ability to scroll through Sound Panel panels by means of the mouse wheel&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Modified rdairplay(1) to always scroll log to the top when using the hour selector&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Modified rdlogmanager(1) to disable merge buttons if the selected log does not contain any import links&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Modified rdadmin(1) Edit Service dialog to display built-in traffic and music import template values&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added &amp;quot;Copy To Custom&amp;quot; buttons to rdadmin(1) Edit Service dialog&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Changed the layout of the &amp;amp;lsquo;Editing Event&amp;amp;rsquo; dialog in rdlogmanager&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Removed the &amp;amp;lsquo;Post Point&amp;amp;rsquo; checkbox from the &amp;amp;lsquo;Editing Event&amp;amp;rsquo; dialog in rdlogmanager(1)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Renamed the &amp;amp;lsquo;REMARKS&amp;amp;rsquo; field to &amp;amp;lsquo;USER NOTES&amp;amp;rsquo; in the &amp;amp;lsquo;Editing Event&amp;amp;rsquo; and the &amp;amp;lsquo;Edit Clock&amp;amp;rsquo; dialogs in rdlogmanager(1)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added a &amp;amp;lsquo;Trans&amp;amp;rsquo; column to the event list in the &amp;amp;lsquo;Edit Clock&amp;amp;rsquo; and the &amp;amp;lsquo;List Events&amp;amp;rsquo; dialogs in rdlogmanager(1)&lt;br /&gt;
&lt;br /&gt;
=== 3.3.0 (2020-03-16) ===&lt;br /&gt;
* Database verson '''314'''&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed regressions in the following switcher drivers that could cause deadlocks and intermittent operation&lt;br /&gt;
:* BroadcastTools SS16.4&lt;br /&gt;
:* BroadcastTools SS 4.2&lt;br /&gt;
:* BroadcastTools SS4.4&lt;br /&gt;
:* BroadcastTools SS 8.2&lt;br /&gt;
:* BroadcastTools ACS8.2&lt;br /&gt;
:* BroadcastTools ADMS 44.22&lt;br /&gt;
:* BroadcastTools GPI-16&lt;br /&gt;
:* BroadcastTools SRC-16&lt;br /&gt;
:* BroadcastTools SRC-8 III&lt;br /&gt;
:* BroadcastTools SS 4.1 MLR&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in the implementation of the &amp;amp;lsquo;Set Serial Trap&amp;amp;rsquo; [&amp;amp;lsquo;SI&amp;amp;rsquo;] RML that could cause deadlocks and intermittent operation&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdairplay(1) that could cause random segfaults when updating the Label Widget&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug with the &amp;amp;lsquo;%y&amp;amp;rsquo; metadata wildcard where garbage would be returned if a valid year had not been set&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in rdlogmanager(1) that caused trailer whitespace to be generated in the &amp;amp;lsquo;EXT_DATA&amp;amp;rsquo;, &amp;amp;lsquo;EXT_EVENT&amp;amp;rsquo;, &amp;amp;lsquo;EXT_ANNC_TYPE&amp;amp;rsquo; and &amp;amp;lsquo;EXT_CART_NAME&amp;amp;rsquo; log fields when importing from a CounterPoint format log&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed the layout of the &amp;amp;lsquo;Matching Carts&amp;amp;rsquo; field in rdlibrary(1)&amp;amp;rsquo;s main window when Realtime Filtering is disabled&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdairplay(1) that would cause a hard-timed log event with a &amp;amp;lsquo;wait&amp;amp;rsquo; parameter set to attempt to play the event twice&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rddbmgr(8) that threw a SQL error when attempting to modify a DB containing tables set to use character set UTF-8 to schema 297&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a race in ripcd(8) that caused arguments to the &amp;amp;lsquo;Run Shell Command&amp;amp;rsquo; [&amp;amp;lsquo;RN&amp;amp;rsquo;] macro to be corrupted&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in the &amp;amp;lsquo;Edit Event&amp;amp;rsquo; dialog in rdlogmanager(1) that caused the Transition Type dropdown to be greyed-out when the &amp;amp;lsquo;IMPORT&amp;amp;rsquo; controls were set to use the built-in music scheduler&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added a &amp;amp;lsquo;delta-seconds&amp;amp;rsquo; modifier to Filepath Wildcards to enable positive and negative time offsets&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Removed support for CD-TEXT from the CD rippers&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added support for &amp;amp;lsquo;MusicBrainz&amp;amp;rsquo; CD metadata lookup&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added a &amp;amp;lsquo;Web Browser&amp;amp;rsquo; control to the &amp;amp;lsquo;Edit Host&amp;amp;rsquo; dialog in rdadmin(1)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added support for displaying cover art in the MusicBrainz release chooser&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added &amp;amp;lsquo;%wm&amp;amp;rsquo; [&amp;amp;lsquo;MusicBrainz Recording ID&amp;amp;rsquo;] and &amp;amp;lsquo;%wr&amp;amp;rsquo; [&amp;amp;lsquo;MusicBrainz Release ID&amp;amp;rsquo;] metadata wildcards&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Implemented the &amp;amp;lsquo;%wm&amp;amp;rsquo; [&amp;amp;lsquo;MusicBrainz Recording ID&amp;amp;rsquo;] and &amp;amp;lsquo;%wr&amp;amp;rsquo; [&amp;amp;lsquo;MusicBrainz Release ID&amp;amp;rsquo;] metadata wildcards for PyPAD&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added support for the &amp;amp;lsquo;%wi&amp;amp;rsquo;, &amp;amp;lsquo;%wm&amp;amp;rsquo; and &amp;amp;lsquo;%wr&amp;amp;rsquo; wildcards to the &amp;amp;lsquo;--metadata-pattern=&amp;amp;rsquo; switch in rdimport(1)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added &amp;amp;lsquo;--set-string-isrc&amp;amp;rsquo;, &amp;amp;lsquo;--set-string-recording-mbid&amp;amp;rsquo; and &amp;amp;lsquo;--set-string-release-mbid&amp;amp;rsquo; switches to rdimport(1)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added support for the &amp;amp;lsquo;%wi&amp;amp;rsquo;, &amp;amp;lsquo;%wm&amp;amp;rsquo; and &amp;amp;lsquo;%wr&amp;amp;rsquo; wildcards to the &amp;amp;lsquo;--metadata-pattern=&amp;amp;rsquo; switch in rdexport(1)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added a &amp;amp;lsquo;%wc&amp;amp;rsquo; [&amp;amp;lsquo;Industry Standard Commercial Identification (ISCI) Code&amp;amp;rsquo;] metadata wildcard&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Implemented the &amp;amp;lsquo;%wc&amp;amp;rsquo; metadata wildcard for PyPAD&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added support for the &amp;amp;lsquo;%wc&amp;amp;rsquo; wildcards to the &amp;amp;lsquo;--metadata-pattern=&amp;amp;rsquo; switch in rdimport(1)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added &amp;amp;lsquo;--set-string-isci&amp;amp;rsquo; switch to rdimport(1)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added support for the &amp;amp;lsquo;%wc&amp;amp;rsquo; wildcard to the &amp;amp;lsquo;--metadata-pattern=&amp;amp;rsquo; switch in rdexport(1)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Removed the &amp;amp;lsquo;RDLabel&amp;amp;rsquo; widget&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added a &amp;amp;lsquo;Disconnect All Jack Ports&amp;amp;rsquo; [&amp;amp;lsquo;JZ&amp;amp;rsquo;] RML&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added a &amp;amp;lsquo;CounterPoint Traffic Reconciliation v2&amp;amp;rsquo; report&lt;br /&gt;
&lt;br /&gt;
=== 3.2.1 (2020-01-24) ===&lt;br /&gt;
* Database verson '''311'''&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdcatch(1) that threw a SQL error when clicking 'OK' on the &amp;amp;lsquo;Edit Cart Event&amp;amp;rsquo; dialog&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in rdimport(1) that caused null characters to be written to cart metadata fields when importing files containing an &amp;amp;lsquo;AIR1&amp;amp;rsquo; RIFF chunk&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in rdcatch(1) that caused the &amp;amp;lsquo;Source&amp;amp;rsquo; dropdown in the &amp;amp;lsquo;Edit Recording&amp;amp;rsquo; dialog to fail to be populated properly&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in the cart selector dialog that caused default focus to be lost on the &amp;amp;lsquo;Filter&amp;amp;rsquo; control after second and subsequent invocations&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in rdcatchd(8) that broke audio metering&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in rdcatchd(8) that could cause download events to hang in an active state&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdcatch(1) that caused DOW flags to fail to be updated correctly on the event list after making a change&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdcatchd(8) that failed to send a MODIFY notification at the end of a Record or Download event&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdconvert that caused a segfault at startup&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdexport(1) that caused output filenames containing multi-byte UTF-8 characters to be corrupt&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdgpimon(1) that caused GPIO cart displays to fail to accurately reflect current state&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdgpimon(1) that caused incorrect state indications to be displayed after switching to a different page&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdimport(1) that caused non-Latin1 characters to be corrupted when using standard input&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdimport(1) that caused UTF-8 multibyte characters in filenames to be corrupted&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdlogmanager(1) that caused spurious log events to be inserted when generating a log&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in ripcd(8) that caused input and output counts to be calculated incorrectly for Software Authority protocol devices containing holes in the input and/or output lists&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in the &amp;amp;lsquo;pypad-shoutcast1.py&amp;amp;rsquo; script that threw an exception when processing PAD containing multi-type UTF-8 characters&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in the &amp;amp;lsquo;pypad_xds.py&amp;amp;rsquo; PyPAD script that could cause it to emit duplicate CIC updates&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in the &amp;amp;lsquo;rivwebcapi&amp;amp;rsquo; validate_tm() function that caused dates containing &amp;amp;lsquo;29 February&amp;amp;rsquo; to always fail regardless of leap-year validity&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in the rdxport service that could cause MODIFY notifications to fail to be sent by the &amp;amp;lsquo;SaveLog&amp;amp;rsquo; WebAPI call&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in rdadmin(1) that caused controls to be hidden in the &amp;amp;lsquo;Edit Report&amp;amp;rsquo; dialog&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in rdlogmanager(1) that caused incorrect logged start times to be generated for imported events&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in the rdxport service that caused the ListCuts WebAPI call to return corrupt data&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in the Web API that caused the and/or corrupt in served XML documents&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Implemented support for non-realtime library filtering in the &amp;amp;lsquo;Editing Event&amp;amp;rsquo; dialog in rdlogmanager(1)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added a &amp;amp;lsquo;Show Start Time As&amp;amp;rsquo; control to the &amp;amp;lsquo;Edit Log&amp;amp;rsquo; dialog in rdlogedit(1)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Made the rdlogedit(1) main window and &amp;amp;lsquo;Edit Log&amp;amp;rsquo; dialog window sizes persistent&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added a work-around in the &amp;amp;lsquo;PyPAD.Receiver().__openDb()&amp;amp;rsquo; method to work with versions of MySQLdb that do not support the &amp;amp;lsquo;password=&amp;amp;rsquo; parameter in &amp;amp;lsquo;MySQLdb.connect()&amp;amp;rsquo;&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added &amp;amp;lsquo;Repetitions=&amp;amp;rsquo; and &amp;amp;lsquo;RepetitionDelay=&amp;amp;rsquo; directive to the configuration of the &amp;amp;lsquo;pypad_xds.py&amp;amp;rsquo; PyPAD script&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added &amp;amp;lsquo;Username=&amp;amp;rsquo; and &amp;amp;lsquo;Password=&amp;amp;rsquo; directives to the &amp;amp;lsquo;pypad_httpget.py&amp;amp;rsquo; script for use for HTTP Basic Authentication&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added the ability to view a report at time of generation in rdlogmanager(1)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Adjusted the position of the &amp;amp;lsquo;Matching Carts&amp;amp;rsquo; readout on the main window of rdlibrary(1)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Changed the &amp;amp;lsquo;Time&amp;amp;rsquo; column in the &amp;amp;lsquo;Full Log Widget&amp;amp;rsquo; in rdairplay(1) to &amp;amp;lsquo;Sch. Time&amp;amp;rsquo;&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Implemented a work-around for importing CartChunk data containing a buggy ENCO implemention of the &amp;amp;lsquo;AUD&amp;amp;rsquo; CartChunk timer&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Modified the Full Log widget in rdairplay(1) to display logged start times even when the referenced cart does not exist&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Tweaked the &amp;amp;lsquo;LogLineBox::mouseMoveEvent()&amp;amp;rsquo; method in rdairplay(1) to require a cursor movement of at least 20 pixels before generating a cart drag&lt;br /&gt;
&lt;br /&gt;
=== 3.2.0 (2019-10-31) ===&lt;br /&gt;
* Database verson '''311'''&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rddbmgr(8) that caused a segfault when processing a SQL error&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdimport(1) that caused it to throw an exception when given a &amp;amp;lsquo;--metadata-pattern&amp;amp;rsquo; of less than three characters&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in rdimport(1) that caused a segfault when invoked with the &amp;amp;lsquo;--metadata-pattern&amp;amp;rsquo; and &amp;amp;lsquo;--log-syslog&amp;amp;rsquo; switches&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdairplay(1) that caused space bar presses to start the next event in the Main Log even when &amp;amp;lsquo;Space Bar Action&amp;amp;rsquo; was set to &amp;amp;lsquo;None&amp;amp;rsquo;&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed bugs in 'RDWaveFile' that caused strings of null characters to be written into unfilled CartChunk string fields&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in 'rdxport.cgi' that caused a check of the Rivendell services to be triggered each time a WebAPI function was invoked&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in rdsoftkeys(1) that threw a segfault at startup&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added the ability to configure the caption displayed for the first and third voicetrack waveforms in the Voicetracker dialog in rdlogedit(1)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Reworked the font management system to permit the fonts used in the UI to be specified in rd.conf(5).&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added support for posting podcast content via SFTP&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:orange&amp;quot;&amp;gt;Documentation&amp;lt;/font&amp;gt;: Added manual pages for rd.conf(5) and rdsoftkeys(1)&lt;br /&gt;
&lt;br /&gt;
=== 3.1.0 (2019-09-19) ===&lt;br /&gt;
* Database verson '''310'''&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdairplay(1) and rdvairplayd(8) where only the first log machine set to &amp;amp;lsquo;load specified log&amp;amp;rsquo; would do so&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdlogedit(1) that caused hard start log items to have the Hour field doubled&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Refactored the Python &amp;amp;lsquo;pypad.Update.shouldBeProcessed()&amp;amp;rsquo; method to work correctly when using &amp;lt;tt&amp;gt;try:&amp;lt;/tt&amp;gt; blocks in a PyPAD script&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Refactored the PyPAD scripts to route updates properly in accordance with log directives in their configuration file&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug that broke dropbox logging to individual files&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in caed(8) that broke timescaling support&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed bugs in rdlibrary(1) that broke CD ripping&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Refactored rdalsaconfig(1) to be more robust and intuitive&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added a &amp;amp;lsquo;pypad_httpget.py&amp;amp;rsquo; PyPAD script&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Updated CDDB code to use protocol level 6 (UTF-8 enabled)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added an &amp;amp;lsquo;%l&amp;amp;rsquo; wildcard to Filepath Wildcards for &amp;amp;lsquo;unpadded month&amp;amp;rsquo;&lt;br /&gt;
=== 3.0.3 (2019-08-05) ===&lt;br /&gt;
* Database verson '''308'''&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in ripcd(8) that broke the 'Connect Jack Ports' ['JC'] and 'Disconnect Jack Ports' ['JD'] RMLs&lt;br /&gt;
=== 3.0.2 (2019-07-31) ===&lt;br /&gt;
* Database verson '''308'''&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a problem with the Local Audio Adapter switcher driver that caused incorrect operation with the 'Switch Add' ['SA'], 'Switch Remove' ['SR'] and 'Switch Take' ['ST'] RMLs&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in rdlibrary(1) that caused macro carts entries to turn red after being viewed&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed regressions that made operations with serial devices unreliable&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added support for switchers using the Grass Valley 7000 series protocol&lt;br /&gt;
=== 3.0.1 (2019-07-16) ===&lt;br /&gt;
* Database verson '''308'''&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Rivendell is now Unicode UTF-8 clean&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Qt4 is now used throughout Rivendell instead of Qt3&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: The Rivendell Loadable Modules system for processing PAD data has been completely replaced by PyPAD, allowing PAD processing plug-ins to be written in the popular Python scripting langauge. Backward compatible replacement scripts for many of the RLM plug-ins supplied in Rivendell v2.x are included&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added a compatibility library to facilitate the use of the Rivendell Web API in external applications&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: A system of virtual log machines has been added, allowing play-out of up to 23 logs simultaneously&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Rivendell is now fully systemd compatibile&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: The Windows ports of rdlogedit(1) and rdlogmanager(1) have been removed&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:orange&amp;quot;&amp;gt;Documentation&amp;lt;/font&amp;gt;: The Rivendell Operations and Administration Guide has been updated and enhanced with more details about running a Rivendell system&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:orange&amp;quot;&amp;gt;Documentation&amp;lt;/font&amp;gt;: New manual pages have been added for Rivendell command that previously did not have them&lt;br /&gt;
See [http://caspian.paravelsystems.com/pipermail/rivendell-dev/2019-July/027867.html this message] on the Rivendell Dev mailing list for more details about installing and upgrading Rivendell.&lt;br /&gt;
=== 2.19.3 (2018-10-31) ===&lt;br /&gt;
* Database verson '''275'''&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug that caused the &amp;amp;lsquo;Switcher Matrix&amp;amp;rsquo; and &amp;amp;lsquo;Switcher Output&amp;amp;rsquo; dropdowns to populate incorrect values when selecting a non-local &amp;amp;lsquo;Switcher Host&amp;amp;rsquo; in the &amp;amp;lsquo;Configure RDCatch&amp;amp;rsquo; dialog in rdadmin(1)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdlogmanager(1) that caused the initial transition type specified in the &amp;amp;lsquo;IMPORT&amp;amp;rsquo; section of the &amp;amp;lsquo;Editing Event&amp;amp;rsquo; dialog to be applied to both the parent log link and the first imported event when the &amp;amp;lsquo;PRE-IMPORT CARTS&amp;amp;rsquo; list was empty and no Timed Start was enabled&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in ripcd(8) that caused process of the &amp;amp;lsquo;Air Gate&amp;amp;rsquo; [&amp;amp;lsquo;AG&amp;amp;rsquo;] RML to fail&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdimport(1) that would throw a spurious SQL error when using the &amp;amp;lsquo;--to-cart=&amp;amp;rsquo; switch with an already existing cart [Issue #000217]&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression that caused rdimport(1) to return a &amp;amp;lsquo;no free carts available in specified group&amp;amp;rsquo; when invoked without the &amp;amp;lsquo;--to-cart=&amp;amp;rsquo; option&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in rdairplay(1) that caused carts Added or Copied to a log to have a PLAY transition regardless of the default transition type set in rdadmin(1)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in &amp;amp;lsquo;RDTextValidator&amp;amp;rsquo; that failed to catch banned characters added to the interior of existing strings&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Various other bugs fixed&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added a &amp;amp;lsquo;TranscodingDelay=&amp;amp;rsquo; parameter to the &amp;amp;lsquo;[Tuning]&amp;amp;rsquo; section of rd.conf(5)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added a Switcher/GPIO driver for the BroadcastTools SS 2.1 switcher&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added support for GPIO on AudioScience adapters to the 'Local Audio Adapter' Switcher/GPIO driver&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Renamed the 'Add Next' ['PX'] RML to 'Insert Cart' ['PX'] and added two optional arguments to allow specification of the insertion position and transition type&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added support for Spinitron v2 to the 'spinitron_plus' RLM&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added an &amp;amp;lsquo;ExportedFileMode=&amp;amp;rsquo; parameter to the &amp;amp;lsquo;[Tuning]&amp;amp;rsquo; section of rd.conf(5) to permit permission mode of exported audio files to be specified&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:orange&amp;quot;&amp;gt;Documentation&amp;lt;/font&amp;gt;: Documented GPIO support for AudioScience cards in the &amp;amp;lsquo;Local Audio Adapter&amp;amp;rsquo; section of the Operations Guide&lt;br /&gt;
&lt;br /&gt;
=== 2.19.2 (2018-04-14) ===&lt;br /&gt;
* Database verson '''275'''&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a regression in the HPI support layer that broke audio capture with adapters lacking DMA bus-mastering support&lt;br /&gt;
&lt;br /&gt;
=== 2.19.1 (2018-03-27) ===&lt;br /&gt;
* Database verson '''275'''&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdlogmanager(1) that caused DB corruption when a clock was deleted while still being assigned to a grid.&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Implemented support for DMA bus-mastering for AudioScience HPI devices. This release supports the latest ASI cards that require DMA bus-mastering support. You may also need to update the hpklinux driver to v4.20.10 or later. RPMs for CentOS 7 are available at [http://static.paravelsystems.com/audioscience/centos/7/ Paravel&amp;amp;rsquo;s website].&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Removed rdhpiinfo(8). Replaced by the stand-alone &amp;amp;lsquo;hpiinfo&amp;amp;rsquo; package.&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Removed the event time check for Playout events in rdcatch(1), as there is no sane way to determine a consistently &amp;amp;lsquo;free&amp;amp;rsquo; playout time in the face of shifting cut lengths.&lt;br /&gt;
&lt;br /&gt;
=== 2.19.0 (2018-02-22) ===&lt;br /&gt;
* Database verson '''275'''&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug in rdlibrary(1) that caused evergreen carts/cuts to fail to be highlighted in the correct color&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added the ability to specify automatic log deletion on the basis of either the Creation Date or Air Date of the log&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Log Importation Changes. Changed music and traffic importation so that parent link events are still visible in linked logs&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Log Locking: implemented a system-wide protocol to prevent changes made to a log on one host from being inadvertently overwritten from another host&lt;br /&gt;
&lt;br /&gt;
=== 2.18.2 (2017-12-29) ===&lt;br /&gt;
* Database version '''272'''&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug that caused creation of new clocks in rdlogmanager(1) to fail to initialize music scheduler components correctly in the database&lt;br /&gt;
&lt;br /&gt;
=== 2.18.1 (2017-12-22) ===&lt;br /&gt;
* Database version '''272'''&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug that caused creation and initialization of a new Rivendell database to fail&lt;br /&gt;
&lt;br /&gt;
=== 2.18.0 (2017-12-21) ===&lt;br /&gt;
* Database version updated to '''272'''&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Various bug fixes. See the [https://github.com/ElvishArtisan/rivendell/blob/stable/ChangeLog ChangeLog] for details&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Group Cut Expiration Policy: Added the ability to set a default End Date/Time for new cuts on a per-group basis&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Host Short Name: Added a ''Short Name'' parameter to Host profiles&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Macro Carts: It is now possible to use filepath wildcards in macro carts&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: New Host Wildcards: Added two host wildcards: ''%r'' for ''Rivendell Host Name, and ''%R'' for ''Rivendell Short Name''&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Provisioning Support: Added four new directives and to the ''[Provisioning]'' section of ''/etc/rd.conf''&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: MySQL Configuration: Added three parameters to the ''[mySQL]'' section of ''/etc/rd.conf''&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Dropbox Enhancements: Added the ability to specify creation of default Segue Markers when processing files via dropbox&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: '''RDImport'''/DropBox Enhancements: Added the ability to specify start and end datetimes via metadata pattern&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: '''RDCatch''' Event Filtering: Added the ability to filter by event type in '''RDCatch'''&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Log Searching: A search filter (similar to that employed for seaching for carts) has been added to the List Logs dialogs&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Service Filtering in '''RDLogEdit''': Added the ability to limit the visible set of logs in RDLogEdit by user&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Log Purge/Deletion Changes: Logs created manually (in rdlogedit(1) or rdairplay(1)) are now assigned a default purge/deletion date in accordance with the setting in RDAdmin-&amp;gt;ManageServices&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Log Importation Changes: Changed music and traffic importation so that parent link events are still visible in linked logs&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Web API Changes: Added &amp;amp;lsquo;FILTER&amp;amp;rsquo; and &amp;amp;lsquo;RECENT&amp;amp;rsquo; call parameters to the &amp;amp;lsquo;ListLogs&amp;amp;rsquo; Web API call&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:orange&amp;quot;&amp;gt;Documentation&amp;lt;/font&amp;gt;: Documentation Overhaul: The Rivendell Operations and Administration Guide has been exapanded and incorporated as part of the base Rivendell source in ''docs/opsguide''. This guide is available as a separate CentOS package: ''rivendell-opsguide''&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:orange&amp;quot;&amp;gt;Documentation&amp;lt;/font&amp;gt;: Rivendell APIs: The various application programming interfaces (notably the web API) is now documented and is included with the standard distribution&lt;br /&gt;
&lt;br /&gt;
=== 2.17.0 (2017-10-11) ===&lt;br /&gt;
* Database version updated to '''268'''&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Web API: Many fixes and enhancements to improve operation&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Many other bug fixes; see the [https://github.com/ElvishArtisan/rivendell/blob/stable/ChangeLog ChangeLog] for all the details (search for ''2.17.0'' and work your way backward through the list of changes)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Dropboxes: Added the ability to force imports to be imported as mono, also added the ability to reset individual dropboxes&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: New Switcher/GPIO Devices: Support has been added for the following Switcher/GPIO devices:&lt;br /&gt;
:* Broadcast Tools Universal 4.1 MLR&amp;amp;gt;&amp;amp;gt;Web Switcher&lt;br /&gt;
:* WheatNet LIO&lt;br /&gt;
:* WheatNet SLIO&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Macros: Added the &amp;amp;lsquo;Air Gate&amp;amp;rsquo; &amp;amp;#91;&amp;amp;lsquo;AG&amp;amp;rsquo;&amp;amp;#93; RML to permit conditional execution of RML on the basis of the status of the On-Air flag&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: &lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: User Authentication: It is now possible to configure RDLogin to require entry of the user-name, rather than picking the name off of a list. See the &amp;amp;lsquo;Show User List in RDLogin&amp;amp;rsquo; checkbox in RDAdmin-&amp;amp;gt;SystemSettings&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Log Rendering (EXPERIMENTAL): It is now possible to &amp;amp;lsquo;render&amp;amp;rsquo; a log as a single audio object (file or cart/cut) without the need to play it out while capturing the audio in realtime. Render support is available through the &amp;amp;lsquo;Render&amp;amp;rsquo; button in RDLogEdit and through the command-line rdrender(1) utility. See the rdrender(1) man page for details&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Provisioning Support. Added a [Provisioning] section to rd.conf(5) with directives to facilitate the automatic provisioning of Rivendell instances. See the comments in the [Provisioning] section of the sample rd.conf(5) file&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:orange&amp;quot;&amp;gt;Artwork&amp;lt;/font&amp;gt;: New Icons: Implemented a new icon set, with individualized icons for each Rivendell module&lt;br /&gt;
&lt;br /&gt;
=== 2.16.0 (2017-06-02) ===&lt;br /&gt;
* Database version updated to '''263'''&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Many bug fixes; see the [https://github.com/ElvishArtisan/rivendell/blob/stable/ChangeLog ChangeLog] for all the details (search for ''2.16.0'' and work your way backward through the list of changes)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Audio Store Hashing. Rivendell now automatically generates a SHA1 hash for each file in the audio store and records this value in the database, thus permitting automated recovery of audio in the event of loss or damage to the audio store's filesystem directory&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added switcher support for Kernel GPIO devices, such as the GPIO interface on the Raspberry Pi 2 and 3&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added switcher support for Modbus TCP devices&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added an rdconvert(1) utility&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: It is now possible to delegate authentication of Rivendell users by means of a PAM module, thus permitting &amp;amp;lsquo;''single sign-on''&amp;amp;rsquo; integration with systems such as ActiveDirectory and FreeIPA&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added various methods to the Rivendell Web API to permit integration with external audio and log editors&lt;br /&gt;
&lt;br /&gt;
=== 2.15.3 (2017-03-24) ===&lt;br /&gt;
* Database version '''259''' &lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed bugs in MP3 file importation that caused files with variable bit rate (VBR) to be truncated during import.&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: Fixed a bug that caused dynamically loaded codec libraries to fail to be detected if the corresponding library&amp;amp;rsquo;s so-called ''-devel'' package was not installed. &lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added an ''RLM'' for generating [http://tagstation.com/ TagStation] RLM events for [http://nextradioapp.com/ NextRadio].&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added '''AddLog''', '''DeleteLog''' and '''SaveLog''' calls to the web API, along with general cleanup and correction of the overall Web API subsystem.&lt;br /&gt;
&lt;br /&gt;
=== 2.15.2 (2017-01-13) ===&lt;br /&gt;
* Database version '''259'''&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:orange&amp;quot;&amp;gt;Documentation&amp;lt;/font&amp;gt;: Document the interfaces for '''inserting inline traffic breaks''' and for '''inserting voice track markers''' (also add an example in ''docs/examples/'')&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: in ''rdadmin/createdb.cpp'' that caused obsolete fields in the 'SERVICES' table to be included when creating a new database.&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: in ''lib/rdwavefile.cpp'' that caused RDXL chunks to be written with odd chunk lengths.&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: in ''lib/rdsimpleplayer.cpp'' that caused RDAirPlay to freeze when attempting to audition an expired cart.&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Added a '''LockRdairplayMemory=''' parameter to the [Hacks] section.&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Modified the LiveWire Multicast GPIO driver to generate GPO events using the 'I' event type.&lt;br /&gt;
&lt;br /&gt;
=== 2.15.1 (2016-08-05) ===&lt;br /&gt;
* Database version '''259'''&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: fixed WAV file export code to enhance compatibility with third-party applications&lt;br /&gt;
&lt;br /&gt;
=== 2.15.0 (2016-07-29) ===&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: complete support for the MySQL/MariaDB InnoDB database engine (for better transaction processing of database updates)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: enhancements to ''rdexport'' that include full metadata in RDXML format&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: add CLI command ''rdclilogedit'' that enables editing of Rivendell Logs from the command line (without a GUI app)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: Update the database to version 259.&lt;br /&gt;
&lt;br /&gt;
=== 2.14.1 (2016-06-11) ===&lt;br /&gt;
* Database version '''258'''&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: additional fixes for newer versions of MySQL (and MariaDB)&lt;br /&gt;
&lt;br /&gt;
=== 2.14.0 (2016-06-10) ===&lt;br /&gt;
* Database version '''258'''&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: add the ability to capture real-time events in RDCatch recordings and replay the events in sync with the captured audio&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: add RML Macro ''Cut Event'' (''CE'') for placing real-time event markers into active RDCatch recordings&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: add support for specifying precise start time and length parameters for Traffic events that are embedded in Music events&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: fixed a bug in RDAdmin that could cause creation of a new database to fail&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: fix issues that prevent compilation under newer versions of the GNU C compiler suite&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: various enhancements and fixes to the new(ish) ''rdexport'' utility&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: initial support for newer versions of MySQL (and MariaDB)&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: add code to allow embedded traffic breaks to be specified with start time and length in the music schedule.&lt;br /&gt;
&lt;br /&gt;
=== 2.13.0 (2016-05-10) ===&lt;br /&gt;
* Database version '''255'''&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: add RLM plugin for the Paravel Systems ''WallTime'' clock&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: add new CLI command ''rdexport'' to export Carts with metadata&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:green&amp;quot;&amp;gt;Functionality&amp;lt;/font&amp;gt;: new report: ''Cut Log'' that includes the Description field for played events&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: fixed a crash in RDLibrary when attempting to open multiple Carts&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: fixed RDLogEdit to improve performance when saving and updating logs&lt;br /&gt;
* &amp;lt;font style=&amp;quot;color:red&amp;quot;&amp;gt;Bug fix&amp;lt;/font&amp;gt;: fixed a bug that caused marker data to be deleted when exporting a Cut&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=User_talk:Raidan&amp;diff=786</id>
		<title>User talk:Raidan</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=User_talk:Raidan&amp;diff=786"/>
				<updated>2025-05-10T13:05:57Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Welcome to ''Rivendell Wiki''!'''&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents help pages].&lt;br /&gt;
Again, welcome and have fun! [[User:ElvishArtisan|ElvishArtisan]] ([[User talk:ElvishArtisan|talk]]) 13:05, 10 May 2025 (UTC)&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=User_talk:Tiapo_Enavera&amp;diff=785</id>
		<title>User talk:Tiapo Enavera</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=User_talk:Tiapo_Enavera&amp;diff=785"/>
				<updated>2025-05-10T13:05:38Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Welcome to ''Rivendell Wiki''!'''&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents help pages].&lt;br /&gt;
Again, welcome and have fun! [[User:ElvishArtisan|ElvishArtisan]] ([[User talk:ElvishArtisan|talk]]) 13:05, 10 May 2025 (UTC)&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=User_talk:Mcfaddenm&amp;diff=781</id>
		<title>User talk:Mcfaddenm</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=User_talk:Mcfaddenm&amp;diff=781"/>
				<updated>2024-12-03T22:59:38Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Welcome to ''Rivendell Wiki''!'''&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents help pages].&lt;br /&gt;
Again, welcome and have fun! [[User:ElvishArtisan|ElvishArtisan]] ([[User talk:ElvishArtisan|talk]]) 22:59, 3 December 2024 (UTC)&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=Installing_Rivendell&amp;diff=772</id>
		<title>Installing Rivendell</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=Installing_Rivendell&amp;diff=772"/>
				<updated>2024-05-03T21:51:58Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: /* Ubuntu 22.04 &amp;quot;Jammy Jellyfish&amp;quot; (also works with Linux Mint 21) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Appliance Installers ===&lt;br /&gt;
The preferred and easiest way to create a working Rivendell system is to use one of the standard &amp;quot;appliance&amp;quot; installers provided by [https://paravelsystems.com Paravel Systems]. The following Linux distributions are supported:&lt;br /&gt;
&lt;br /&gt;
==== Ubuntu 22.04 &amp;quot;Jammy Jellyfish&amp;quot; (also works with Linux Mint 21) ====&lt;br /&gt;
* [https://software.paravelsystems.com/howtos/ubuntu/jammy/ Ubuntu 22.04 Appliance Installer for Rivendell 4.x] ('''RECOMMENDED''')&lt;br /&gt;
&lt;br /&gt;
==== Ubuntu 24.04 &amp;quot;Noble Numbat&amp;quot; ====&lt;br /&gt;
* [https://software.paravelsystems.com/howtos/ubuntu/noble/ Ubuntu 24.04 Appliance Installer for Rivendell 4.x]&lt;br /&gt;
&lt;br /&gt;
==== RedHat Enterprise Linux 7 (RHEL-7) (also works with CentOS 7) ====&lt;br /&gt;
* [https://software.paravelsystems.com/howtos/CentOS/7rd4/ RHEL-7 Appliance Installer for Rivendell 4.x]&lt;br /&gt;
* [https://software.paravelsystems.com/howtos/CentOS/7rd3/ RHEL-7 Appliance Installer for Rivendell 3.x] ('''DEPRECATED''')&lt;br /&gt;
&lt;br /&gt;
==== RedHat Enterprise Linux 8 (RHEL-8) (also works with Rocky Linux 8) ====&lt;br /&gt;
* [https://software.paravelsystems.com/howtos/rhel/8rd4/ RHEL-8 Appliance Installer for Rivendell 4.x]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Building from Source ===&lt;br /&gt;
The &amp;quot;appliance&amp;quot; installations listed above can also be used as a basis for creating a development instance capable of building Rivendell from its original sources. While not recommended for use in production &amp;quot;on the air&amp;quot; environments, such a development instance can be extremely useful for testing new features or bugfixes that have been committed to the GitHub repository but not yet released in the pre-built packages.&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.rivendellaudio.org/index.php/Building_Rivendell_from_source Building a Rivendell Development Instance on Ubuntu 22.04 &amp;quot;Jammy Jellyfish&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== Legacy/Deprecated Installs ===&lt;br /&gt;
The following items apply to the deprecated v3.x versions of Rivendell, on various &amp;quot;not officially supported&amp;quot; distributions.&lt;br /&gt;
&lt;br /&gt;
==== Ubuntu ====&lt;br /&gt;
===== Rivendell 3.x on Ubuntu 18.04 (Bionic Beaver) and Linux Mint 19.3 =====&lt;br /&gt;
[[Legacy Rivendell 3.6.x on Ubuntu18 04 | Legacy Rivendell 3.6.x on Ubuntu18 04]] covers how to compile from source and install Rivendell 3 (v3.6.8) on Ubuntu 18.04.  It has been reported these instructions also work on Linux Mint 19.3.&lt;br /&gt;
&lt;br /&gt;
===== Upgrading to Rivendell 4.x on Ubuntu 18.04 (Bionic Beaver) and Linux Mint 19.3 =====&lt;br /&gt;
&lt;br /&gt;
* [[Updating to Rivendell 4.x on Legacy Ubuntu18 04, Compiled from Source | Updating to Rivendell 4.x on Legacy Ubuntu18 04, Compiled from Source ]]  - while '''unsupported by the official release''' it is possible to upgrade to Rivendell 4.x on Ubuntu 18.04 for those who have previously compiled Rivendell 3.x.  This explains how to do it.&lt;br /&gt;
&lt;br /&gt;
==== Debian ====&lt;br /&gt;
The following pages describe how to install Rivendell from source on a Debian system.&lt;br /&gt;
&lt;br /&gt;
===== Rivendell 3.x on Debian 10 (Buster) =====&lt;br /&gt;
[[Debian10 | This page]] quickly relates how to install Rivendell 3 (v3.2.0) on Debian10.&lt;br /&gt;
&lt;br /&gt;
===== Rivendell 3.x on Debian 9 (Stretch) =====&lt;br /&gt;
[[Debian9 | This page]] quickly relates how to install Rivendell 3 (v3.0.3) on Debian9.&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=User_talk:KilRock&amp;diff=770</id>
		<title>User talk:KilRock</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=User_talk:KilRock&amp;diff=770"/>
				<updated>2024-04-23T14:33:49Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Welcome to ''Rivendell Wiki''!'''&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents help pages].&lt;br /&gt;
Again, welcome and have fun! [[User:ElvishArtisan|ElvishArtisan]] ([[User talk:ElvishArtisan|talk]]) 14:33, 23 April 2024 (UTC)&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=User_talk:Ignite&amp;diff=765</id>
		<title>User talk:Ignite</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=User_talk:Ignite&amp;diff=765"/>
				<updated>2024-03-16T16:46:32Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Welcome to ''Rivendell Wiki''!'''&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents help pages].&lt;br /&gt;
Again, welcome and have fun! [[User:ElvishArtisan|ElvishArtisan]] ([[User talk:ElvishArtisan|talk]]) 16:46, 16 March 2024 (UTC)&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=User_talk:Martinflynn&amp;diff=764</id>
		<title>User talk:Martinflynn</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=User_talk:Martinflynn&amp;diff=764"/>
				<updated>2024-03-16T16:46:01Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Welcome to ''Rivendell Wiki''!'''&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents help pages].&lt;br /&gt;
Again, welcome and have fun! [[User:ElvishArtisan|ElvishArtisan]] ([[User talk:ElvishArtisan|talk]]) 16:46, 16 March 2024 (UTC)&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=User_talk:REW&amp;diff=724</id>
		<title>User talk:REW</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=User_talk:REW&amp;diff=724"/>
				<updated>2024-01-12T20:49:09Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Welcome to ''Rivendell Wiki''!'''&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents help pages].&lt;br /&gt;
Again, welcome and have fun! [[User:ElvishArtisan|ElvishArtisan]] ([[User talk:ElvishArtisan|talk]]) 20:49, 12 January 2024 (UTC)&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=User_talk:Bgodwin&amp;diff=723</id>
		<title>User talk:Bgodwin</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=User_talk:Bgodwin&amp;diff=723"/>
				<updated>2024-01-12T20:48:38Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Welcome to ''Rivendell Wiki''!'''&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents help pages].&lt;br /&gt;
Again, welcome and have fun! [[User:ElvishArtisan|ElvishArtisan]] ([[User talk:ElvishArtisan|talk]]) 20:48, 12 January 2024 (UTC)&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=User_talk:Wotipka&amp;diff=720</id>
		<title>User talk:Wotipka</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=User_talk:Wotipka&amp;diff=720"/>
				<updated>2023-11-09T13:55:55Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Welcome to ''Rivendell Wiki''!'''&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents help pages].&lt;br /&gt;
Again, welcome and have fun! [[User:ElvishArtisan|ElvishArtisan]] ([[User talk:ElvishArtisan|talk]]) 13:55, 9 November 2023 (UTC)&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=Rivendell_on_CentOS&amp;diff=719</id>
		<title>Rivendell on CentOS</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=Rivendell_on_CentOS&amp;diff=719"/>
				<updated>2023-08-22T15:19:31Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== Rivendell on RHEL/CentOS ====&lt;br /&gt;
The [http://centos.org/ CentOS] distribution has a particularly good integration with Rivendell, as many of the developers working on the code do so on that platform.&lt;br /&gt;
&lt;br /&gt;
=== Installation===&lt;br /&gt;
Installation of Rivendell on CentOS is done by first installing a basic (also known as ''minimal'') set of files, then running a downloaded script that completes the bulk of the installation via the Internet. Three different types of installation setups are available: a ''standalone'' setup, which results in a complete, self-contained Rivendell system; a ''server'' setup, which results in a system that runs Rivendell but can also act as the central data repository for other Rivendell workstations; and a ''client'' setup, which must connect to a Rivendell server to get its information.&lt;br /&gt;
&lt;br /&gt;
Detailed instructions for installing the most current major version of Rivendell (3.x) on CentOS 7 can be found [http://static.paravelsystems.com/rivendell-install-rd3/rivendell-install-rhel7.html here]. For new Rivendell sites, this is the installer to use!&lt;br /&gt;
&lt;br /&gt;
Instructions for installing the previous major version of Rivendell (2.x) are also available. These should be used only by sites that are currently still using 2.x pending an upgrade to 3.x. Instructions for CentOS 6 are available [http://static.paravelsystems.com/rivendell-install/rivendell-install-rhel6.html here], and for CentOS 7 [http://static.paravelsystems.com/rivendell-install/rivendell-install-rhel7.html here].&lt;br /&gt;
&lt;br /&gt;
=== Updates ===&lt;br /&gt;
As an actively developed and maintained software project, new versions of Rivendell are periodically released by the developers. CentOS includes tools to allow these updates to be easily applied to an existing Rivendell installation with minimal disruption to operations. However, before delving into the details of the process, we need to take a short detour into the subject Rivendell's versioning scheme.&lt;br /&gt;
&lt;br /&gt;
=== Rivendell Versioning ===&lt;br /&gt;
Each Rivendell release is assigned a ''package version'', which consists of three numbers separated by periods --e.g. 2.19.3. The three numbers each have a name: MAJOR.MINOR.PATCH; a scheme known as [https://semver.org semantic versioning]. The package version applies to the specific set of code instructions that constitute that release of Rivendell.&lt;br /&gt;
&lt;br /&gt;
Each Rivendell release also has a ''database schema version'', which consists of a single positive integer --e.g. 275. The number refers to the specific configuration of pigeonholes used by the database to store Rivendell information. The database schema version is always given in the 'NEWS' file included with each Rivendell release. Unlike the package version, which is unique to each specific Rivendell release, the same database schema version may apply to more than one Rivendell release. The actual value of the database schema version is not so important as the fact that '''all Rivendell systems sharing a common server must must be at the same schema version'''. You can tell if two Rivendell releases share the same database schema version by looking at the first two numbers of the package version -- the MAJOR.MINOR numbers. If those two numbers match, then the packages use the same database schema version (and hence can be safely intermixed together on the same Rivendell server). For example:&lt;br /&gt;
&lt;br /&gt;
    2.19.0 / 2.19.3 -- Same database schema version!&lt;br /&gt;
    2.19.0 / 2.15.0 -- Different database schema version!&lt;br /&gt;
&lt;br /&gt;
If there is a mismatch between database schema versions, then one or more of those Rivendell systems will be unable to communicate with the database, and thus effectively offline!&lt;br /&gt;
&lt;br /&gt;
=== Minor Version Updates ===&lt;br /&gt;
Most Rivendell updates consist of ''minor updates'' --i.e. an update that changes only the MINOR and/or PATCH fields of the package version. (In fact, the MAJOR number has been changed only three times in the entire history of the Rivendell project). Such updates can be accomplished by using CentOS's yum(8) updater tool. On a stand-alone Rivendell setup, all that is needed to update to the latest version of Rivendell is to enter the following command at a root shell:&lt;br /&gt;
&lt;br /&gt;
    yum update rivendell&lt;br /&gt;
&lt;br /&gt;
'''IMPORTANT:''' Applying a Rivendell update will cause audio play-out to be interrupted! Any active Rivendell modules should be closed before applying the update.&lt;br /&gt;
&lt;br /&gt;
Sometimes, it is useful to be able to determine what version of Rivendell will be installed as the result of an update, before the update is actually applied. This can be determined using yum(8)'s 'info' command:&lt;br /&gt;
&lt;br /&gt;
    yum info rivendell&lt;br /&gt;
&lt;br /&gt;
=== Updating in a Server-Based Environment ===&lt;br /&gt;
Applying updates in a server-based environment (where multiple Rivendell hosts share a common server) requires special care, especially in cases where the version being updated to utilizes a different database schema version from the one currently in use. In such cases, the first system updated will '''automatically modify the database to use the new database schema version''' as part of the update process. It is imperative that this first system be allowed to fully finish this process before proceeding to update the remaining hosts.&lt;br /&gt;
&lt;br /&gt;
=== Major Updates ===&lt;br /&gt;
A ''major update'' -- one in which the MAJOR number of the package version changes -- is one which includes ''backwards incompatible'' changes. Such updates are best accomplished by backing up the Rivendell data and doing a complete CentOS reinstall using the appropriate installer script.&lt;br /&gt;
&lt;br /&gt;
It is possible to do an 'in place' upgrade of a Rivendell 2.x setup to 4.x if it is running on CentOS 7 by following [[Upgrading_from_v2_to_v4_on_CentOS_7|these instructions]].&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=Upgrading_from_v2_to_v4_on_CentOS_7&amp;diff=718</id>
		<title>Upgrading from v2 to v4 on CentOS 7</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=Upgrading_from_v2_to_v4_on_CentOS_7&amp;diff=718"/>
				<updated>2023-08-22T15:18:13Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: Instructions for upgrading Rivendell v2.x to v4.x on CentOS 7&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Verifying the presence of CentOS 7 ===&lt;br /&gt;
First, check that the system is in fact running CentOS 7 by executing the following command:&lt;br /&gt;
&lt;br /&gt;
    cat /etc/redhat-release&lt;br /&gt;
&lt;br /&gt;
You should get back something like this:&lt;br /&gt;
&lt;br /&gt;
    CentOS Linux release 7.6.1810 (Core)&lt;br /&gt;
&lt;br /&gt;
Verify that the first number in the version string ('7.6.1810') is a 7. If it is not, or you get a 'No such file or directory' error, then '''STOP'''. You are '''not''' running CentOS 7, and proceeding may damage or destroy your installation!&lt;br /&gt;
&lt;br /&gt;
=== Verifying that configured RLMs have replacement PyPAD scripts available ===&lt;br /&gt;
Go into RDAdmin-&amp;gt;ManageHosts-&amp;gt;hostname-&amp;gt;RDAirPlay-&amp;gt;ConfigureNow&amp;amp;NextParameters and make a note of each entry in the 'Loadable Modules' list. Using the following table, verify that each RLM (in the 'Path' field) has a replacement PyPAD script. If one does not, then '''STOP'''. You will need to create your own PyPAD script to duplicate the functionality of the custom RLM.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+PyPAD Script Replacements for RLMs&lt;br /&gt;
|-&lt;br /&gt;
!RLM&lt;br /&gt;
!PyPAD&lt;br /&gt;
|-&lt;br /&gt;
|rlm_ando&lt;br /&gt;
|pypad_ando.py&lt;br /&gt;
|-&lt;br /&gt;
|rlm_filewrite&lt;br /&gt;
|pypad_filewrite.py&lt;br /&gt;
|-&lt;br /&gt;
|rlm_icecast2&lt;br /&gt;
|pypad_icecast2.py&lt;br /&gt;
|-&lt;br /&gt;
|rlm_inno713&lt;br /&gt;
|pypad_inno713.py&lt;br /&gt;
|-&lt;br /&gt;
|rlm_liqcomp&lt;br /&gt;
|pypad_liqcomp.py&lt;br /&gt;
|-&lt;br /&gt;
|rlm_live365&lt;br /&gt;
|pypad_live365.py&lt;br /&gt;
|-&lt;br /&gt;
|rlm_serial&lt;br /&gt;
|pypad_serial.py&lt;br /&gt;
|-&lt;br /&gt;
|rlm_shoutcast1&lt;br /&gt;
|pypad_shoutcast1.py&lt;br /&gt;
|-&lt;br /&gt;
|rlm_spinitroni_plus&lt;br /&gt;
|pypad_spinitron.py&lt;br /&gt;
|-&lt;br /&gt;
|rlm_spottrap&lt;br /&gt;
|pypad_spottrap.py&lt;br /&gt;
|-&lt;br /&gt;
|rlm_tunein&lt;br /&gt;
|pypad_tunein.py&lt;br /&gt;
|-&lt;br /&gt;
|rlm_udp&lt;br /&gt;
|pypad_udp.py&lt;br /&gt;
|-&lt;br /&gt;
|rlm_urlwrite&lt;br /&gt;
|pypad_urlwrite.py&lt;br /&gt;
|-&lt;br /&gt;
|rlm_walltime&lt;br /&gt;
|pypad_walltime.py&lt;br /&gt;
|-&lt;br /&gt;
|rlm_xds&lt;br /&gt;
|pypad_xds.py&lt;br /&gt;
|-&lt;br /&gt;
|rlm_xmpad&lt;br /&gt;
|pypad_xmpad.py&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Backing Up the Database ===&lt;br /&gt;
Close all open Rivendell modules, then '''back up your database''', using RDAdmin-&amp;gt;BackupDatabase.&lt;br /&gt;
&lt;br /&gt;
=== Updating the repository assignments ===&lt;br /&gt;
Update the respository assignments by running the following commands (as root):&lt;br /&gt;
&lt;br /&gt;
    yum clean expire-cache&lt;br /&gt;
    mv /etc/yum.repos.d/Paravel-Broadcast.repo /etc/yum.repos.d/Paravel-Broadcast.repo-DISABLED&lt;br /&gt;
    wget https://software.paravelsystems.com/CentOS/7rd4/Paravel-Rivendell4.repo -P /etc/yum.repos.d/&lt;br /&gt;
&lt;br /&gt;
=== Updating the Rivendell Packages ===&lt;br /&gt;
Update the Rivendell packages by doing (as root):&lt;br /&gt;
&lt;br /&gt;
    yum update rivendell&lt;br /&gt;
&lt;br /&gt;
=== Creating Replacement PyPAD Instances ===&lt;br /&gt;
Go into RDAdmin-&amp;gt;ManageHosts-&amp;gt;hostname-&amp;gt;PyPADInstances and create a new instance for each RLM noted in the 2.x setup, using the proper replacement PyPAD script. Remove all of the default configuration for each instance, replacing it with the configuration copy/pasted from the original RLM configuration file (the 'Argument' field).&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=Notable_Differences_Between_Version_2_And_Version_4&amp;diff=716</id>
		<title>Notable Differences Between Version 2 And Version 4</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=Notable_Differences_Between_Version_2_And_Version_4&amp;diff=716"/>
				<updated>2023-08-16T19:05:13Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: ElvishArtisan moved page Notable Differences Between Version 2 And Version 3 to Notable Differences Between Version 2 And Version 4: Deprecation of Rivendell v3.x&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Notable Differences Between Major Version 2 And Major Version 4 ==&lt;br /&gt;
&lt;br /&gt;
Rivendell Version 4 (RD4) was released on June 16, 2023. This release came after over two years of concentrated development and testing by the Rivendell community, led by [https://www.paravelsystems.com/our-crew Fred Gleason]. One of the primary motivating factors for RD4 was the update to version 5 of the [https://qt.io/ Qt] development library while also retiring large chunks of technical debt remaining from the earlier years of Rivendell development. For most users this is mostly an &amp;amp;ldquo;under the hood&amp;amp;rdquo; thing, but this change has positioned Rivendell for future growth, modification, and improvement.&lt;br /&gt;
&lt;br /&gt;
Here are some more changes and improvements in Rivendell Version 4.&lt;br /&gt;
&lt;br /&gt;
=== User-visible Changes in RD4 ===&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2019-07-30 12-15-33.png|right|thumb|border|Ops Guide Cover Page]]&lt;br /&gt;
&lt;br /&gt;
Quite notably one of the most visible changes is the improved user documentation.&lt;br /&gt;
&lt;br /&gt;
:This version includes expanded discussion of many aspects of Rivendell operation and administration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2019-06-16 13-07-30.png|left|thumb|800px|border|RDLibrary Showing New Fields]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
RDLibrary has gotten a new look and some new functionality:&lt;br /&gt;
:# RDLibrary now tells you the count of currently displayed Carts&lt;br /&gt;
:# you may filter Carts based on up to ''two'' Scheduler Codes&lt;br /&gt;
:# Carts with multiple Cuts are shown with a &amp;amp;#8862; symbol; clicking on the &amp;amp;#8862; causes RDLibrary to display each of the Cuts in the Cart&lt;br /&gt;
:# Carts may now be played directly from the Cart list&lt;br /&gt;
:# Macro Carts may now be run directly from the Cart list&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2019-06-16 13-20-41.png|left|thumb|400px|Artist Separation, Version 2]]&lt;br /&gt;
[[File:Screenshot from 2019-06-16 13-21-22.png|right|thumb|400px|border|Artist Separation, Version 3]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Artist Separation'' has moved from '''Clocks''' to '''Events''' in RDLogManager. ''Artist Separation'' now behaves like ''Title Separation'' when using Rivendell to generate Logs. Artist and Title separation can also be disabled.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2019-06-16 13-45-08.png|thumb|400px|]]&lt;br /&gt;
&lt;br /&gt;
You can rip compact discs in Rivendell 3 with the standalone ''RDDiscImport'' utility.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2019-06-16 21-37-16.png|left|thumb|200px|RDAdmin Host Management showing new PyPAD button]]&lt;br /&gt;
&lt;br /&gt;
Player instances now communicate '''Now''' and '''Next''' program-associated data ([[wikipedia:Program-associated_data|PAD]], or so-called ''[[wikipedia:Metadata|metadata]]'') via a standalone service called ''PyPAD''. This service uses short, easy to read [[wikipedia:Python_(programming_language)|Python]] scripts and configuration data to send the updates to the destinations of your choice. You may assign multiple PyPAD instances to each workstation in your Rivendell network.&lt;br /&gt;
&lt;br /&gt;
A new PyPAD script was added to send Now data to RDS Encoders that support the X-Command protocol, such as the Pira.cz.&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2019-06-16 21-39-29.png|center|thumb|List of PyPAD instances on a workstation]]&lt;br /&gt;
&lt;br /&gt;
Like Rivendell version 2 (and prior), the Now and Next instances are configured with data specific to each instance. Starting with Rivendell 3, this configuration data is no longer separate from the instance; the data resides in the Rivendell database.&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2019-06-16 21-40-16.png|right|thumb|Configuration data for a PyPAD instance]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A new RDDBConfig graphical utility was added for upgrading database schemas and backing up and restoring the database.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;amp;ldquo;Under-the-hood&amp;amp;rdquo; Changes in Rivendell 3 ===&lt;br /&gt;
&lt;br /&gt;
Rivendell 4 has many invisible changes in addition to the visible improvements.&lt;br /&gt;
&lt;br /&gt;
;rdservice&lt;br /&gt;
:The various service [[wikipedia:Daemon_(computing)|daemons]] are now launched and monitored by a &amp;amp;ldquo;super server&amp;amp;rdquo; called ''rdservice''. This daemon is configured to run via [[wikipedia:Systemd|systemd]] and is responsible for keeping all the background services running.&lt;br /&gt;
&lt;br /&gt;
;dropboxes&lt;br /&gt;
:Rivendell dropbox instances are now started by and monitored by ''rdservice''. In addition, the RDAdmin Dropboxes dialog includes a '''Reset''' button that enables manually re-starting the dropbox. It is now possible to Duplicate dropboxes.&lt;br /&gt;
&lt;br /&gt;
;&amp;amp;ldquo;headless&amp;amp;rdquo; RDAirPlay&lt;br /&gt;
:Rivendell 4 supports up to 23 so-called &amp;amp;rdquo;virtual&amp;amp;ldquo; players. These players work much like the original RDAirPlay, but require no physical (or logical) display to run. Instead of controlling the headless players with button clicks, you use Rivendell Macros to control the virtual players.&lt;br /&gt;
&lt;br /&gt;
;Unicode&lt;br /&gt;
:Rivendell is now Unicode UTF-8 clean. Your foreign-language metadata is safe with RD4.&lt;br /&gt;
&lt;br /&gt;
;web API&lt;br /&gt;
:Library bindings for both C/C++ and Python 3 have been added to facilitate the use of the Rivendell Web API in external applications&lt;br /&gt;
&lt;br /&gt;
;scheduler&lt;br /&gt;
The &amp;quot;STACK&amp;quot;, which keeps track of scheduled carts, is now purged and no longer grows indefinitely. This can significantly speed up log generation.&lt;br /&gt;
&lt;br /&gt;
;stability&lt;br /&gt;
:The changes in Rivendell 4 amount to even more stability and resilience.&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=Notable_Differences_Between_Version_2_And_Version_3&amp;diff=717</id>
		<title>Notable Differences Between Version 2 And Version 3</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=Notable_Differences_Between_Version_2_And_Version_3&amp;diff=717"/>
				<updated>2023-08-16T19:05:13Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: ElvishArtisan moved page Notable Differences Between Version 2 And Version 3 to Notable Differences Between Version 2 And Version 4: Deprecation of Rivendell v3.x&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Notable Differences Between Version 2 And Version 4]]&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=Notable_Differences_Between_Version_2_And_Version_4&amp;diff=715</id>
		<title>Notable Differences Between Version 2 And Version 4</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=Notable_Differences_Between_Version_2_And_Version_4&amp;diff=715"/>
				<updated>2023-08-16T19:04:07Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Notable Differences Between Major Version 2 And Major Version 4 ==&lt;br /&gt;
&lt;br /&gt;
Rivendell Version 4 (RD4) was released on June 16, 2023. This release came after over two years of concentrated development and testing by the Rivendell community, led by [https://www.paravelsystems.com/our-crew Fred Gleason]. One of the primary motivating factors for RD4 was the update to version 5 of the [https://qt.io/ Qt] development library while also retiring large chunks of technical debt remaining from the earlier years of Rivendell development. For most users this is mostly an &amp;amp;ldquo;under the hood&amp;amp;rdquo; thing, but this change has positioned Rivendell for future growth, modification, and improvement.&lt;br /&gt;
&lt;br /&gt;
Here are some more changes and improvements in Rivendell Version 4.&lt;br /&gt;
&lt;br /&gt;
=== User-visible Changes in RD4 ===&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2019-07-30 12-15-33.png|right|thumb|border|Ops Guide Cover Page]]&lt;br /&gt;
&lt;br /&gt;
Quite notably one of the most visible changes is the improved user documentation.&lt;br /&gt;
&lt;br /&gt;
:This version includes expanded discussion of many aspects of Rivendell operation and administration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2019-06-16 13-07-30.png|left|thumb|800px|border|RDLibrary Showing New Fields]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
RDLibrary has gotten a new look and some new functionality:&lt;br /&gt;
:# RDLibrary now tells you the count of currently displayed Carts&lt;br /&gt;
:# you may filter Carts based on up to ''two'' Scheduler Codes&lt;br /&gt;
:# Carts with multiple Cuts are shown with a &amp;amp;#8862; symbol; clicking on the &amp;amp;#8862; causes RDLibrary to display each of the Cuts in the Cart&lt;br /&gt;
:# Carts may now be played directly from the Cart list&lt;br /&gt;
:# Macro Carts may now be run directly from the Cart list&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2019-06-16 13-20-41.png|left|thumb|400px|Artist Separation, Version 2]]&lt;br /&gt;
[[File:Screenshot from 2019-06-16 13-21-22.png|right|thumb|400px|border|Artist Separation, Version 3]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Artist Separation'' has moved from '''Clocks''' to '''Events''' in RDLogManager. ''Artist Separation'' now behaves like ''Title Separation'' when using Rivendell to generate Logs. Artist and Title separation can also be disabled.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2019-06-16 13-45-08.png|thumb|400px|]]&lt;br /&gt;
&lt;br /&gt;
You can rip compact discs in Rivendell 3 with the standalone ''RDDiscImport'' utility.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2019-06-16 21-37-16.png|left|thumb|200px|RDAdmin Host Management showing new PyPAD button]]&lt;br /&gt;
&lt;br /&gt;
Player instances now communicate '''Now''' and '''Next''' program-associated data ([[wikipedia:Program-associated_data|PAD]], or so-called ''[[wikipedia:Metadata|metadata]]'') via a standalone service called ''PyPAD''. This service uses short, easy to read [[wikipedia:Python_(programming_language)|Python]] scripts and configuration data to send the updates to the destinations of your choice. You may assign multiple PyPAD instances to each workstation in your Rivendell network.&lt;br /&gt;
&lt;br /&gt;
A new PyPAD script was added to send Now data to RDS Encoders that support the X-Command protocol, such as the Pira.cz.&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2019-06-16 21-39-29.png|center|thumb|List of PyPAD instances on a workstation]]&lt;br /&gt;
&lt;br /&gt;
Like Rivendell version 2 (and prior), the Now and Next instances are configured with data specific to each instance. Starting with Rivendell 3, this configuration data is no longer separate from the instance; the data resides in the Rivendell database.&lt;br /&gt;
&lt;br /&gt;
[[File:Screenshot from 2019-06-16 21-40-16.png|right|thumb|Configuration data for a PyPAD instance]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A new RDDBConfig graphical utility was added for upgrading database schemas and backing up and restoring the database.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;amp;ldquo;Under-the-hood&amp;amp;rdquo; Changes in Rivendell 3 ===&lt;br /&gt;
&lt;br /&gt;
Rivendell 4 has many invisible changes in addition to the visible improvements.&lt;br /&gt;
&lt;br /&gt;
;rdservice&lt;br /&gt;
:The various service [[wikipedia:Daemon_(computing)|daemons]] are now launched and monitored by a &amp;amp;ldquo;super server&amp;amp;rdquo; called ''rdservice''. This daemon is configured to run via [[wikipedia:Systemd|systemd]] and is responsible for keeping all the background services running.&lt;br /&gt;
&lt;br /&gt;
;dropboxes&lt;br /&gt;
:Rivendell dropbox instances are now started by and monitored by ''rdservice''. In addition, the RDAdmin Dropboxes dialog includes a '''Reset''' button that enables manually re-starting the dropbox. It is now possible to Duplicate dropboxes.&lt;br /&gt;
&lt;br /&gt;
;&amp;amp;ldquo;headless&amp;amp;rdquo; RDAirPlay&lt;br /&gt;
:Rivendell 4 supports up to 23 so-called &amp;amp;rdquo;virtual&amp;amp;ldquo; players. These players work much like the original RDAirPlay, but require no physical (or logical) display to run. Instead of controlling the headless players with button clicks, you use Rivendell Macros to control the virtual players.&lt;br /&gt;
&lt;br /&gt;
;Unicode&lt;br /&gt;
:Rivendell is now Unicode UTF-8 clean. Your foreign-language metadata is safe with RD4.&lt;br /&gt;
&lt;br /&gt;
;web API&lt;br /&gt;
:Library bindings for both C/C++ and Python 3 have been added to facilitate the use of the Rivendell Web API in external applications&lt;br /&gt;
&lt;br /&gt;
;scheduler&lt;br /&gt;
The &amp;quot;STACK&amp;quot;, which keeps track of scheduled carts, is now purged and no longer grows indefinitely. This can significantly speed up log generation.&lt;br /&gt;
&lt;br /&gt;
;stability&lt;br /&gt;
:The changes in Rivendell 4 amount to even more stability and resilience.&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=Rivendell_Design_Documentation&amp;diff=712</id>
		<title>Rivendell Design Documentation</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=Rivendell_Design_Documentation&amp;diff=712"/>
				<updated>2023-07-20T16:16:31Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Public APIs ==&lt;br /&gt;
* Rivendell Web Interface API. [https://opsguide.rivendellaudio.org/apis/html/web_api.html HTML] [https://opsguide.rivendellaudio.org/apis/web_api.pdf PDF]. Can be used to enable third-party interaction with most elements of a Rivendell system. &lt;br /&gt;
&lt;br /&gt;
* [https://opsguide.rivendellaudio.org/html/chapter.pad.html Program Associated Data (PAD) Distribution System].&lt;br /&gt;
&lt;br /&gt;
A [https://pypi.org/project/rivendellaudio/ Python 3 binding] is available that provides access to both of the above APIs.&lt;br /&gt;
&lt;br /&gt;
== Internal Architecture and API Documentation ==&lt;br /&gt;
* Core Audio Engine Protocol [https://opsguide.rivendellaudio.org/apis/html/cae.html HTML] [https://opsguide.rivendellaudio.org/apis/cae.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
* Font Management System [https://opsguide.rivendellaudio.org/apis/html/fonts.html HTML] [https://opsguide.rivendellaudio.org/apis/fonts.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
* Multicast Notification Protocol [https://opsguide.rivendellaudio.org/apis/html/notification.html HTML] [https://opsguide.rivendellaudio.org/apis/notification.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
* Rivendell Interprocess Communication Protocol [https://opsguide.rivendellaudio.org/apis/html/ripc.html HTML] [https://opsguide.rivendellaudio.org/apis/ripc.pdf PDF]&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=Rivendell_Design_Documentation&amp;diff=711</id>
		<title>Rivendell Design Documentation</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=Rivendell_Design_Documentation&amp;diff=711"/>
				<updated>2023-07-20T16:13:26Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Public APIs ==&lt;br /&gt;
* Rivendell Web Interface API. [https://opsguide.rivendellaudio.org/apis/html/web_api.html HTML] [https://opsguide.rivendellaudio.org/apis/web_api.pdf PDF]. Can be used to enable third-party interaction with most elements of a Rivendell system. &lt;br /&gt;
&lt;br /&gt;
* [https://opsguide.rivendellaudio.org/html/chapter.pad.html#sect.pad.pypad PyPAD Program Associated Data Distribution System].&lt;br /&gt;
&lt;br /&gt;
A [https://pypi.org/project/rivendellaudio/ Python 3 binding] is available that provides access to both of the above APIs.&lt;br /&gt;
&lt;br /&gt;
== Internal Architecture and API Documentation ==&lt;br /&gt;
* Core Audio Engine Protocol [https://opsguide.rivendellaudio.org/apis/html/cae.html HTML] [https://opsguide.rivendellaudio.org/apis/cae.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
* Font Management System [https://opsguide.rivendellaudio.org/apis/html/fonts.html HTML] [https://opsguide.rivendellaudio.org/apis/fonts.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
* Multicast Notification Protocol [https://opsguide.rivendellaudio.org/apis/html/notification.html HTML] [https://opsguide.rivendellaudio.org/apis/notification.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
* Rivendell Interprocess Communication Protocol [https://opsguide.rivendellaudio.org/apis/html/ripc.html HTML] [https://opsguide.rivendellaudio.org/apis/ripc.pdf PDF]&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=Rivendell_Design_Documentation&amp;diff=710</id>
		<title>Rivendell Design Documentation</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=Rivendell_Design_Documentation&amp;diff=710"/>
				<updated>2023-07-20T16:02:23Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Public APIs ==&lt;br /&gt;
* Rivendell Web Interface API. [https://opsguide.rivendellaudio.org/apis/html/web_api.html HTML] [https://opsguide.rivendellaudio.org/apis/web_api.pdf PDF]. Can be used to enable third-party interaction with most elements of a Rivendell system. &lt;br /&gt;
&lt;br /&gt;
* [https://opsguide.rivendellaudio.org/html/chapter.pad.html#sect.pad.pypad PyPAD Program Associated Data Distribution System].&lt;br /&gt;
&lt;br /&gt;
A [https://pypi.org/project/rivendellaudio/ Python 3 binding] is available that provides access to both of the above APIs.&lt;br /&gt;
&lt;br /&gt;
== Internal APIs ==&lt;br /&gt;
* Core Audio Engine Protocol [https://opsguide.rivendellaudio.org/apis/html/cae.html HTML] [https://opsguide.rivendellaudio.org/apis/cae.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
* Font Management System [https://opsguide.rivendellaudio.org/apis/html/fonts.html HTML] [https://opsguide.rivendellaudio.org/apis/fonts.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
* Multicast Notification Protocol [https://opsguide.rivendellaudio.org/apis/html/notification.html HTML] [https://opsguide.rivendellaudio.org/apis/notification.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
* Rivendell Interprocess Communication Protocol [https://opsguide.rivendellaudio.org/apis/html/ripc.html HTML] [https://opsguide.rivendellaudio.org/apis/ripc.pdf PDF]&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=Rivendell_Design_Documentation&amp;diff=709</id>
		<title>Rivendell Design Documentation</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=Rivendell_Design_Documentation&amp;diff=709"/>
				<updated>2023-07-20T15:56:45Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Public APIs ==&lt;br /&gt;
* [https://opsguide.rivendellaudio.org/apis/web_api.pdf Rivendell Web API]. Can be used to enable third-party interaction with most elements of a Rivendell system. &lt;br /&gt;
&lt;br /&gt;
* [https://opsguide.rivendellaudio.org/html/chapter.pad.html#sect.pad.pypad PyPAD Program Associated Data Distribution System].&lt;br /&gt;
&lt;br /&gt;
A [https://pypi.org/project/rivendellaudio/ Python 3 binding] is available that provides access to both of the above APIs.&lt;br /&gt;
&lt;br /&gt;
== Internal APIs ==&lt;br /&gt;
* Core Audio Engine Protocol [https://opsguide.rivendellaudio.org/apis/html/cae.html HTML] [https://opsguide.rivendellaudio.org/apis/cae.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
* Font Management System [https://opsguide.rivendellaudio.org/apis/html/fonts.html HTML] [https://opsguide.rivendellaudio.org/apis/fonts.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
* Multicast Notification Protocol [https://opsguide.rivendellaudio.org/apis/html/notification.html HTML] [https://opsguide.rivendellaudio.org/apis/notification.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
* Rivendell Interprocess Communication Protocol [https://opsguide.rivendellaudio.org/apis/html/ripc.html HTML] [https://opsguide.rivendellaudio.org/apis/ripc.pdf PDF]&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=Rivendell_Design_Documentation&amp;diff=708</id>
		<title>Rivendell Design Documentation</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=Rivendell_Design_Documentation&amp;diff=708"/>
				<updated>2023-07-20T15:47:54Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Public APIs ==&lt;br /&gt;
* [https://opsguide.rivendellaudio.org/apis/web_api.pdf Rivendell Web API]. Can be used to enable third-party interaction with most elements of a Rivendell system. &lt;br /&gt;
&lt;br /&gt;
* PyPAD Program Associated Data Distribution System.&lt;br /&gt;
&lt;br /&gt;
A [https://pypi.org/project/rivendellaudio/ Python 3 binding] is available that provides access to both of the above APIs.&lt;br /&gt;
&lt;br /&gt;
== Internal APIs ==&lt;br /&gt;
* Core Audio Engine Protocol [https://opsguide.rivendellaudio.org/apis/html/cae.html HTML] [https://opsguide.rivendellaudio.org/apis/cae.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
* Font Management System [https://opsguide.rivendellaudio.org/apis/html/fonts.html HTML] [https://opsguide.rivendellaudio.org/apis/fonts.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
* Multicast Notification Protocol [https://opsguide.rivendellaudio.org/apis/html/notification.html HTML] [https://opsguide.rivendellaudio.org/apis/notification.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
* Rivendell Interprocess Communication Protocol [https://opsguide.rivendellaudio.org/apis/html/ripc.html HTML] [https://opsguide.rivendellaudio.org/apis/ripc.pdf PDF]&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=Documentation&amp;diff=707</id>
		<title>Documentation</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=Documentation&amp;diff=707"/>
				<updated>2023-07-20T15:29:42Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Documentation ===&lt;br /&gt;
==== User Guides ====&lt;br /&gt;
&lt;br /&gt;
This section contains User Guides that can be used by end users. Information for system administrators is in other areas of the wiki.&lt;br /&gt;
&lt;br /&gt;
* [[Cookbook|The Rivendell Cookbook]]&lt;br /&gt;
* [[Rivendell Operations Guide]] The official reference documentation that is published alongside of the Rivendell source code.&lt;br /&gt;
* [https://www.marshall.edu/wmul/files/Ops-Manual__Volume_III__Computer_Playback__2023-07-19.pdf WMUL-FM Operations Manual Volume III - Computer Playback]. Covers much of the same material as the &amp;quot;official&amp;quot; operations guide. Part of the excellent series of [https://www.marshall.edu/wmul/training-manuals WMUL-FM training manuals] published by [https://www.marshall.edu Marshall University].&lt;br /&gt;
* [http://thebrettblog.wordpress.com/2009/12/31/rivendell-how-to-schedule-music/ How to Schedule Music - on The-Brett-Blog - Excellent Work with Screen Shots!]&lt;br /&gt;
* [[Managing Scheduler Rules]]&lt;br /&gt;
* [[Log Creation|Log Creation and Music Scheduling]]&lt;br /&gt;
* [[Creating logs from the command line]]&lt;br /&gt;
* [[Log Transitions]]&lt;br /&gt;
* [[How to setup a rotation of fill in logs that can be loaded via a macro]]&lt;br /&gt;
* [[What to use the Aux1 and Aux2 logs for?]]&lt;br /&gt;
* [[How to use wildcards in the logname, using the RML command LL]]&lt;br /&gt;
* [[Importing External Logs into Rivendell]] - Also see [[Importing External logs into Rivendell - Music and Traffic]]&lt;br /&gt;
* [[Delayed playback]]&lt;br /&gt;
* [[Using rdimport to import mp3 files]] - Also works for wav files.&lt;br /&gt;
* [[Generating Reports]]&lt;br /&gt;
* [[Recording airchecks with gpi from microphone switch]]&lt;br /&gt;
* [[How to do network breaks with multiple Rivendell machines]]&lt;br /&gt;
* [[How do I make Rivendell play Audio from the &amp;quot;Line In&amp;quot; of the Sound Card on the air?]]&lt;br /&gt;
* [[How to play time tone pips and fade the currently playing audio]]&lt;br /&gt;
* [[How to handle Daylight Savings Time/Summer Time changes in Rivendell]]&lt;br /&gt;
* [[How to delete old voice track carts from RDLibrary]]&lt;br /&gt;
* [[How to setup downloads and dayparting for prerecorded daily programs in RDCatch | RDCatch - How to setup downloads and dayparting for prerecorded daily programs]]&lt;br /&gt;
* [[RDCatch - How to manually run missed events]]&lt;br /&gt;
&lt;br /&gt;
==== System Administrator Guides ==== &lt;br /&gt;
&lt;br /&gt;
This secton should not contain information for end users or details of how to setup, configure or troubleshoot Rivendell.&lt;br /&gt;
&lt;br /&gt;
* [[users|Understanding users in Rivendell]] - Describes various types of users, including Linux, Rivendell and Mysql users.&lt;br /&gt;
* [[Migrating Systems|Migrating audio and database entries from one Rivendell system to another]]&lt;br /&gt;
* [[Auto-Recovery After a Power Failure]]&lt;br /&gt;
* [[Remote Administration with VNC]]&lt;br /&gt;
* [[Rivendell daemons]]&lt;br /&gt;
* [[Problems backing up or restoring the Rivendell Database]]&lt;br /&gt;
* [[Rivendell Reference Manual]]&lt;br /&gt;
* [[Rivendell Installed Documentation | Rivendell Documentation installed when Rivendell is installed]]&lt;br /&gt;
* [[Rivendell Application Notes]]&lt;br /&gt;
* [[Rivendell Design Documentation]]&lt;br /&gt;
* [[Translations|Preparing Translations]]&lt;br /&gt;
* [[Rivendell News File]]&lt;br /&gt;
* [[Rivendell Database Schema Versions]]&lt;br /&gt;
* [[Standard Rivendell documentation that should be installed in doc/rivendell]]&lt;br /&gt;
* [[RDGpiMon]] - How to monitor GPI events.&lt;br /&gt;
* [[RML MB command - How to use the Rivendell Macro Language (RML) Message Box (MB) Display]]&lt;br /&gt;
* [[RDLogedit]]&lt;br /&gt;
* [[Rivendell Loadable Module SDK - For Sending Now &amp;amp; Next Data to external systems]]&lt;br /&gt;
* [[Dropboxes]] - How to use dropboxes to send and receive audio.&lt;br /&gt;
* [[Podcasting crash course]]&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=Documentation&amp;diff=706</id>
		<title>Documentation</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=Documentation&amp;diff=706"/>
				<updated>2023-07-20T15:27:31Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Documentation ===&lt;br /&gt;
==== User Guides ====&lt;br /&gt;
&lt;br /&gt;
This section contains User Guides that can be used by end users. Information for system administrators is in other areas of the wiki.&lt;br /&gt;
&lt;br /&gt;
* [[Cookbook|The Rivendell Cookbook]]&lt;br /&gt;
* [[Rivendell Operations Guide]] The official reference documentation that is published alongside of the Rivendell source code.&lt;br /&gt;
* [https://www.marshall.edu/wmul/files/Ops-Manual__Volume_III__Computer_Playback__2023-07-19.pdf WMUL-FM Operations Manual Volume III - Computer Playback]. Covers much of the same material as the &amp;quot;official&amp;quot; operations guide. Part of the excellent series of [https://www.marshall.edu/wmul/training-manuals WMUL-FM training manuals] published by [https://www.marshall.edu Marshall University].&lt;br /&gt;
* [http://thebrettblog.wordpress.com/2009/12/31/rivendell-how-to-schedule-music/ How to Schedule Music - on The-Brett-Blog - Excellent Work with Screen Shots!]&lt;br /&gt;
* [[Managing Scheduler Rules]]&lt;br /&gt;
* [[Log Creation|Log Creation and Music Scheduling]]&lt;br /&gt;
* [[Creating logs from the command line]]&lt;br /&gt;
* [[Log Transitions]]&lt;br /&gt;
* [[How to setup a rotation of fill in logs that can be loaded via a macro]]&lt;br /&gt;
* [[What to use the Aux1 and Aux2 logs for?]]&lt;br /&gt;
* [[How to use wildcards in the logname, using the RML command LL]]&lt;br /&gt;
* [[Importing External Logs into Rivendell]] - Also see [[Importing External logs into Rivendell - Music and Traffic]]&lt;br /&gt;
* [[Delayed playback]]&lt;br /&gt;
* [[Using rdimport to import mp3 files]] - Also works for wav files.&lt;br /&gt;
* [[Generating Reports]]&lt;br /&gt;
* [[Recording airchecks with gpi from microphone switch]]&lt;br /&gt;
* [[How to do network breaks with multiple Rivendell machines]]&lt;br /&gt;
* [[How do I make Rivendell play Audio from the &amp;quot;Line In&amp;quot; of the Sound Card on the air?]]&lt;br /&gt;
* [[How to play time tone pips and fade the currently playing audio]]&lt;br /&gt;
* [[How to handle Daylight Savings Time/Summer Time changes in Rivendell]]&lt;br /&gt;
* [[How to delete old voice track carts from RDLibrary]]&lt;br /&gt;
* [[How to setup downloads and dayparting for prerecorded daily programs in RDCatch | RDCatch - How to setup downloads and dayparting for prerecorded daily programs]]&lt;br /&gt;
* [[RDCatch - How to manually run missed events]]&lt;br /&gt;
&lt;br /&gt;
==== System Administrator Guides ==== &lt;br /&gt;
&lt;br /&gt;
This secton should not contain information for end users or details of how to setup, configure or troubleshoot Rivendell.&lt;br /&gt;
&lt;br /&gt;
* [[users|Understanding users in Rivendell]] - Describes various types of users, including Linux, Rivendell and Mysql users.&lt;br /&gt;
* [[Migrating Systems|Migrating audio and database entries from one Rivendell system to another]]&lt;br /&gt;
* [[Auto-Recovery After a Power Failure]]&lt;br /&gt;
* [[Remote Administration with VNC]]&lt;br /&gt;
* [[Rivendell daemons]]&lt;br /&gt;
* [[Problems backing up or restoring the Rivendell Database]]&lt;br /&gt;
* [[Rivendell Reference Manual]]&lt;br /&gt;
* [[Rivendell Operations Guide]]&lt;br /&gt;
* [[Rivendell Installed Documentation | Rivendell Documentation installed when Rivendell is installed]]&lt;br /&gt;
* [[Rivendell Application Notes]]&lt;br /&gt;
* [[Rivendell Design Documentation]]&lt;br /&gt;
* [[Translations|Preparing Translations]]&lt;br /&gt;
* [[Rivendell News File]]&lt;br /&gt;
* [[Rivendell Database Schema Versions]]&lt;br /&gt;
* [[Standard Rivendell documentation that should be installed in doc/rivendell]]&lt;br /&gt;
* [[RDGpiMon]] - How to monitor GPI events.&lt;br /&gt;
* [[RML MB command - How to use the Rivendell Macro Language (RML) Message Box (MB) Display]]&lt;br /&gt;
* [[RDLogedit]]&lt;br /&gt;
* [[Rivendell Loadable Module SDK - For Sending Now &amp;amp; Next Data to external systems]]&lt;br /&gt;
* [[Dropboxes]] - How to use dropboxes to send and receive audio.&lt;br /&gt;
* [[Podcasting crash course]]&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=Documentation&amp;diff=705</id>
		<title>Documentation</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=Documentation&amp;diff=705"/>
				<updated>2023-07-20T15:26:45Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Documentation ===&lt;br /&gt;
==== User Guides ====&lt;br /&gt;
&lt;br /&gt;
This section contains User Guides that can be used by end users. Information for system administrators is in other areas of the wiki.&lt;br /&gt;
&lt;br /&gt;
* [[Cookbook|The Rivendell Cookbook]]&lt;br /&gt;
* [[Rivendell Operations Guide]] The official reference documentation that is published as part of the Rivendell source code.&lt;br /&gt;
* [https://www.marshall.edu/wmul/files/Ops-Manual__Volume_III__Computer_Playback__2023-07-19.pdf WMUL-FM Operations Manual Volume III - Computer Playback]. Covers much of the same material as the &amp;quot;official&amp;quot; operations guide. Part of the excellent series of [https://www.marshall.edu/wmul/training-manuals WMUL-FM training manuals] published by [https://www.marshall.edu Marshall University].&lt;br /&gt;
* [http://thebrettblog.wordpress.com/2009/12/31/rivendell-how-to-schedule-music/ How to Schedule Music - on The-Brett-Blog - Excellent Work with Screen Shots!]&lt;br /&gt;
* [[Managing Scheduler Rules]]&lt;br /&gt;
* [[Log Creation|Log Creation and Music Scheduling]]&lt;br /&gt;
* [[Creating logs from the command line]]&lt;br /&gt;
* [[Log Transitions]]&lt;br /&gt;
* [[How to setup a rotation of fill in logs that can be loaded via a macro]]&lt;br /&gt;
* [[What to use the Aux1 and Aux2 logs for?]]&lt;br /&gt;
* [[How to use wildcards in the logname, using the RML command LL]]&lt;br /&gt;
* [[Importing External Logs into Rivendell]] - Also see [[Importing External logs into Rivendell - Music and Traffic]]&lt;br /&gt;
* [[Delayed playback]]&lt;br /&gt;
* [[Using rdimport to import mp3 files]] - Also works for wav files.&lt;br /&gt;
* [[Generating Reports]]&lt;br /&gt;
* [[Recording airchecks with gpi from microphone switch]]&lt;br /&gt;
* [[How to do network breaks with multiple Rivendell machines]]&lt;br /&gt;
* [[How do I make Rivendell play Audio from the &amp;quot;Line In&amp;quot; of the Sound Card on the air?]]&lt;br /&gt;
* [[How to play time tone pips and fade the currently playing audio]]&lt;br /&gt;
* [[How to handle Daylight Savings Time/Summer Time changes in Rivendell]]&lt;br /&gt;
* [[How to delete old voice track carts from RDLibrary]]&lt;br /&gt;
* [[How to setup downloads and dayparting for prerecorded daily programs in RDCatch | RDCatch - How to setup downloads and dayparting for prerecorded daily programs]]&lt;br /&gt;
* [[RDCatch - How to manually run missed events]]&lt;br /&gt;
&lt;br /&gt;
==== System Administrator Guides ==== &lt;br /&gt;
&lt;br /&gt;
This secton should not contain information for end users or details of how to setup, configure or troubleshoot Rivendell.&lt;br /&gt;
&lt;br /&gt;
* [[users|Understanding users in Rivendell]] - Describes various types of users, including Linux, Rivendell and Mysql users.&lt;br /&gt;
* [[Migrating Systems|Migrating audio and database entries from one Rivendell system to another]]&lt;br /&gt;
* [[Auto-Recovery After a Power Failure]]&lt;br /&gt;
* [[Remote Administration with VNC]]&lt;br /&gt;
* [[Rivendell daemons]]&lt;br /&gt;
* [[Problems backing up or restoring the Rivendell Database]]&lt;br /&gt;
* [[Rivendell Reference Manual]]&lt;br /&gt;
* [[Rivendell Operations Guide]]&lt;br /&gt;
* [[Rivendell Installed Documentation | Rivendell Documentation installed when Rivendell is installed]]&lt;br /&gt;
* [[Rivendell Application Notes]]&lt;br /&gt;
* [[Rivendell Design Documentation]]&lt;br /&gt;
* [[Translations|Preparing Translations]]&lt;br /&gt;
* [[Rivendell News File]]&lt;br /&gt;
* [[Rivendell Database Schema Versions]]&lt;br /&gt;
* [[Standard Rivendell documentation that should be installed in doc/rivendell]]&lt;br /&gt;
* [[RDGpiMon]] - How to monitor GPI events.&lt;br /&gt;
* [[RML MB command - How to use the Rivendell Macro Language (RML) Message Box (MB) Display]]&lt;br /&gt;
* [[RDLogedit]]&lt;br /&gt;
* [[Rivendell Loadable Module SDK - For Sending Now &amp;amp; Next Data to external systems]]&lt;br /&gt;
* [[Dropboxes]] - How to use dropboxes to send and receive audio.&lt;br /&gt;
* [[Podcasting crash course]]&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=Rivendell_Operations_Guide&amp;diff=704</id>
		<title>Rivendell Operations Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=Rivendell_Operations_Guide&amp;diff=704"/>
				<updated>2023-07-20T15:17:58Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [https://opsguide.rivendellaudio.org/html/ Rivendell Automation System - Operations and Administration Guide] (OAG) is written primarily by Frederick F. Gleason, Jr, with contributions from the Rivendell community. The OAG covers the basics of Rivendell, and goes into detail on many aspects of the system. It starts with a [https://opsguide.rivendellaudio.org/html/chapter.overview.html high level overview] and goes through each module of Rivendell explaining its function and use.&lt;br /&gt;
&lt;br /&gt;
The OAG is the definitive source of information about Rivendell. It is developed and [https://github.com/ElvishArtisan/rivendell/ managed] along with the [https://github.com/ElvishArtisan/rivendell source code]. Packaged copies of Rivendell include the OAG in [https://opsguide.rivendellaudio.org/ PDF] and [https://opsguide.rivendellaudio.org/html/ HTML] formats.&lt;br /&gt;
&lt;br /&gt;
You will find that many articles on this wiki link to specific sections in the OAG.&lt;br /&gt;
&lt;br /&gt;
Please help keep the links to documentation in this article current. Up to date links are always available on the [https://rivendellaudio.org/ Rivendell Audio] website.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;right&amp;quot;&amp;gt;&amp;lt;font style=&amp;quot;font-size:60%;&amp;quot;&amp;gt;links last checked 2023-07-07&amp;lt;/font&amp;gt;&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=Documentation&amp;diff=703</id>
		<title>Documentation</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=Documentation&amp;diff=703"/>
				<updated>2023-07-20T15:15:56Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Documentation ===&lt;br /&gt;
==== User Guides ====&lt;br /&gt;
&lt;br /&gt;
This section contains User Guides that can be used by end users. Information for system administrators is in other areas of the wiki.&lt;br /&gt;
&lt;br /&gt;
* [[Cookbook|The Rivendell Cookbook]]&lt;br /&gt;
* [https://opsguide.rivendellaudio.org/html/index.html Rivendell Operations and Administration Guide] The official reference documentation that is published as part of the Rivendell sources. Also available as a [https://opsguide.rivendellaudio.org/ printer-friendly PDF].&lt;br /&gt;
* [https://www.marshall.edu/wmul/files/Ops-Manual__Volume_III__Computer_Playback__2023-07-19.pdf WMUL-FM Operations Manual Volume III - Computer Playback]. Covers much of the same material as the &amp;quot;official&amp;quot; operations guide. Part of the excellent series of [https://www.marshall.edu/wmul/training-manuals WMUL-FM training manuals] published by [https://www.marshall.edu Marshall University].&lt;br /&gt;
* [http://thebrettblog.wordpress.com/2009/12/31/rivendell-how-to-schedule-music/ How to Schedule Music - on The-Brett-Blog - Excellent Work with Screen Shots!]&lt;br /&gt;
* [[Managing Scheduler Rules]]&lt;br /&gt;
* [[Log Creation|Log Creation and Music Scheduling]]&lt;br /&gt;
* [[Creating logs from the command line]]&lt;br /&gt;
* [[Log Transitions]]&lt;br /&gt;
* [[How to setup a rotation of fill in logs that can be loaded via a macro]]&lt;br /&gt;
* [[What to use the Aux1 and Aux2 logs for?]]&lt;br /&gt;
* [[How to use wildcards in the logname, using the RML command LL]]&lt;br /&gt;
* [[Importing External Logs into Rivendell]] - Also see [[Importing External logs into Rivendell - Music and Traffic]]&lt;br /&gt;
* [[Delayed playback]]&lt;br /&gt;
* [[Using rdimport to import mp3 files]] - Also works for wav files.&lt;br /&gt;
* [[Generating Reports]]&lt;br /&gt;
* [[Recording airchecks with gpi from microphone switch]]&lt;br /&gt;
* [[How to do network breaks with multiple Rivendell machines]]&lt;br /&gt;
* [[How do I make Rivendell play Audio from the &amp;quot;Line In&amp;quot; of the Sound Card on the air?]]&lt;br /&gt;
* [[How to play time tone pips and fade the currently playing audio]]&lt;br /&gt;
* [[How to handle Daylight Savings Time/Summer Time changes in Rivendell]]&lt;br /&gt;
* [[How to delete old voice track carts from RDLibrary]]&lt;br /&gt;
* [[How to setup downloads and dayparting for prerecorded daily programs in RDCatch | RDCatch - How to setup downloads and dayparting for prerecorded daily programs]]&lt;br /&gt;
* [[RDCatch - How to manually run missed events]]&lt;br /&gt;
&lt;br /&gt;
==== System Administrator Guides ==== &lt;br /&gt;
&lt;br /&gt;
This secton should not contain information for end users or details of how to setup, configure or troubleshoot Rivendell.&lt;br /&gt;
&lt;br /&gt;
* [[users|Understanding users in Rivendell]] - Describes various types of users, including Linux, Rivendell and Mysql users.&lt;br /&gt;
* [[Migrating Systems|Migrating audio and database entries from one Rivendell system to another]]&lt;br /&gt;
* [[Auto-Recovery After a Power Failure]]&lt;br /&gt;
* [[Remote Administration with VNC]]&lt;br /&gt;
* [[Rivendell daemons]]&lt;br /&gt;
* [[Problems backing up or restoring the Rivendell Database]]&lt;br /&gt;
* [[Rivendell Reference Manual]]&lt;br /&gt;
* [[Rivendell Operations Guide]]&lt;br /&gt;
* [[Rivendell Installed Documentation | Rivendell Documentation installed when Rivendell is installed]]&lt;br /&gt;
* [[Rivendell Application Notes]]&lt;br /&gt;
* [[Rivendell Design Documentation]]&lt;br /&gt;
* [[Translations|Preparing Translations]]&lt;br /&gt;
* [[Rivendell News File]]&lt;br /&gt;
* [[Rivendell Database Schema Versions]]&lt;br /&gt;
* [[Standard Rivendell documentation that should be installed in doc/rivendell]]&lt;br /&gt;
* [[RDGpiMon]] - How to monitor GPI events.&lt;br /&gt;
* [[RML MB command - How to use the Rivendell Macro Language (RML) Message Box (MB) Display]]&lt;br /&gt;
* [[RDLogedit]]&lt;br /&gt;
* [[Rivendell Loadable Module SDK - For Sending Now &amp;amp; Next Data to external systems]]&lt;br /&gt;
* [[Dropboxes]] - How to use dropboxes to send and receive audio.&lt;br /&gt;
* [[Podcasting crash course]]&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=Documentation&amp;diff=702</id>
		<title>Documentation</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=Documentation&amp;diff=702"/>
				<updated>2023-07-20T15:11:00Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Documentation ===&lt;br /&gt;
==== User Guides ====&lt;br /&gt;
&lt;br /&gt;
This section contains User Guides that can be used by end users. Information for system administrators is in other areas of the wiki.&lt;br /&gt;
&lt;br /&gt;
* [[Cookbook|The Rivendell Cookbook]]&lt;br /&gt;
* [https://opsguide.rivendellaudio.org/html/index.html Rivendell Operations and Administration Guide] The official reference documentation that is published as part of the Rivendell sources. Also available as a [https://opsguide.rivendellaudio.org/ printer-friendly PDF].&lt;br /&gt;
* [https://www.marshall.edu/wmul/files/Ops-Manual__Volume_III__Computer_Playback__2023-07-19.pdf WMUL-FM Operations Manual Volume III - Computer Playback]. Covers much of the same material as the &amp;quot;official&amp;quot; operations guide. Part of the excellent series of [https://www.marshall.edu/wmul/training-manuals WMUL-FM training manuals] published by [https://www.marshall.edu Marshall University].&lt;br /&gt;
* [http://thebrettblog.wordpress.com/2009/12/31/rivendell-how-to-schedule-music/ How to Schedule Music - on The-Brett-Blog - Excellent Work with Screen Shots!]&lt;br /&gt;
* [[Managing Scheduler Rules]]&lt;br /&gt;
* [[Log Creation|Log Creation and Music Scheduling]]&lt;br /&gt;
* [[Creating logs from the command line]]&lt;br /&gt;
* [[Log Transitions]]&lt;br /&gt;
* [[How to setup a rotation of fill in logs that can be loaded via a macro]]&lt;br /&gt;
* [[What to use the Aux1 and Aux2 logs for?]]&lt;br /&gt;
* [[How to use wildcards in the logname, using the RML command LL]]&lt;br /&gt;
* [[Importing External Logs into Rivendell]] - Also see [[Importing External logs into Rivendell - Music and Traffic]]&lt;br /&gt;
* [[Delayed playback]]&lt;br /&gt;
* [[Using rdimport to import mp3 files]] - Also works for wav files.&lt;br /&gt;
* [[Generating Reports]]&lt;br /&gt;
* [[Recording airchecks with gpi from microphone switch]]&lt;br /&gt;
* [[How to do network breaks with multiple Rivendell machines]]&lt;br /&gt;
* [[How do I make Rivendell play Audio from the &amp;quot;Line In&amp;quot; of the Sound Card on the air?]]&lt;br /&gt;
* [[How to play time tone pips and fade the currently playing audio]]&lt;br /&gt;
* [[How to handle Daylight Savings Time/Summer Time changes in Rivendell]]&lt;br /&gt;
* [[How to delete old voice track carts from RDLibrary]]&lt;br /&gt;
* [[How to setup downloads and dayparting for prerecorded daily programs in RDCatch | RDCatch - How to setup downloads and dayparting for prerecorded daily programs]]&lt;br /&gt;
* [[RDCatch - How to manually run missed events]]&lt;br /&gt;
&lt;br /&gt;
==== System Administrator Guides ==== &lt;br /&gt;
&lt;br /&gt;
This secton should not contain information for end users or details of how to setup, configure or troubleshoot Rivendell.&lt;br /&gt;
&lt;br /&gt;
* [[users|Understanding users in Rivendell]] - Describes various types of users, including Linux, Rivendell and Mysql users.&lt;br /&gt;
* [[Migrating Systems|Migrating audio and database entries from one Rivendell system to another]]&lt;br /&gt;
* [[Auto-Recovery After a Power Failure]]&lt;br /&gt;
* [[Remote Administration with VNC]]&lt;br /&gt;
* [[Rivendell daemons]]&lt;br /&gt;
* [[Problems backing up or restoring the Rivendell Database]]&lt;br /&gt;
* [[Rivendell Reference Manual]]&lt;br /&gt;
* [[Rivendell Operations Guide]]&lt;br /&gt;
* [[Rivendell Operations Guide - Online|Rivendell Operations Guide is '''now available on-line'''.]]&lt;br /&gt;
* [[Rivendell Technical and Administration Guide]] - Only exists in skeleton form.&lt;br /&gt;
* [[Rivendell Installed Documentation | Rivendell Documentation installed when Rivendell is installed]]&lt;br /&gt;
* [[Rivendell Application Notes]]&lt;br /&gt;
* [[Rivendell Design Documentation]]&lt;br /&gt;
* [[Translations|Preparing Translations]]&lt;br /&gt;
* [[Rivendell News File]]&lt;br /&gt;
* [[Rivendell Database Schema Versions]]&lt;br /&gt;
* [[Standard Rivendell documentation that should be installed in doc/rivendell]]&lt;br /&gt;
* [[RDGpiMon]] - How to monitor GPI events.&lt;br /&gt;
* [[RML MB command - How to use the Rivendell Macro Language (RML) Message Box (MB) Display]]&lt;br /&gt;
* [[RDLogedit]]&lt;br /&gt;
* [[Rivendell Loadable Module SDK - For Sending Now &amp;amp; Next Data to external systems]]&lt;br /&gt;
* [[Dropboxes]] - How to use dropboxes to send and receive audio.&lt;br /&gt;
* [[Podcasting crash course]]&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=Documentation&amp;diff=701</id>
		<title>Documentation</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=Documentation&amp;diff=701"/>
				<updated>2023-07-20T14:11:49Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Documentation ===&lt;br /&gt;
==== User Guides ====&lt;br /&gt;
&lt;br /&gt;
This section contains User Guides that can be used by end users. Information for system administrators is in other areas of the wiki.&lt;br /&gt;
&lt;br /&gt;
* [[Cookbook|The Rivendell Cookbook]]&lt;br /&gt;
* [https://opsguide.rivendellaudio.org/html/index.html Rivendell Operations and Administration Guide] Also available as a [https://opsguide.rivendellaudio.org/ PDF].&lt;br /&gt;
* [http://thebrettblog.wordpress.com/2009/12/31/rivendell-how-to-schedule-music/ How to Schedule Music - on The-Brett-Blog - Excellent Work with Screen Shots!]&lt;br /&gt;
* [[Managing Scheduler Rules]]&lt;br /&gt;
* [[Log Creation|Log Creation and Music Scheduling]]&lt;br /&gt;
* [[Creating logs from the command line]]&lt;br /&gt;
* [[Log Transitions]]&lt;br /&gt;
* [[How to setup a rotation of fill in logs that can be loaded via a macro]]&lt;br /&gt;
* [[What to use the Aux1 and Aux2 logs for?]]&lt;br /&gt;
* [[How to use wildcards in the logname, using the RML command LL]]&lt;br /&gt;
* [[Importing External Logs into Rivendell]] - Also see [[Importing External logs into Rivendell - Music and Traffic]]&lt;br /&gt;
* [[Delayed playback]]&lt;br /&gt;
* [[Using rdimport to import mp3 files]] - Also works for wav files.&lt;br /&gt;
* [[Generating Reports]]&lt;br /&gt;
* [[Recording airchecks with gpi from microphone switch]]&lt;br /&gt;
* [[How to do network breaks with multiple Rivendell machines]]&lt;br /&gt;
* [[How do I make Rivendell play Audio from the &amp;quot;Line In&amp;quot; of the Sound Card on the air?]]&lt;br /&gt;
* [[How to play time tone pips and fade the currently playing audio]]&lt;br /&gt;
* [[How to handle Daylight Savings Time/Summer Time changes in Rivendell]]&lt;br /&gt;
* [[How to delete old voice track carts from RDLibrary]]&lt;br /&gt;
* [[How to setup downloads and dayparting for prerecorded daily programs in RDCatch | RDCatch - How to setup downloads and dayparting for prerecorded daily programs]]&lt;br /&gt;
* [[RDCatch - How to manually run missed events]]&lt;br /&gt;
&lt;br /&gt;
==== System Administrator Guides ==== &lt;br /&gt;
&lt;br /&gt;
This secton should not contain information for end users or details of how to setup, configure or troubleshoot Rivendell.&lt;br /&gt;
&lt;br /&gt;
* [[users|Understanding users in Rivendell]] - Describes various types of users, including Linux, Rivendell and Mysql users.&lt;br /&gt;
* [[Migrating Systems|Migrating audio and database entries from one Rivendell system to another]]&lt;br /&gt;
* [[Auto-Recovery After a Power Failure]]&lt;br /&gt;
* [[Remote Administration with VNC]]&lt;br /&gt;
* [[Rivendell daemons]]&lt;br /&gt;
* [[Problems backing up or restoring the Rivendell Database]]&lt;br /&gt;
* [[Rivendell Reference Manual]]&lt;br /&gt;
* [[Rivendell Operations Guide]]&lt;br /&gt;
* [[Rivendell Operations Guide - Online|Rivendell Operations Guide is '''now available on-line'''.]]&lt;br /&gt;
* [[Rivendell Technical and Administration Guide]] - Only exists in skeleton form.&lt;br /&gt;
* [[Rivendell Installed Documentation | Rivendell Documentation installed when Rivendell is installed]]&lt;br /&gt;
* [[Rivendell Application Notes]]&lt;br /&gt;
* [[Rivendell Design Documentation]]&lt;br /&gt;
* [[Translations|Preparing Translations]]&lt;br /&gt;
* [[Rivendell News File]]&lt;br /&gt;
* [[Rivendell Database Schema Versions]]&lt;br /&gt;
* [[Standard Rivendell documentation that should be installed in doc/rivendell]]&lt;br /&gt;
* [[RDGpiMon]] - How to monitor GPI events.&lt;br /&gt;
* [[RML MB command - How to use the Rivendell Macro Language (RML) Message Box (MB) Display]]&lt;br /&gt;
* [[RDLogedit]]&lt;br /&gt;
* [[Rivendell Loadable Module SDK - For Sending Now &amp;amp; Next Data to external systems]]&lt;br /&gt;
* [[Dropboxes]] - How to use dropboxes to send and receive audio.&lt;br /&gt;
* [[Podcasting crash course]]&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=Installing_Rivendell&amp;diff=684</id>
		<title>Installing Rivendell</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=Installing_Rivendell&amp;diff=684"/>
				<updated>2023-07-02T20:30:04Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: /* Building from Source */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Appliance Installers ===&lt;br /&gt;
The preferred and easiest way to create a working Rivendell system is to use one of the standard &amp;quot;appliance&amp;quot; installers provided by [https://paravelsystems.com Paravel Systems]. The following Linux distributions are supported:&lt;br /&gt;
&lt;br /&gt;
==== Ubuntu 22.04 &amp;quot;Jammy Jellyfish&amp;quot; (also works with Linux Mint 21) ====&lt;br /&gt;
* [https://software.paravelsystems.com/howtos/ubuntu/jammy/ Ubuntu 22.04 Appliance Installer for Rivendell 4.x] ('''RECOMMENDED''')&lt;br /&gt;
&lt;br /&gt;
==== RedHat Enterprise Linux 7 (RHEL-7) (also works with CentOS 7) ====&lt;br /&gt;
* [https://software.paravelsystems.com/howtos/CentOS/7rd4/ RHEL-7 Appliance Installer for Rivendell 4.x]&lt;br /&gt;
* [https://software.paravelsystems.com/howtos/CentOS/7rd3/ RHEL-7 Appliance Installer for Rivendell 3.x] ('''DEPRECATED''')&lt;br /&gt;
&lt;br /&gt;
==== RedHat Enterprise Linux 8 (RHEL-8) (also works with Rocky Linux 8) ====&lt;br /&gt;
* [https://software.paravelsystems.com/howtos/rhel/8rd4/ RHEL-8 Appliance Installer for Rivendell 4.x]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Building from Source ===&lt;br /&gt;
The &amp;quot;appliance&amp;quot; installations listed above can also be used as a basis for creating a development instance capable of building Rivendell from its original sources. While not recommended for use in production &amp;quot;on the air&amp;quot; environments, such a development instance can be extremely useful for testing new features or bugfixes that have been committed to the GitHub repository but not yet released in the pre-built packages.&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.rivendellaudio.org/index.php/Building_Rivendell_from_source Building a Rivendell Development Instance on Ubuntu 22.04 &amp;quot;Jammy Jellyfish&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== Legacy/Deprecated Installs ===&lt;br /&gt;
The following items apply to the deprecated v3.x versions of Rivendell, on various &amp;quot;not officially supported&amp;quot; distributions.&lt;br /&gt;
&lt;br /&gt;
==== Ubuntu ====&lt;br /&gt;
===== Rivendell 3.x on Ubuntu 18.04 (Bionic Beaver) and Linux Mint 19.3 =====&lt;br /&gt;
[[Legacy Rivendell 3.6.7 on Ubuntu18 04 | Legacy Rivendell 3.6.7 on Ubuntu18 04]] covers how to compile from source and install Rivendell 3 (v3.6.7) on Ubuntu 18.04.  It has been reported these instructions also work on Linux Mint 19.3.&lt;br /&gt;
&lt;br /&gt;
===== Upgrading to Rivendell 4.x on Ubuntu 18.04 (Bionic Beaver) and Linux Mint 19.3 =====&lt;br /&gt;
&lt;br /&gt;
* [[Updating to Rivendell 4.x on Legacy Ubuntu18 04, Compiled from Source | Updating to Rivendell 4.x on Legacy Ubuntu18 04, Compiled from Source ]]  - while '''unsupported by the official release''' it is possible to upgrade to Rivendell 4.x on Ubuntu 18.04 for those who have previously compiled Rivendell 3.x.  This explains how to do it.&lt;br /&gt;
&lt;br /&gt;
==== Debian ====&lt;br /&gt;
The following pages describe how to install Rivendell from source on a Debian system.&lt;br /&gt;
&lt;br /&gt;
===== Rivendell 3.x on Debian 10 (Buster) =====&lt;br /&gt;
[[Debian10 | This page]] quickly relates how to install Rivendell 3 (v3.2.0) on Debian10.&lt;br /&gt;
&lt;br /&gt;
===== Rivendell 3.x on Debian 9 (Stretch) =====&lt;br /&gt;
[[Debian9 | This page]] quickly relates how to install Rivendell 3 (v3.0.3) on Debian9.&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=Streaming_from_Rivendell&amp;diff=683</id>
		<title>Streaming from Rivendell</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=Streaming_from_Rivendell&amp;diff=683"/>
				<updated>2023-07-02T19:49:42Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: /* Further Rivendell Streaming Info */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Using PyPAD to Generate PAD Updates ==&lt;br /&gt;
&lt;br /&gt;
Beginning with v3.0.1, Rivendell uses a system called 'PyPAD' to generate program associated data (&amp;quot;PAD&amp;quot;, sometimes also referred to in the Rivendell docs as &amp;quot;Now &amp;amp; Next&amp;quot;) updates in real time. Each time a log event starts or stops in RDAirplay, PyPAD can be configured to call one or more Python scripts, each of which are handed the parameters of the event to be be processed and/or forwarded by the code in the script. An overview of the system can be found in the [https://opsguide.rivendellaudio.org/html/chapter.pad.html Program Associated Data chapter] in the [https://opsguide.rivendellaudio.org/html/ Rivendell Operations Guide].&lt;br /&gt;
&lt;br /&gt;
While PyPAD is explicitly designed to make it relatively easy for even novice Python coders to create their own custom scripts, Rivendell also ships with a set of pre-installed scripts that can deal with many common update scenarios, including sending updates for:&lt;br /&gt;
&lt;br /&gt;
* RDS/RDBS displays&lt;br /&gt;
* Online streaming encoders/players&lt;br /&gt;
* Station web sites&lt;br /&gt;
* Associated data displays (such as the Text Display Widget in [https://www.paravelsystems.com/walltime WallTime]&lt;br /&gt;
&lt;br /&gt;
== Icecast2 Meta Data from Rivendell ==&lt;br /&gt;
&lt;br /&gt;
Rivendell ships with a PyPAD script called '''pypad_icecast2.py''' that can be used to update the 'Currently playing' display in IceCast v2.x setups. To configure it, proceed as follows:&lt;br /&gt;
&lt;br /&gt;
# Start RDAdmin and go to Manage Hosts =&amp;gt; &amp;lt;hostname&amp;gt; =&amp;gt; PyPAD Instances.&lt;br /&gt;
# Touch the 'Add' button to open a list of available PyPAD scripts.&lt;br /&gt;
# Choose '''pypad_icecast2.py''' from the list and then touch 'Open'. An 'Edit PyPAD Instance' dialog will open.&lt;br /&gt;
# Find the 'Password=', 'Hostname=', 'Tcpport=' and 'Mountpoint=' entries in the configuration and change them to the values appropriate for your Icecast server. (The configuration contains other entries that can also be used to customize the behavior of the updating process, such as limiting the ability to send PAD updates to a specific subset of carts on the basis of group membership. See the accompanying comments in the configuration for details).&lt;br /&gt;
# Touch the 'OK' button. &lt;br /&gt;
# A new line will appear in the 'PyPAD Instances' dialog. The status light at the start of the line should turn green after a few seconds. If it remains red, select the entry on the list and then touch the 'Error Log' button to see any error messages or warnings generated by the script. Close the dialog, then touch the 'Edit' button and make any needed changes to the configuration. Repeat the process until a green status light is obtained.&lt;br /&gt;
&lt;br /&gt;
N.B. - Due to the way that the IceCast server software is designed, PAD update messages must be seen by the server to originate from the same IP address as that being used to originate the associated audio stream. Provided that the audio encoder and Rivendell are accessing Icecast by means of the same NAT'ed firewall, this requirement will generally be met. If not, then PyPAD can often be configured to send PAD via the audio encoder.&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=Streaming_from_Rivendell&amp;diff=682</id>
		<title>Streaming from Rivendell</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=Streaming_from_Rivendell&amp;diff=682"/>
				<updated>2023-07-02T19:49:07Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: /* Icecast2/Shoutcast Meta Data from Rivendell */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Using PyPAD to Generate PAD Updates ==&lt;br /&gt;
&lt;br /&gt;
Beginning with v3.0.1, Rivendell uses a system called 'PyPAD' to generate program associated data (&amp;quot;PAD&amp;quot;, sometimes also referred to in the Rivendell docs as &amp;quot;Now &amp;amp; Next&amp;quot;) updates in real time. Each time a log event starts or stops in RDAirplay, PyPAD can be configured to call one or more Python scripts, each of which are handed the parameters of the event to be be processed and/or forwarded by the code in the script. An overview of the system can be found in the [https://opsguide.rivendellaudio.org/html/chapter.pad.html Program Associated Data chapter] in the [https://opsguide.rivendellaudio.org/html/ Rivendell Operations Guide].&lt;br /&gt;
&lt;br /&gt;
While PyPAD is explicitly designed to make it relatively easy for even novice Python coders to create their own custom scripts, Rivendell also ships with a set of pre-installed scripts that can deal with many common update scenarios, including sending updates for:&lt;br /&gt;
&lt;br /&gt;
* RDS/RDBS displays&lt;br /&gt;
* Online streaming encoders/players&lt;br /&gt;
* Station web sites&lt;br /&gt;
* Associated data displays (such as the Text Display Widget in [https://www.paravelsystems.com/walltime WallTime]&lt;br /&gt;
&lt;br /&gt;
== Icecast2 Meta Data from Rivendell ==&lt;br /&gt;
&lt;br /&gt;
Rivendell ships with a PyPAD script called '''pypad_icecast2.py''' that can be used to update the 'Currently playing' display in IceCast v2.x setups. To configure it, proceed as follows:&lt;br /&gt;
&lt;br /&gt;
# Start RDAdmin and go to Manage Hosts =&amp;gt; &amp;lt;hostname&amp;gt; =&amp;gt; PyPAD Instances.&lt;br /&gt;
# Touch the 'Add' button to open a list of available PyPAD scripts.&lt;br /&gt;
# Choose '''pypad_icecast2.py''' from the list and then touch 'Open'. An 'Edit PyPAD Instance' dialog will open.&lt;br /&gt;
# Find the 'Password=', 'Hostname=', 'Tcpport=' and 'Mountpoint=' entries in the configuration and change them to the values appropriate for your Icecast server. (The configuration contains other entries that can also be used to customize the behavior of the updating process, such as limiting the ability to send PAD updates to a specific subset of carts on the basis of group membership. See the accompanying comments in the configuration for details).&lt;br /&gt;
# Touch the 'OK' button. &lt;br /&gt;
# A new line will appear in the 'PyPAD Instances' dialog. The status light at the start of the line should turn green after a few seconds. If it remains red, select the entry on the list and then touch the 'Error Log' button to see any error messages or warnings generated by the script. Close the dialog, then touch the 'Edit' button and make any needed changes to the configuration. Repeat the process until a green status light is obtained.&lt;br /&gt;
&lt;br /&gt;
N.B. - Due to the way that the IceCast server software is designed, PAD update messages must be seen by the server to originate from the same IP address as that being used to originate the associated audio stream. Provided that the audio encoder and Rivendell are accessing Icecast by means of the same NAT'ed firewall, this requirement will generally be met. If not, then PyPAD can often be configured to send PAD via the audio encoder.&lt;br /&gt;
&lt;br /&gt;
== Further Rivendell Streaming Info ==&lt;br /&gt;
You can also see the page [[Stream under Debian]]  for information about streaming under Rivendell but it references darkice and ices-kh(ices2). The first if compiled does not work and the latter is hard to find if you even can.&lt;br /&gt;
&lt;br /&gt;
Also see [[Rivendell_Loadable_Module_(RLM)_SDK_-_For_Sending_Now_%26_Next_Data_to_external_systems|Rivendell Loadable Modules]] for more info on meta data transfer to external systems&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=Streaming_from_Rivendell&amp;diff=681</id>
		<title>Streaming from Rivendell</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=Streaming_from_Rivendell&amp;diff=681"/>
				<updated>2023-07-02T19:48:25Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: /* Install a broadcast server */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Using PyPAD to Generate PAD Updates ==&lt;br /&gt;
&lt;br /&gt;
Beginning with v3.0.1, Rivendell uses a system called 'PyPAD' to generate program associated data (&amp;quot;PAD&amp;quot;, sometimes also referred to in the Rivendell docs as &amp;quot;Now &amp;amp; Next&amp;quot;) updates in real time. Each time a log event starts or stops in RDAirplay, PyPAD can be configured to call one or more Python scripts, each of which are handed the parameters of the event to be be processed and/or forwarded by the code in the script. An overview of the system can be found in the [https://opsguide.rivendellaudio.org/html/chapter.pad.html Program Associated Data chapter] in the [https://opsguide.rivendellaudio.org/html/ Rivendell Operations Guide].&lt;br /&gt;
&lt;br /&gt;
While PyPAD is explicitly designed to make it relatively easy for even novice Python coders to create their own custom scripts, Rivendell also ships with a set of pre-installed scripts that can deal with many common update scenarios, including sending updates for:&lt;br /&gt;
&lt;br /&gt;
* RDS/RDBS displays&lt;br /&gt;
* Online streaming encoders/players&lt;br /&gt;
* Station web sites&lt;br /&gt;
* Associated data displays (such as the Text Display Widget in [https://www.paravelsystems.com/walltime WallTime]&lt;br /&gt;
&lt;br /&gt;
== Icecast2 Meta Data from Rivendell ==&lt;br /&gt;
&lt;br /&gt;
Rivendell ships with a PyPAD script called '''pypad_icecast2.py''' that can be used to update the 'Currently playing' display in IceCast v2.x setups. To configure it, proceed as follows:&lt;br /&gt;
&lt;br /&gt;
# Start RDAdmin and go to Manage Hosts =&amp;gt; &amp;lt;hostname&amp;gt; =&amp;gt; PyPAD Instances.&lt;br /&gt;
# Touch the 'Add' button to open a list of available PyPAD scripts.&lt;br /&gt;
# Choose '''pypad_icecast2.py''' from the list and then touch 'Open'. An 'Edit PyPAD Instance' dialog will open.&lt;br /&gt;
# Find the 'Password=', 'Hostname=', 'Tcpport=' and 'Mountpoint=' entries in the configuration and change them to the values appropriate for your Icecast server. (The configuration contains other entries that can also be used to customize the behavior of the updating process, such as limiting the ability to send PAD updates to a specific subset of carts on the basis of group membership. See the accompanying comments in the configuration for details).&lt;br /&gt;
# Touch the 'OK' button. &lt;br /&gt;
# A new line will appear in the 'PyPAD Instances' dialog. The status light at the start of the line should turn green after a few seconds. If it remains red, select the entry on the list and then touch the 'Error Log' button to see any error messages or warnings generated by the script. Close the dialog, then touch the 'Edit' button and make any needed changes to the configuration. Repeat the process until a green status light is obtained.&lt;br /&gt;
&lt;br /&gt;
N.B. - Due to the way that the IceCast server software is designed, PAD update messages must be seen by the server to originate from the same IP address as that being used to originate the associated audio stream. Provided that the audio encoder and Rivendell are accessing Icecast by means of the same NAT'ed firewall, this requirement will generally be met. If not, then PyPAD can often be configured to send PAD via the audio encoder.&lt;br /&gt;
&lt;br /&gt;
==Icecast2/Shoutcast Meta Data from Rivendell==&lt;br /&gt;
&lt;br /&gt;
=== icecast.py ===&lt;br /&gt;
&lt;br /&gt;
Icecast Stream python meta-data Updater Courtesy WZEW-FM MOBILE AL and Nik Martin - Server Corps&lt;br /&gt;
&lt;br /&gt;
[http://92zew.net/icecast.py icecast.py]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Updating metadata IceCast2/Shoutcast with Rivendell - RDSTREAMDATA===&lt;br /&gt;
&amp;lt;font size=1&amp;gt;Portuguese to English translation&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Following these steps can we use the information in &amp;quot;Now &amp;amp; Next&amp;quot; to update the Rivendell icecast2 servers and / or Shoutcast, thereby making the names of the artist and song are running are displayed in the player receiving the stream. &lt;br /&gt;
&lt;br /&gt;
The Rivendell sends this information via UDP messages, what we do is to capture these messages (using netcat), treat them and apply them to the desired shape Shoutcast/Icecast2 streaming services. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Requirements ==== &lt;br /&gt;
&lt;br /&gt;
The procedures shown here were tested at 10.4 32 bit Ubuntu distribution. &lt;br /&gt;
Make sure your distribution has the following packages installed: &lt;br /&gt;
&lt;br /&gt;
* Wget (Used to upgrade servers icecast2) &lt;br /&gt;
* Lynx (Used to upgrade servers Shoutcast) &lt;br /&gt;
* Nc (netcat, used to capture messages sent by RDAirPlay) &lt;br /&gt;
&lt;br /&gt;
The commands used in the scripts provided below will work with NC (netcat) openbsd version which is the default for Ubuntu 10.04. &lt;br /&gt;
If your distribution uses the traditional NC default, see if there is a binary version of openbsd, as Ubuntu, for example, has both versions. &lt;br /&gt;
In Ubuntu you can check the versions available with the command: &lt;br /&gt;
&lt;br /&gt;
 # Update-alternatives - list nc &lt;br /&gt;
&lt;br /&gt;
It is not necessary that you change the default version of your system, just set in the following steps to use the version RDStreamData openbsd. &lt;br /&gt;
&lt;br /&gt;
==== Installation ==== &lt;br /&gt;
&lt;br /&gt;
* Download the package rdstreamdata.tar.gz &lt;br /&gt;
[Http://www.fdts.com.br/rdstreamdata.tar.gz rdstreamdata.tar.gz] &lt;br /&gt;
&lt;br /&gt;
* Unzip the package and enter the directory created &lt;br /&gt;
 # Tar-zxvf rdstreamdata.tar.gz &lt;br /&gt;
 # Cd rdstreamdata &lt;br /&gt;
* As root, run the installation script and read the instructions on screen. &lt;br /&gt;
 #. / Install.sh &lt;br /&gt;
 Will this script install RDstreamdata, a set of scripts That Will listen to an UDP port is Rivendell Now &amp;amp; Next information and update &lt;br /&gt;
 this information to an icecast2 and / or ShoutCast Server. &lt;br /&gt;
 Do you want to do it? y / n.y &lt;br /&gt;
* Enter &amp;quot;y&amp;quot; and hit Enter &lt;br /&gt;
 Copying files &lt;br /&gt;
 Now You Have to edit / etc / rdstreamdata.conf 'to suit your icecast2, Rivendell and ShoutCast Configurations. &lt;br /&gt;
  &lt;br /&gt;
 Attemper That You Must Set the username and group Which must run under the process before you start the daemon for the first time. &lt;br /&gt;
 Edit / etc / default / rdstreamdata 'and set' Enable 'to' true ', so You Can start it though the init script &lt;br /&gt;
  &lt;br /&gt;
 Also you need to Set the script / etc / init.d / rdstreamdata 'to Be automaticaly run in the desired runlevels, &lt;br /&gt;
 systems in Ubuntu You may use &amp;quot;sysv-rc-conf 'command for this. &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 You Can contact me at contato@fdts.com.br &lt;br /&gt;
  &lt;br /&gt;
 Thanks for using &lt;br /&gt;
&lt;br /&gt;
====General Settings ====  &lt;br /&gt;
&lt;br /&gt;
* Now we must set up some items, as described by the installer, start with the'''/ etc / defaults / rdstreamdata''', where we must fulfill what the user under which the processes are executed. You can use either the user that you log into Linux as the user running the other services of Rivendell, I use the username'''rduser''' and''group 'rivendell'''. '''NOT recommend that you use root or another user with higher privileges'''. &lt;br /&gt;
* Even in'''/ etc / defaults / rdstreamdata''' set the value of'''ENABLE''' to'''true''', otherwise the daemon will not start. &lt;br /&gt;
* In the file'''/ etc / rdstreamdata.conf''' we have all other settings, we should look to the following: &lt;br /&gt;
** In the general settings: &lt;br /&gt;
***'''Netcat_bin = / bin / nc''' - At this point we can define a binary alternative to netcat, remember that we emphasize the importance of early use Netcat version of OpenBSD. As with Ubuntu 4.10 this is already the default, I'm using the default path / bin / nc. &lt;br /&gt;
***'''Riv_udp_port = &amp;quot;9876&amp;quot;''' - Here we define which port our script will be listening for messages from Rivendell, you should use a port that is not being used by any service above 1024 and ever since we are not running as root. The port is also used here as defined in the configuration of Rivendell. &lt;br /&gt;
***'''Message = &amp;quot;Name of your radio&amp;quot;''' - The message specified here is used when the RDAirPlay is closed or when the event is in the air that is not configured to send names (jingles, commercials, called , etc.). &lt;br /&gt;
***'''Min_title_size = 5''' - Minimum size of characters that the event must have for the the standard message set in the previous section is replaced by the name of the event. This is used to filter unwanted events of null characters. &lt;br /&gt;
&lt;br /&gt;
==== Settings Icecast2====  &lt;br /&gt;
* In the file'''/ etc / rdstreamdata.conf''' &lt;br /&gt;
** These settings define whether or not you use a server Icecast2 and what data to access it. &lt;br /&gt;
***'''Ic_enable = true''' - If the value is different from'''true''' the server Icecast2 not be updated. &lt;br /&gt;
***'''Ic_server = &amp;quot;localhost&amp;quot;''' - Hostname or IP of server Icecast2, change as needed. &lt;br /&gt;
***'''Ic_admin = &amp;quot;admin&amp;quot;''' - User Icecast2 server administrator, change as needed. &lt;br /&gt;
***'''Ic_pass = &amp;quot;password&amp;quot;''' - User password server administrator Icecast2, change as needed. &lt;br /&gt;
***'''Ic_port = &amp;quot;8888&amp;quot;''' - Server port Icecast2, change as needed. &lt;br /&gt;
***'''Ic_mount = &amp;quot;/ radio&amp;quot;''' - Mount point Icecast2 server, change as needed. &lt;br /&gt;
&lt;br /&gt;
==== Settings Shoucast====  &lt;br /&gt;
* In the file'''/ etc / rdstreamdata.conf''' &lt;br /&gt;
** These settings define whether or not you use a Shoutcast server and what data to access it. &lt;br /&gt;
***'''Sc_enable = true''' - If the value is different from'''true''' the Shoutcast server will not be updated. &lt;br /&gt;
***'''Sc_server = &amp;quot;localhost&amp;quot;''' - Hostname or IP of the Shoutcast server, change as needed. &lt;br /&gt;
***'''Sc_admin = &amp;quot;admin&amp;quot;''' - User Shoutcast server administrator, change as needed. &lt;br /&gt;
***'''Sc_pass = &amp;quot;password&amp;quot;''' - Password for user administrator Shoutcast server, change as needed. &lt;br /&gt;
***'''Sc_port = &amp;quot;8080&amp;quot;''' - Shoutcast server port, change as needed. &lt;br /&gt;
&lt;br /&gt;
==== Configuring Rivendell ==== &lt;br /&gt;
&lt;br /&gt;
This is an essential step for the update to run, since the Rivendell not send the desired information is useless effort. &lt;br /&gt;
To enable the transmission of information follow the following steps: &lt;br /&gt;
* Enter rdadmin. &lt;br /&gt;
[[File: rdstreamdata_01.jpeg]] &lt;br /&gt;
* Click on'''Manage Hosts'''. &lt;br /&gt;
[[File: rdstreamdata_02.jpeg]] &lt;br /&gt;
* Select the Host which runs RDAirPlay and click'''Edit'''. &lt;br /&gt;
[[File: rdstreamdata_03.jpeg]] &lt;br /&gt;
* Click'''RDAirPlay''' &lt;br /&gt;
[[File: rdstreamdata_04.jpeg]] &lt;br /&gt;
* On the screen that opens click'''Now &amp;amp; Next Set Parameters'''. &lt;br /&gt;
[[File: rdstreamdata_05.jpeg]] &lt;br /&gt;
* Fill in the fields as indicated: &lt;br /&gt;
**'''IP Address''' 127.0.0.1 &lt;br /&gt;
**'''UDP Port:''' 9876 - The same setup informed'''/ etc / rdstreamdata.conf'''. &lt;br /&gt;
**'''UDP String:'''% a -% t% r - Thus we have a message with the names of the artist and the current song, plus a line break. &lt;br /&gt;
[[File: rdstreamdata_06.jpeg]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this point the RDAirPlay is ready to send UDP messages to update our Streaming, however we must be sure that groups are configured to transmit the event information. &lt;br /&gt;
&lt;br /&gt;
* Free rdadmin again. &lt;br /&gt;
[[File: rdstreamdata_01.jpeg]] &lt;br /&gt;
* Click'''Groups'''. &lt;br /&gt;
[[File: rdstreamdata_07.jpeg]] &lt;br /&gt;
* Select a group that wants to transmit information and click'''Edit'''. &lt;br /&gt;
[[File: rdstreamdata_08.jpeg]] &lt;br /&gt;
* Check the'''Transmit Now &amp;amp; Next day''' and click OK. &lt;br /&gt;
[[File: rdstreamdata_09.jpeg]] &lt;br /&gt;
* Repeat the last steps for all desired groups. &lt;br /&gt;
&lt;br /&gt;
* Close and reopen the RDAirPlay. Now the Rivendell should already be updating your streaming server! &lt;br /&gt;
&lt;br /&gt;
Happy Rivendelling! &lt;br /&gt;
&lt;br /&gt;
You can follow any updates to the log file'''/ var / log / rdstreamdata.log'''&lt;br /&gt;
&lt;br /&gt;
== Further Rivendell Streaming Info ==&lt;br /&gt;
You can also see the page [[Stream under Debian]]  for information about streaming under Rivendell but it references darkice and ices-kh(ices2). The first if compiled does not work and the latter is hard to find if you even can.&lt;br /&gt;
&lt;br /&gt;
Also see [[Rivendell_Loadable_Module_(RLM)_SDK_-_For_Sending_Now_%26_Next_Data_to_external_systems|Rivendell Loadable Modules]] for more info on meta data transfer to external systems&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=Streaming_from_Rivendell&amp;diff=680</id>
		<title>Streaming from Rivendell</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=Streaming_from_Rivendell&amp;diff=680"/>
				<updated>2023-07-02T19:47:49Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: /* Install a stream source */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Using PyPAD to Generate PAD Updates ==&lt;br /&gt;
&lt;br /&gt;
Beginning with v3.0.1, Rivendell uses a system called 'PyPAD' to generate program associated data (&amp;quot;PAD&amp;quot;, sometimes also referred to in the Rivendell docs as &amp;quot;Now &amp;amp; Next&amp;quot;) updates in real time. Each time a log event starts or stops in RDAirplay, PyPAD can be configured to call one or more Python scripts, each of which are handed the parameters of the event to be be processed and/or forwarded by the code in the script. An overview of the system can be found in the [https://opsguide.rivendellaudio.org/html/chapter.pad.html Program Associated Data chapter] in the [https://opsguide.rivendellaudio.org/html/ Rivendell Operations Guide].&lt;br /&gt;
&lt;br /&gt;
While PyPAD is explicitly designed to make it relatively easy for even novice Python coders to create their own custom scripts, Rivendell also ships with a set of pre-installed scripts that can deal with many common update scenarios, including sending updates for:&lt;br /&gt;
&lt;br /&gt;
* RDS/RDBS displays&lt;br /&gt;
* Online streaming encoders/players&lt;br /&gt;
* Station web sites&lt;br /&gt;
* Associated data displays (such as the Text Display Widget in [https://www.paravelsystems.com/walltime WallTime]&lt;br /&gt;
&lt;br /&gt;
== Icecast2 Meta Data from Rivendell ==&lt;br /&gt;
&lt;br /&gt;
Rivendell ships with a PyPAD script called '''pypad_icecast2.py''' that can be used to update the 'Currently playing' display in IceCast v2.x setups. To configure it, proceed as follows:&lt;br /&gt;
&lt;br /&gt;
# Start RDAdmin and go to Manage Hosts =&amp;gt; &amp;lt;hostname&amp;gt; =&amp;gt; PyPAD Instances.&lt;br /&gt;
# Touch the 'Add' button to open a list of available PyPAD scripts.&lt;br /&gt;
# Choose '''pypad_icecast2.py''' from the list and then touch 'Open'. An 'Edit PyPAD Instance' dialog will open.&lt;br /&gt;
# Find the 'Password=', 'Hostname=', 'Tcpport=' and 'Mountpoint=' entries in the configuration and change them to the values appropriate for your Icecast server. (The configuration contains other entries that can also be used to customize the behavior of the updating process, such as limiting the ability to send PAD updates to a specific subset of carts on the basis of group membership. See the accompanying comments in the configuration for details).&lt;br /&gt;
# Touch the 'OK' button. &lt;br /&gt;
# A new line will appear in the 'PyPAD Instances' dialog. The status light at the start of the line should turn green after a few seconds. If it remains red, select the entry on the list and then touch the 'Error Log' button to see any error messages or warnings generated by the script. Close the dialog, then touch the 'Edit' button and make any needed changes to the configuration. Repeat the process until a green status light is obtained.&lt;br /&gt;
&lt;br /&gt;
N.B. - Due to the way that the IceCast server software is designed, PAD update messages must be seen by the server to originate from the same IP address as that being used to originate the associated audio stream. Provided that the audio encoder and Rivendell are accessing Icecast by means of the same NAT'ed firewall, this requirement will generally be met. If not, then PyPAD can often be configured to send PAD via the audio encoder.&lt;br /&gt;
&lt;br /&gt;
== Install a broadcast server ==&lt;br /&gt;
&lt;br /&gt;
You can select one of these broadcast servers. &lt;br /&gt;
It will receive the encoded stream from the source stream and provide it to the public listeners.&lt;br /&gt;
&lt;br /&gt;
You can choose ''classic'' broadcast servers (like Icecast2) or peer-to-peer broadcast solutions (like PeerCast or FreeCast).&lt;br /&gt;
&lt;br /&gt;
=== PeerCast ===&lt;br /&gt;
&lt;br /&gt;
Install PeerCast. Current version (as of May 18/2005) is PeerCast v0.1211&lt;br /&gt;
* [http://www.peercast.org/ PeerCast web site]&lt;br /&gt;
* [[Create A PeerCast User]]&lt;br /&gt;
* [http://www.peercast.org/guides/pc-linux.php PeerCast linux install guide.]]&lt;br /&gt;
** I suggest you copy the html directory from the peercast archive to /home/peercast.&lt;br /&gt;
** I suggest you copy the peercast executable from the peercast archive to /usr/bin.&lt;br /&gt;
** See below for configuration instructions/suggestions.&lt;br /&gt;
&lt;br /&gt;
==== Configure ====&lt;br /&gt;
&lt;br /&gt;
=== FreeCast ===&lt;br /&gt;
&lt;br /&gt;
Install the FreeCast debian package available on the [http://debian.tryphon.org Tryphon Debian Archiver].&lt;br /&gt;
&lt;br /&gt;
* [http://www.freecast.org FreeCast website]&lt;br /&gt;
&lt;br /&gt;
=== IceCast ===&lt;br /&gt;
&lt;br /&gt;
Install the IceCast streaming server using the instructions and source code found at [http://www.icecast.org IceCast].&lt;br /&gt;
&lt;br /&gt;
=== Streamp2p ===&lt;br /&gt;
&lt;br /&gt;
[http://www.streamerp2p.com Streamerp2p] enables anyone to webcast without expensive servers. Works from your home pc, even on dial-up for some streams. No max limit to listeners like shoutcast. No 'server full' messages, no stream hosting costs, completely free to use for both personal and commercial users. Tiny install (430k), ActiveX version for web pages, and soon a Java version for web and mobile devices.&lt;br /&gt;
&lt;br /&gt;
Streamp2p is a  Windows but runs without problem under wine on Ubuntu Linux.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Icecast2/Shoutcast Meta Data from Rivendell==&lt;br /&gt;
&lt;br /&gt;
=== icecast.py ===&lt;br /&gt;
&lt;br /&gt;
Icecast Stream python meta-data Updater Courtesy WZEW-FM MOBILE AL and Nik Martin - Server Corps&lt;br /&gt;
&lt;br /&gt;
[http://92zew.net/icecast.py icecast.py]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Updating metadata IceCast2/Shoutcast with Rivendell - RDSTREAMDATA===&lt;br /&gt;
&amp;lt;font size=1&amp;gt;Portuguese to English translation&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Following these steps can we use the information in &amp;quot;Now &amp;amp; Next&amp;quot; to update the Rivendell icecast2 servers and / or Shoutcast, thereby making the names of the artist and song are running are displayed in the player receiving the stream. &lt;br /&gt;
&lt;br /&gt;
The Rivendell sends this information via UDP messages, what we do is to capture these messages (using netcat), treat them and apply them to the desired shape Shoutcast/Icecast2 streaming services. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Requirements ==== &lt;br /&gt;
&lt;br /&gt;
The procedures shown here were tested at 10.4 32 bit Ubuntu distribution. &lt;br /&gt;
Make sure your distribution has the following packages installed: &lt;br /&gt;
&lt;br /&gt;
* Wget (Used to upgrade servers icecast2) &lt;br /&gt;
* Lynx (Used to upgrade servers Shoutcast) &lt;br /&gt;
* Nc (netcat, used to capture messages sent by RDAirPlay) &lt;br /&gt;
&lt;br /&gt;
The commands used in the scripts provided below will work with NC (netcat) openbsd version which is the default for Ubuntu 10.04. &lt;br /&gt;
If your distribution uses the traditional NC default, see if there is a binary version of openbsd, as Ubuntu, for example, has both versions. &lt;br /&gt;
In Ubuntu you can check the versions available with the command: &lt;br /&gt;
&lt;br /&gt;
 # Update-alternatives - list nc &lt;br /&gt;
&lt;br /&gt;
It is not necessary that you change the default version of your system, just set in the following steps to use the version RDStreamData openbsd. &lt;br /&gt;
&lt;br /&gt;
==== Installation ==== &lt;br /&gt;
&lt;br /&gt;
* Download the package rdstreamdata.tar.gz &lt;br /&gt;
[Http://www.fdts.com.br/rdstreamdata.tar.gz rdstreamdata.tar.gz] &lt;br /&gt;
&lt;br /&gt;
* Unzip the package and enter the directory created &lt;br /&gt;
 # Tar-zxvf rdstreamdata.tar.gz &lt;br /&gt;
 # Cd rdstreamdata &lt;br /&gt;
* As root, run the installation script and read the instructions on screen. &lt;br /&gt;
 #. / Install.sh &lt;br /&gt;
 Will this script install RDstreamdata, a set of scripts That Will listen to an UDP port is Rivendell Now &amp;amp; Next information and update &lt;br /&gt;
 this information to an icecast2 and / or ShoutCast Server. &lt;br /&gt;
 Do you want to do it? y / n.y &lt;br /&gt;
* Enter &amp;quot;y&amp;quot; and hit Enter &lt;br /&gt;
 Copying files &lt;br /&gt;
 Now You Have to edit / etc / rdstreamdata.conf 'to suit your icecast2, Rivendell and ShoutCast Configurations. &lt;br /&gt;
  &lt;br /&gt;
 Attemper That You Must Set the username and group Which must run under the process before you start the daemon for the first time. &lt;br /&gt;
 Edit / etc / default / rdstreamdata 'and set' Enable 'to' true ', so You Can start it though the init script &lt;br /&gt;
  &lt;br /&gt;
 Also you need to Set the script / etc / init.d / rdstreamdata 'to Be automaticaly run in the desired runlevels, &lt;br /&gt;
 systems in Ubuntu You may use &amp;quot;sysv-rc-conf 'command for this. &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 You Can contact me at contato@fdts.com.br &lt;br /&gt;
  &lt;br /&gt;
 Thanks for using &lt;br /&gt;
&lt;br /&gt;
====General Settings ====  &lt;br /&gt;
&lt;br /&gt;
* Now we must set up some items, as described by the installer, start with the'''/ etc / defaults / rdstreamdata''', where we must fulfill what the user under which the processes are executed. You can use either the user that you log into Linux as the user running the other services of Rivendell, I use the username'''rduser''' and''group 'rivendell'''. '''NOT recommend that you use root or another user with higher privileges'''. &lt;br /&gt;
* Even in'''/ etc / defaults / rdstreamdata''' set the value of'''ENABLE''' to'''true''', otherwise the daemon will not start. &lt;br /&gt;
* In the file'''/ etc / rdstreamdata.conf''' we have all other settings, we should look to the following: &lt;br /&gt;
** In the general settings: &lt;br /&gt;
***'''Netcat_bin = / bin / nc''' - At this point we can define a binary alternative to netcat, remember that we emphasize the importance of early use Netcat version of OpenBSD. As with Ubuntu 4.10 this is already the default, I'm using the default path / bin / nc. &lt;br /&gt;
***'''Riv_udp_port = &amp;quot;9876&amp;quot;''' - Here we define which port our script will be listening for messages from Rivendell, you should use a port that is not being used by any service above 1024 and ever since we are not running as root. The port is also used here as defined in the configuration of Rivendell. &lt;br /&gt;
***'''Message = &amp;quot;Name of your radio&amp;quot;''' - The message specified here is used when the RDAirPlay is closed or when the event is in the air that is not configured to send names (jingles, commercials, called , etc.). &lt;br /&gt;
***'''Min_title_size = 5''' - Minimum size of characters that the event must have for the the standard message set in the previous section is replaced by the name of the event. This is used to filter unwanted events of null characters. &lt;br /&gt;
&lt;br /&gt;
==== Settings Icecast2====  &lt;br /&gt;
* In the file'''/ etc / rdstreamdata.conf''' &lt;br /&gt;
** These settings define whether or not you use a server Icecast2 and what data to access it. &lt;br /&gt;
***'''Ic_enable = true''' - If the value is different from'''true''' the server Icecast2 not be updated. &lt;br /&gt;
***'''Ic_server = &amp;quot;localhost&amp;quot;''' - Hostname or IP of server Icecast2, change as needed. &lt;br /&gt;
***'''Ic_admin = &amp;quot;admin&amp;quot;''' - User Icecast2 server administrator, change as needed. &lt;br /&gt;
***'''Ic_pass = &amp;quot;password&amp;quot;''' - User password server administrator Icecast2, change as needed. &lt;br /&gt;
***'''Ic_port = &amp;quot;8888&amp;quot;''' - Server port Icecast2, change as needed. &lt;br /&gt;
***'''Ic_mount = &amp;quot;/ radio&amp;quot;''' - Mount point Icecast2 server, change as needed. &lt;br /&gt;
&lt;br /&gt;
==== Settings Shoucast====  &lt;br /&gt;
* In the file'''/ etc / rdstreamdata.conf''' &lt;br /&gt;
** These settings define whether or not you use a Shoutcast server and what data to access it. &lt;br /&gt;
***'''Sc_enable = true''' - If the value is different from'''true''' the Shoutcast server will not be updated. &lt;br /&gt;
***'''Sc_server = &amp;quot;localhost&amp;quot;''' - Hostname or IP of the Shoutcast server, change as needed. &lt;br /&gt;
***'''Sc_admin = &amp;quot;admin&amp;quot;''' - User Shoutcast server administrator, change as needed. &lt;br /&gt;
***'''Sc_pass = &amp;quot;password&amp;quot;''' - Password for user administrator Shoutcast server, change as needed. &lt;br /&gt;
***'''Sc_port = &amp;quot;8080&amp;quot;''' - Shoutcast server port, change as needed. &lt;br /&gt;
&lt;br /&gt;
==== Configuring Rivendell ==== &lt;br /&gt;
&lt;br /&gt;
This is an essential step for the update to run, since the Rivendell not send the desired information is useless effort. &lt;br /&gt;
To enable the transmission of information follow the following steps: &lt;br /&gt;
* Enter rdadmin. &lt;br /&gt;
[[File: rdstreamdata_01.jpeg]] &lt;br /&gt;
* Click on'''Manage Hosts'''. &lt;br /&gt;
[[File: rdstreamdata_02.jpeg]] &lt;br /&gt;
* Select the Host which runs RDAirPlay and click'''Edit'''. &lt;br /&gt;
[[File: rdstreamdata_03.jpeg]] &lt;br /&gt;
* Click'''RDAirPlay''' &lt;br /&gt;
[[File: rdstreamdata_04.jpeg]] &lt;br /&gt;
* On the screen that opens click'''Now &amp;amp; Next Set Parameters'''. &lt;br /&gt;
[[File: rdstreamdata_05.jpeg]] &lt;br /&gt;
* Fill in the fields as indicated: &lt;br /&gt;
**'''IP Address''' 127.0.0.1 &lt;br /&gt;
**'''UDP Port:''' 9876 - The same setup informed'''/ etc / rdstreamdata.conf'''. &lt;br /&gt;
**'''UDP String:'''% a -% t% r - Thus we have a message with the names of the artist and the current song, plus a line break. &lt;br /&gt;
[[File: rdstreamdata_06.jpeg]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this point the RDAirPlay is ready to send UDP messages to update our Streaming, however we must be sure that groups are configured to transmit the event information. &lt;br /&gt;
&lt;br /&gt;
* Free rdadmin again. &lt;br /&gt;
[[File: rdstreamdata_01.jpeg]] &lt;br /&gt;
* Click'''Groups'''. &lt;br /&gt;
[[File: rdstreamdata_07.jpeg]] &lt;br /&gt;
* Select a group that wants to transmit information and click'''Edit'''. &lt;br /&gt;
[[File: rdstreamdata_08.jpeg]] &lt;br /&gt;
* Check the'''Transmit Now &amp;amp; Next day''' and click OK. &lt;br /&gt;
[[File: rdstreamdata_09.jpeg]] &lt;br /&gt;
* Repeat the last steps for all desired groups. &lt;br /&gt;
&lt;br /&gt;
* Close and reopen the RDAirPlay. Now the Rivendell should already be updating your streaming server! &lt;br /&gt;
&lt;br /&gt;
Happy Rivendelling! &lt;br /&gt;
&lt;br /&gt;
You can follow any updates to the log file'''/ var / log / rdstreamdata.log'''&lt;br /&gt;
&lt;br /&gt;
== Further Rivendell Streaming Info ==&lt;br /&gt;
You can also see the page [[Stream under Debian]]  for information about streaming under Rivendell but it references darkice and ices-kh(ices2). The first if compiled does not work and the latter is hard to find if you even can.&lt;br /&gt;
&lt;br /&gt;
Also see [[Rivendell_Loadable_Module_(RLM)_SDK_-_For_Sending_Now_%26_Next_Data_to_external_systems|Rivendell Loadable Modules]] for more info on meta data transfer to external systems&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=Streaming_from_Rivendell&amp;diff=679</id>
		<title>Streaming from Rivendell</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=Streaming_from_Rivendell&amp;diff=679"/>
				<updated>2023-07-02T19:47:03Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: /* Configure Jack */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Using PyPAD to Generate PAD Updates ==&lt;br /&gt;
&lt;br /&gt;
Beginning with v3.0.1, Rivendell uses a system called 'PyPAD' to generate program associated data (&amp;quot;PAD&amp;quot;, sometimes also referred to in the Rivendell docs as &amp;quot;Now &amp;amp; Next&amp;quot;) updates in real time. Each time a log event starts or stops in RDAirplay, PyPAD can be configured to call one or more Python scripts, each of which are handed the parameters of the event to be be processed and/or forwarded by the code in the script. An overview of the system can be found in the [https://opsguide.rivendellaudio.org/html/chapter.pad.html Program Associated Data chapter] in the [https://opsguide.rivendellaudio.org/html/ Rivendell Operations Guide].&lt;br /&gt;
&lt;br /&gt;
While PyPAD is explicitly designed to make it relatively easy for even novice Python coders to create their own custom scripts, Rivendell also ships with a set of pre-installed scripts that can deal with many common update scenarios, including sending updates for:&lt;br /&gt;
&lt;br /&gt;
* RDS/RDBS displays&lt;br /&gt;
* Online streaming encoders/players&lt;br /&gt;
* Station web sites&lt;br /&gt;
* Associated data displays (such as the Text Display Widget in [https://www.paravelsystems.com/walltime WallTime]&lt;br /&gt;
&lt;br /&gt;
== Icecast2 Meta Data from Rivendell ==&lt;br /&gt;
&lt;br /&gt;
Rivendell ships with a PyPAD script called '''pypad_icecast2.py''' that can be used to update the 'Currently playing' display in IceCast v2.x setups. To configure it, proceed as follows:&lt;br /&gt;
&lt;br /&gt;
# Start RDAdmin and go to Manage Hosts =&amp;gt; &amp;lt;hostname&amp;gt; =&amp;gt; PyPAD Instances.&lt;br /&gt;
# Touch the 'Add' button to open a list of available PyPAD scripts.&lt;br /&gt;
# Choose '''pypad_icecast2.py''' from the list and then touch 'Open'. An 'Edit PyPAD Instance' dialog will open.&lt;br /&gt;
# Find the 'Password=', 'Hostname=', 'Tcpport=' and 'Mountpoint=' entries in the configuration and change them to the values appropriate for your Icecast server. (The configuration contains other entries that can also be used to customize the behavior of the updating process, such as limiting the ability to send PAD updates to a specific subset of carts on the basis of group membership. See the accompanying comments in the configuration for details).&lt;br /&gt;
# Touch the 'OK' button. &lt;br /&gt;
# A new line will appear in the 'PyPAD Instances' dialog. The status light at the start of the line should turn green after a few seconds. If it remains red, select the entry on the list and then touch the 'Error Log' button to see any error messages or warnings generated by the script. Close the dialog, then touch the 'Edit' button and make any needed changes to the configuration. Repeat the process until a green status light is obtained.&lt;br /&gt;
&lt;br /&gt;
N.B. - Due to the way that the IceCast server software is designed, PAD update messages must be seen by the server to originate from the same IP address as that being used to originate the associated audio stream. Provided that the audio encoder and Rivendell are accessing Icecast by means of the same NAT'ed firewall, this requirement will generally be met. If not, then PyPAD can often be configured to send PAD via the audio encoder.&lt;br /&gt;
&lt;br /&gt;
== Install a stream source ==&lt;br /&gt;
&lt;br /&gt;
Install [http://www.oddsock.org/tools/edcast_jack/ edcast-jack] on your machine.&lt;br /&gt;
&lt;br /&gt;
Download and uncompress the source archive file. Then open a terminal and go to the '''edcast-jack-3.1.7''' (May be a different folder name if the version increases) directory and compile it. &lt;br /&gt;
&lt;br /&gt;
The normal '''./configure''' , '''make''' and then run as super user '''make install''' worked for me. However, since there is no list of the dependencies I had to run '''./configure''' a number of times watching for the missing files till I got them all installed. Then do '''make''' and after that as the super user '''make install''' to be up and running. Type '''edcast-jack''' in a console window and it will tell you how to invoke it on the command line.&lt;br /&gt;
&lt;br /&gt;
On Ubuntu Jaunty 9.04 the following packages had to be installed to have full edcast-jack functionality: (Mark additional required changes as well!)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
libfaac-dev&lt;br /&gt;
libfaac0&lt;br /&gt;
libjack-dev&lt;br /&gt;
libflac-dev&lt;br /&gt;
libogg-dev&lt;br /&gt;
libvorbis-dev&lt;br /&gt;
libmad0-dev&lt;br /&gt;
libmp3lame-dev&lt;br /&gt;
g++&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== edcast-jack Readme ===&lt;br /&gt;
&amp;lt;pre&amp;gt;edcast-jack Readme&lt;br /&gt;
-------------------&lt;br /&gt;
&lt;br /&gt;
This version of edcast allows you to hook into any jack output port&lt;br /&gt;
and broadcast the audio to an icecast or shoutcast server.&lt;br /&gt;
&lt;br /&gt;
This version of edcast is all command-line oriented, and comes with&lt;br /&gt;
example config files for each of the encoding types supported (Ogg Vorbis,&lt;br /&gt;
LAME, AAC).  You will most likely need to take one of the example configs&lt;br /&gt;
(in the conf dir) and modify it to suit your needs.&lt;br /&gt;
&lt;br /&gt;
Here is an example of how to use it with jack (http://jackit.sourceforge.net).&lt;br /&gt;
&lt;br /&gt;
Step 1: &lt;br /&gt;
 * startup jackd &lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
 * Feed a signal into jackd.  There are many applications you can use&lt;br /&gt;
   for this, if you like XMMS, try installing http://xmms-jack.sourceforge.net/&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
 * Start edcast specifying the appropriate output ports.  To get a list of&lt;br /&gt;
   the output ports, use jack_lsp.  If you use XMMS, you'll see something like :&lt;br /&gt;
&lt;br /&gt;
    % jack_lsp&lt;br /&gt;
    alsa_pcm:capture_1&lt;br /&gt;
    alsa_pcm:capture_2&lt;br /&gt;
    alsa_pcm:playback_1&lt;br /&gt;
    alsa_pcm:playback_2&lt;br /&gt;
    bio2jack_0_32083:out_0&lt;br /&gt;
    bio2jack_0_32083:out_1&lt;br /&gt;
&lt;br /&gt;
   In this case, the bio2jack_0_32083:out_0 and bio2jack_0_32083:out_1 are the &lt;br /&gt;
   output ports from XMMS.  So you'd start edcast like :&lt;br /&gt;
&lt;br /&gt;
    edcast -c edcast_OggVorbis.cfg bio2jack_0_32083:out_0 bio2jack_0_32083:out_1&lt;br /&gt;
&lt;br /&gt;
   Use edcast -h for a usage.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== edcast-jack Usage ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
usage: edcast -c configfile [ -n jack_client_name ] [ -p portmatch ] [ jackport1 [ jackport2 ... ]]&lt;br /&gt;
Where:&lt;br /&gt;
-c : config file that specified encoding settings&lt;br /&gt;
-n : name used to register with jackd&lt;br /&gt;
-p : if specified, edcast will connect to the first two output ports matching this name.&lt;br /&gt;
jackportX : explicitly specify a jack port name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== edcast-jack Sample Configuration File ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Destination server details (to where you are encoding).  Valid server types : Shoutcast, Icecast, Icecast2&lt;br /&gt;
ServerType=Icecast2&lt;br /&gt;
Server=192.168.1.100&lt;br /&gt;
Port=8000&lt;br /&gt;
ServerPassword=hackme&lt;br /&gt;
ServerMountpoint=/stream&lt;br /&gt;
# YP (Stream Directory) Settings&lt;br /&gt;
ServerPublic=1&lt;br /&gt;
ServerIRC=&lt;br /&gt;
ServerAIM=&lt;br /&gt;
ServerICQ=&lt;br /&gt;
ServerStreamURL=http://www.oddsock.org&lt;br /&gt;
ServerName=This is my server name&lt;br /&gt;
ServerDescription=This is my server description&lt;br /&gt;
ServerGenre=Rock&lt;br /&gt;
AutomaticReconnectSecs=10&lt;br /&gt;
AutoConnect=0&lt;br /&gt;
# Output codec selection (Valid selections : MP3, OggVorbis, Ogg FLAC, AAC, AAC Plus)&lt;br /&gt;
Encode=MP3&lt;br /&gt;
# General settings (non-codec related).  Note : NumberChannels = 1 for MONO, 2 for STEREO&lt;br /&gt;
BitrateNominal=48&lt;br /&gt;
BitrateMin=128&lt;br /&gt;
BitrateMax=128&lt;br /&gt;
NumberChannels=1&lt;br /&gt;
Samplerate=22050&lt;br /&gt;
# Ogg Vorbis specific settings.  Note: Valid settings for BitrateQuality flag are (Quality, Bitrate Management)&lt;br /&gt;
OggQuality=0&lt;br /&gt;
OggBitrateQualityFlag=Quality&lt;br /&gt;
# LAME specific settings.  Note: Setting the low/highpass freq to 0 will disable them.&lt;br /&gt;
LameCBRFlag=1&lt;br /&gt;
LameQuality=1&lt;br /&gt;
LameCopywrite=0&lt;br /&gt;
LameOriginal=0&lt;br /&gt;
LameStrictISO=0&lt;br /&gt;
LameDisableReservior=0&lt;br /&gt;
LameVBRMode=vbr_abr&lt;br /&gt;
LameLowpassfreq=0&lt;br /&gt;
LameHighpassfreq=0&lt;br /&gt;
LAMEPreset=0&lt;br /&gt;
# AAC (FAAC) specific settings.&lt;br /&gt;
AACQuality=100&lt;br /&gt;
AACCutoff=&lt;br /&gt;
# Log Level 1 = LOG_ERROR, 2 = LOG_ERROR+LOG_WARNING, 3 = LOG_ERROR+LOG_WARNING+LOG_DEBUG&lt;br /&gt;
LogLevel=3&lt;br /&gt;
# Log File&lt;br /&gt;
LogFile=streamTranscoder_1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Install a broadcast server ==&lt;br /&gt;
&lt;br /&gt;
You can select one of these broadcast servers. &lt;br /&gt;
It will receive the encoded stream from the source stream and provide it to the public listeners.&lt;br /&gt;
&lt;br /&gt;
You can choose ''classic'' broadcast servers (like Icecast2) or peer-to-peer broadcast solutions (like PeerCast or FreeCast).&lt;br /&gt;
&lt;br /&gt;
=== PeerCast ===&lt;br /&gt;
&lt;br /&gt;
Install PeerCast. Current version (as of May 18/2005) is PeerCast v0.1211&lt;br /&gt;
* [http://www.peercast.org/ PeerCast web site]&lt;br /&gt;
* [[Create A PeerCast User]]&lt;br /&gt;
* [http://www.peercast.org/guides/pc-linux.php PeerCast linux install guide.]]&lt;br /&gt;
** I suggest you copy the html directory from the peercast archive to /home/peercast.&lt;br /&gt;
** I suggest you copy the peercast executable from the peercast archive to /usr/bin.&lt;br /&gt;
** See below for configuration instructions/suggestions.&lt;br /&gt;
&lt;br /&gt;
==== Configure ====&lt;br /&gt;
&lt;br /&gt;
=== FreeCast ===&lt;br /&gt;
&lt;br /&gt;
Install the FreeCast debian package available on the [http://debian.tryphon.org Tryphon Debian Archiver].&lt;br /&gt;
&lt;br /&gt;
* [http://www.freecast.org FreeCast website]&lt;br /&gt;
&lt;br /&gt;
=== IceCast ===&lt;br /&gt;
&lt;br /&gt;
Install the IceCast streaming server using the instructions and source code found at [http://www.icecast.org IceCast].&lt;br /&gt;
&lt;br /&gt;
=== Streamp2p ===&lt;br /&gt;
&lt;br /&gt;
[http://www.streamerp2p.com Streamerp2p] enables anyone to webcast without expensive servers. Works from your home pc, even on dial-up for some streams. No max limit to listeners like shoutcast. No 'server full' messages, no stream hosting costs, completely free to use for both personal and commercial users. Tiny install (430k), ActiveX version for web pages, and soon a Java version for web and mobile devices.&lt;br /&gt;
&lt;br /&gt;
Streamp2p is a  Windows but runs without problem under wine on Ubuntu Linux.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Icecast2/Shoutcast Meta Data from Rivendell==&lt;br /&gt;
&lt;br /&gt;
=== icecast.py ===&lt;br /&gt;
&lt;br /&gt;
Icecast Stream python meta-data Updater Courtesy WZEW-FM MOBILE AL and Nik Martin - Server Corps&lt;br /&gt;
&lt;br /&gt;
[http://92zew.net/icecast.py icecast.py]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Updating metadata IceCast2/Shoutcast with Rivendell - RDSTREAMDATA===&lt;br /&gt;
&amp;lt;font size=1&amp;gt;Portuguese to English translation&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Following these steps can we use the information in &amp;quot;Now &amp;amp; Next&amp;quot; to update the Rivendell icecast2 servers and / or Shoutcast, thereby making the names of the artist and song are running are displayed in the player receiving the stream. &lt;br /&gt;
&lt;br /&gt;
The Rivendell sends this information via UDP messages, what we do is to capture these messages (using netcat), treat them and apply them to the desired shape Shoutcast/Icecast2 streaming services. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Requirements ==== &lt;br /&gt;
&lt;br /&gt;
The procedures shown here were tested at 10.4 32 bit Ubuntu distribution. &lt;br /&gt;
Make sure your distribution has the following packages installed: &lt;br /&gt;
&lt;br /&gt;
* Wget (Used to upgrade servers icecast2) &lt;br /&gt;
* Lynx (Used to upgrade servers Shoutcast) &lt;br /&gt;
* Nc (netcat, used to capture messages sent by RDAirPlay) &lt;br /&gt;
&lt;br /&gt;
The commands used in the scripts provided below will work with NC (netcat) openbsd version which is the default for Ubuntu 10.04. &lt;br /&gt;
If your distribution uses the traditional NC default, see if there is a binary version of openbsd, as Ubuntu, for example, has both versions. &lt;br /&gt;
In Ubuntu you can check the versions available with the command: &lt;br /&gt;
&lt;br /&gt;
 # Update-alternatives - list nc &lt;br /&gt;
&lt;br /&gt;
It is not necessary that you change the default version of your system, just set in the following steps to use the version RDStreamData openbsd. &lt;br /&gt;
&lt;br /&gt;
==== Installation ==== &lt;br /&gt;
&lt;br /&gt;
* Download the package rdstreamdata.tar.gz &lt;br /&gt;
[Http://www.fdts.com.br/rdstreamdata.tar.gz rdstreamdata.tar.gz] &lt;br /&gt;
&lt;br /&gt;
* Unzip the package and enter the directory created &lt;br /&gt;
 # Tar-zxvf rdstreamdata.tar.gz &lt;br /&gt;
 # Cd rdstreamdata &lt;br /&gt;
* As root, run the installation script and read the instructions on screen. &lt;br /&gt;
 #. / Install.sh &lt;br /&gt;
 Will this script install RDstreamdata, a set of scripts That Will listen to an UDP port is Rivendell Now &amp;amp; Next information and update &lt;br /&gt;
 this information to an icecast2 and / or ShoutCast Server. &lt;br /&gt;
 Do you want to do it? y / n.y &lt;br /&gt;
* Enter &amp;quot;y&amp;quot; and hit Enter &lt;br /&gt;
 Copying files &lt;br /&gt;
 Now You Have to edit / etc / rdstreamdata.conf 'to suit your icecast2, Rivendell and ShoutCast Configurations. &lt;br /&gt;
  &lt;br /&gt;
 Attemper That You Must Set the username and group Which must run under the process before you start the daemon for the first time. &lt;br /&gt;
 Edit / etc / default / rdstreamdata 'and set' Enable 'to' true ', so You Can start it though the init script &lt;br /&gt;
  &lt;br /&gt;
 Also you need to Set the script / etc / init.d / rdstreamdata 'to Be automaticaly run in the desired runlevels, &lt;br /&gt;
 systems in Ubuntu You may use &amp;quot;sysv-rc-conf 'command for this. &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 You Can contact me at contato@fdts.com.br &lt;br /&gt;
  &lt;br /&gt;
 Thanks for using &lt;br /&gt;
&lt;br /&gt;
====General Settings ====  &lt;br /&gt;
&lt;br /&gt;
* Now we must set up some items, as described by the installer, start with the'''/ etc / defaults / rdstreamdata''', where we must fulfill what the user under which the processes are executed. You can use either the user that you log into Linux as the user running the other services of Rivendell, I use the username'''rduser''' and''group 'rivendell'''. '''NOT recommend that you use root or another user with higher privileges'''. &lt;br /&gt;
* Even in'''/ etc / defaults / rdstreamdata''' set the value of'''ENABLE''' to'''true''', otherwise the daemon will not start. &lt;br /&gt;
* In the file'''/ etc / rdstreamdata.conf''' we have all other settings, we should look to the following: &lt;br /&gt;
** In the general settings: &lt;br /&gt;
***'''Netcat_bin = / bin / nc''' - At this point we can define a binary alternative to netcat, remember that we emphasize the importance of early use Netcat version of OpenBSD. As with Ubuntu 4.10 this is already the default, I'm using the default path / bin / nc. &lt;br /&gt;
***'''Riv_udp_port = &amp;quot;9876&amp;quot;''' - Here we define which port our script will be listening for messages from Rivendell, you should use a port that is not being used by any service above 1024 and ever since we are not running as root. The port is also used here as defined in the configuration of Rivendell. &lt;br /&gt;
***'''Message = &amp;quot;Name of your radio&amp;quot;''' - The message specified here is used when the RDAirPlay is closed or when the event is in the air that is not configured to send names (jingles, commercials, called , etc.). &lt;br /&gt;
***'''Min_title_size = 5''' - Minimum size of characters that the event must have for the the standard message set in the previous section is replaced by the name of the event. This is used to filter unwanted events of null characters. &lt;br /&gt;
&lt;br /&gt;
==== Settings Icecast2====  &lt;br /&gt;
* In the file'''/ etc / rdstreamdata.conf''' &lt;br /&gt;
** These settings define whether or not you use a server Icecast2 and what data to access it. &lt;br /&gt;
***'''Ic_enable = true''' - If the value is different from'''true''' the server Icecast2 not be updated. &lt;br /&gt;
***'''Ic_server = &amp;quot;localhost&amp;quot;''' - Hostname or IP of server Icecast2, change as needed. &lt;br /&gt;
***'''Ic_admin = &amp;quot;admin&amp;quot;''' - User Icecast2 server administrator, change as needed. &lt;br /&gt;
***'''Ic_pass = &amp;quot;password&amp;quot;''' - User password server administrator Icecast2, change as needed. &lt;br /&gt;
***'''Ic_port = &amp;quot;8888&amp;quot;''' - Server port Icecast2, change as needed. &lt;br /&gt;
***'''Ic_mount = &amp;quot;/ radio&amp;quot;''' - Mount point Icecast2 server, change as needed. &lt;br /&gt;
&lt;br /&gt;
==== Settings Shoucast====  &lt;br /&gt;
* In the file'''/ etc / rdstreamdata.conf''' &lt;br /&gt;
** These settings define whether or not you use a Shoutcast server and what data to access it. &lt;br /&gt;
***'''Sc_enable = true''' - If the value is different from'''true''' the Shoutcast server will not be updated. &lt;br /&gt;
***'''Sc_server = &amp;quot;localhost&amp;quot;''' - Hostname or IP of the Shoutcast server, change as needed. &lt;br /&gt;
***'''Sc_admin = &amp;quot;admin&amp;quot;''' - User Shoutcast server administrator, change as needed. &lt;br /&gt;
***'''Sc_pass = &amp;quot;password&amp;quot;''' - Password for user administrator Shoutcast server, change as needed. &lt;br /&gt;
***'''Sc_port = &amp;quot;8080&amp;quot;''' - Shoutcast server port, change as needed. &lt;br /&gt;
&lt;br /&gt;
==== Configuring Rivendell ==== &lt;br /&gt;
&lt;br /&gt;
This is an essential step for the update to run, since the Rivendell not send the desired information is useless effort. &lt;br /&gt;
To enable the transmission of information follow the following steps: &lt;br /&gt;
* Enter rdadmin. &lt;br /&gt;
[[File: rdstreamdata_01.jpeg]] &lt;br /&gt;
* Click on'''Manage Hosts'''. &lt;br /&gt;
[[File: rdstreamdata_02.jpeg]] &lt;br /&gt;
* Select the Host which runs RDAirPlay and click'''Edit'''. &lt;br /&gt;
[[File: rdstreamdata_03.jpeg]] &lt;br /&gt;
* Click'''RDAirPlay''' &lt;br /&gt;
[[File: rdstreamdata_04.jpeg]] &lt;br /&gt;
* On the screen that opens click'''Now &amp;amp; Next Set Parameters'''. &lt;br /&gt;
[[File: rdstreamdata_05.jpeg]] &lt;br /&gt;
* Fill in the fields as indicated: &lt;br /&gt;
**'''IP Address''' 127.0.0.1 &lt;br /&gt;
**'''UDP Port:''' 9876 - The same setup informed'''/ etc / rdstreamdata.conf'''. &lt;br /&gt;
**'''UDP String:'''% a -% t% r - Thus we have a message with the names of the artist and the current song, plus a line break. &lt;br /&gt;
[[File: rdstreamdata_06.jpeg]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this point the RDAirPlay is ready to send UDP messages to update our Streaming, however we must be sure that groups are configured to transmit the event information. &lt;br /&gt;
&lt;br /&gt;
* Free rdadmin again. &lt;br /&gt;
[[File: rdstreamdata_01.jpeg]] &lt;br /&gt;
* Click'''Groups'''. &lt;br /&gt;
[[File: rdstreamdata_07.jpeg]] &lt;br /&gt;
* Select a group that wants to transmit information and click'''Edit'''. &lt;br /&gt;
[[File: rdstreamdata_08.jpeg]] &lt;br /&gt;
* Check the'''Transmit Now &amp;amp; Next day''' and click OK. &lt;br /&gt;
[[File: rdstreamdata_09.jpeg]] &lt;br /&gt;
* Repeat the last steps for all desired groups. &lt;br /&gt;
&lt;br /&gt;
* Close and reopen the RDAirPlay. Now the Rivendell should already be updating your streaming server! &lt;br /&gt;
&lt;br /&gt;
Happy Rivendelling! &lt;br /&gt;
&lt;br /&gt;
You can follow any updates to the log file'''/ var / log / rdstreamdata.log'''&lt;br /&gt;
&lt;br /&gt;
== Further Rivendell Streaming Info ==&lt;br /&gt;
You can also see the page [[Stream under Debian]]  for information about streaming under Rivendell but it references darkice and ices-kh(ices2). The first if compiled does not work and the latter is hard to find if you even can.&lt;br /&gt;
&lt;br /&gt;
Also see [[Rivendell_Loadable_Module_(RLM)_SDK_-_For_Sending_Now_%26_Next_Data_to_external_systems|Rivendell Loadable Modules]] for more info on meta data transfer to external systems&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=Streaming_from_Rivendell&amp;diff=678</id>
		<title>Streaming from Rivendell</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=Streaming_from_Rivendell&amp;diff=678"/>
				<updated>2023-07-02T19:46:40Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: /* Setup Rivendell to Use Jack */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Using PyPAD to Generate PAD Updates ==&lt;br /&gt;
&lt;br /&gt;
Beginning with v3.0.1, Rivendell uses a system called 'PyPAD' to generate program associated data (&amp;quot;PAD&amp;quot;, sometimes also referred to in the Rivendell docs as &amp;quot;Now &amp;amp; Next&amp;quot;) updates in real time. Each time a log event starts or stops in RDAirplay, PyPAD can be configured to call one or more Python scripts, each of which are handed the parameters of the event to be be processed and/or forwarded by the code in the script. An overview of the system can be found in the [https://opsguide.rivendellaudio.org/html/chapter.pad.html Program Associated Data chapter] in the [https://opsguide.rivendellaudio.org/html/ Rivendell Operations Guide].&lt;br /&gt;
&lt;br /&gt;
While PyPAD is explicitly designed to make it relatively easy for even novice Python coders to create their own custom scripts, Rivendell also ships with a set of pre-installed scripts that can deal with many common update scenarios, including sending updates for:&lt;br /&gt;
&lt;br /&gt;
* RDS/RDBS displays&lt;br /&gt;
* Online streaming encoders/players&lt;br /&gt;
* Station web sites&lt;br /&gt;
* Associated data displays (such as the Text Display Widget in [https://www.paravelsystems.com/walltime WallTime]&lt;br /&gt;
&lt;br /&gt;
== Icecast2 Meta Data from Rivendell ==&lt;br /&gt;
&lt;br /&gt;
Rivendell ships with a PyPAD script called '''pypad_icecast2.py''' that can be used to update the 'Currently playing' display in IceCast v2.x setups. To configure it, proceed as follows:&lt;br /&gt;
&lt;br /&gt;
# Start RDAdmin and go to Manage Hosts =&amp;gt; &amp;lt;hostname&amp;gt; =&amp;gt; PyPAD Instances.&lt;br /&gt;
# Touch the 'Add' button to open a list of available PyPAD scripts.&lt;br /&gt;
# Choose '''pypad_icecast2.py''' from the list and then touch 'Open'. An 'Edit PyPAD Instance' dialog will open.&lt;br /&gt;
# Find the 'Password=', 'Hostname=', 'Tcpport=' and 'Mountpoint=' entries in the configuration and change them to the values appropriate for your Icecast server. (The configuration contains other entries that can also be used to customize the behavior of the updating process, such as limiting the ability to send PAD updates to a specific subset of carts on the basis of group membership. See the accompanying comments in the configuration for details).&lt;br /&gt;
# Touch the 'OK' button. &lt;br /&gt;
# A new line will appear in the 'PyPAD Instances' dialog. The status light at the start of the line should turn green after a few seconds. If it remains red, select the entry on the list and then touch the 'Error Log' button to see any error messages or warnings generated by the script. Close the dialog, then touch the 'Edit' button and make any needed changes to the configuration. Repeat the process until a green status light is obtained.&lt;br /&gt;
&lt;br /&gt;
N.B. - Due to the way that the IceCast server software is designed, PAD update messages must be seen by the server to originate from the same IP address as that being used to originate the associated audio stream. Provided that the audio encoder and Rivendell are accessing Icecast by means of the same NAT'ed firewall, this requirement will generally be met. If not, then PyPAD can often be configured to send PAD via the audio encoder.&lt;br /&gt;
&lt;br /&gt;
== Configure Jack ==&lt;br /&gt;
&lt;br /&gt;
You can setup Jack (jackd) in a number of ways. There are packages that will start jack at each bootup (FIXME: NEED DETAILS AND SETUP FOR PACKAGES) or you can use the package qjackctl also called Jack Control to setup and use jack. Jack Control provides a GUI interface for configuring Jack. (FIXME: NEED DETAILS AND SETUP FOR JACK CONTROL).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Install a stream source ==&lt;br /&gt;
&lt;br /&gt;
Install [http://www.oddsock.org/tools/edcast_jack/ edcast-jack] on your machine.&lt;br /&gt;
&lt;br /&gt;
Download and uncompress the source archive file. Then open a terminal and go to the '''edcast-jack-3.1.7''' (May be a different folder name if the version increases) directory and compile it. &lt;br /&gt;
&lt;br /&gt;
The normal '''./configure''' , '''make''' and then run as super user '''make install''' worked for me. However, since there is no list of the dependencies I had to run '''./configure''' a number of times watching for the missing files till I got them all installed. Then do '''make''' and after that as the super user '''make install''' to be up and running. Type '''edcast-jack''' in a console window and it will tell you how to invoke it on the command line.&lt;br /&gt;
&lt;br /&gt;
On Ubuntu Jaunty 9.04 the following packages had to be installed to have full edcast-jack functionality: (Mark additional required changes as well!)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
libfaac-dev&lt;br /&gt;
libfaac0&lt;br /&gt;
libjack-dev&lt;br /&gt;
libflac-dev&lt;br /&gt;
libogg-dev&lt;br /&gt;
libvorbis-dev&lt;br /&gt;
libmad0-dev&lt;br /&gt;
libmp3lame-dev&lt;br /&gt;
g++&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== edcast-jack Readme ===&lt;br /&gt;
&amp;lt;pre&amp;gt;edcast-jack Readme&lt;br /&gt;
-------------------&lt;br /&gt;
&lt;br /&gt;
This version of edcast allows you to hook into any jack output port&lt;br /&gt;
and broadcast the audio to an icecast or shoutcast server.&lt;br /&gt;
&lt;br /&gt;
This version of edcast is all command-line oriented, and comes with&lt;br /&gt;
example config files for each of the encoding types supported (Ogg Vorbis,&lt;br /&gt;
LAME, AAC).  You will most likely need to take one of the example configs&lt;br /&gt;
(in the conf dir) and modify it to suit your needs.&lt;br /&gt;
&lt;br /&gt;
Here is an example of how to use it with jack (http://jackit.sourceforge.net).&lt;br /&gt;
&lt;br /&gt;
Step 1: &lt;br /&gt;
 * startup jackd &lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
 * Feed a signal into jackd.  There are many applications you can use&lt;br /&gt;
   for this, if you like XMMS, try installing http://xmms-jack.sourceforge.net/&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
 * Start edcast specifying the appropriate output ports.  To get a list of&lt;br /&gt;
   the output ports, use jack_lsp.  If you use XMMS, you'll see something like :&lt;br /&gt;
&lt;br /&gt;
    % jack_lsp&lt;br /&gt;
    alsa_pcm:capture_1&lt;br /&gt;
    alsa_pcm:capture_2&lt;br /&gt;
    alsa_pcm:playback_1&lt;br /&gt;
    alsa_pcm:playback_2&lt;br /&gt;
    bio2jack_0_32083:out_0&lt;br /&gt;
    bio2jack_0_32083:out_1&lt;br /&gt;
&lt;br /&gt;
   In this case, the bio2jack_0_32083:out_0 and bio2jack_0_32083:out_1 are the &lt;br /&gt;
   output ports from XMMS.  So you'd start edcast like :&lt;br /&gt;
&lt;br /&gt;
    edcast -c edcast_OggVorbis.cfg bio2jack_0_32083:out_0 bio2jack_0_32083:out_1&lt;br /&gt;
&lt;br /&gt;
   Use edcast -h for a usage.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== edcast-jack Usage ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
usage: edcast -c configfile [ -n jack_client_name ] [ -p portmatch ] [ jackport1 [ jackport2 ... ]]&lt;br /&gt;
Where:&lt;br /&gt;
-c : config file that specified encoding settings&lt;br /&gt;
-n : name used to register with jackd&lt;br /&gt;
-p : if specified, edcast will connect to the first two output ports matching this name.&lt;br /&gt;
jackportX : explicitly specify a jack port name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== edcast-jack Sample Configuration File ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Destination server details (to where you are encoding).  Valid server types : Shoutcast, Icecast, Icecast2&lt;br /&gt;
ServerType=Icecast2&lt;br /&gt;
Server=192.168.1.100&lt;br /&gt;
Port=8000&lt;br /&gt;
ServerPassword=hackme&lt;br /&gt;
ServerMountpoint=/stream&lt;br /&gt;
# YP (Stream Directory) Settings&lt;br /&gt;
ServerPublic=1&lt;br /&gt;
ServerIRC=&lt;br /&gt;
ServerAIM=&lt;br /&gt;
ServerICQ=&lt;br /&gt;
ServerStreamURL=http://www.oddsock.org&lt;br /&gt;
ServerName=This is my server name&lt;br /&gt;
ServerDescription=This is my server description&lt;br /&gt;
ServerGenre=Rock&lt;br /&gt;
AutomaticReconnectSecs=10&lt;br /&gt;
AutoConnect=0&lt;br /&gt;
# Output codec selection (Valid selections : MP3, OggVorbis, Ogg FLAC, AAC, AAC Plus)&lt;br /&gt;
Encode=MP3&lt;br /&gt;
# General settings (non-codec related).  Note : NumberChannels = 1 for MONO, 2 for STEREO&lt;br /&gt;
BitrateNominal=48&lt;br /&gt;
BitrateMin=128&lt;br /&gt;
BitrateMax=128&lt;br /&gt;
NumberChannels=1&lt;br /&gt;
Samplerate=22050&lt;br /&gt;
# Ogg Vorbis specific settings.  Note: Valid settings for BitrateQuality flag are (Quality, Bitrate Management)&lt;br /&gt;
OggQuality=0&lt;br /&gt;
OggBitrateQualityFlag=Quality&lt;br /&gt;
# LAME specific settings.  Note: Setting the low/highpass freq to 0 will disable them.&lt;br /&gt;
LameCBRFlag=1&lt;br /&gt;
LameQuality=1&lt;br /&gt;
LameCopywrite=0&lt;br /&gt;
LameOriginal=0&lt;br /&gt;
LameStrictISO=0&lt;br /&gt;
LameDisableReservior=0&lt;br /&gt;
LameVBRMode=vbr_abr&lt;br /&gt;
LameLowpassfreq=0&lt;br /&gt;
LameHighpassfreq=0&lt;br /&gt;
LAMEPreset=0&lt;br /&gt;
# AAC (FAAC) specific settings.&lt;br /&gt;
AACQuality=100&lt;br /&gt;
AACCutoff=&lt;br /&gt;
# Log Level 1 = LOG_ERROR, 2 = LOG_ERROR+LOG_WARNING, 3 = LOG_ERROR+LOG_WARNING+LOG_DEBUG&lt;br /&gt;
LogLevel=3&lt;br /&gt;
# Log File&lt;br /&gt;
LogFile=streamTranscoder_1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Install a broadcast server ==&lt;br /&gt;
&lt;br /&gt;
You can select one of these broadcast servers. &lt;br /&gt;
It will receive the encoded stream from the source stream and provide it to the public listeners.&lt;br /&gt;
&lt;br /&gt;
You can choose ''classic'' broadcast servers (like Icecast2) or peer-to-peer broadcast solutions (like PeerCast or FreeCast).&lt;br /&gt;
&lt;br /&gt;
=== PeerCast ===&lt;br /&gt;
&lt;br /&gt;
Install PeerCast. Current version (as of May 18/2005) is PeerCast v0.1211&lt;br /&gt;
* [http://www.peercast.org/ PeerCast web site]&lt;br /&gt;
* [[Create A PeerCast User]]&lt;br /&gt;
* [http://www.peercast.org/guides/pc-linux.php PeerCast linux install guide.]]&lt;br /&gt;
** I suggest you copy the html directory from the peercast archive to /home/peercast.&lt;br /&gt;
** I suggest you copy the peercast executable from the peercast archive to /usr/bin.&lt;br /&gt;
** See below for configuration instructions/suggestions.&lt;br /&gt;
&lt;br /&gt;
==== Configure ====&lt;br /&gt;
&lt;br /&gt;
=== FreeCast ===&lt;br /&gt;
&lt;br /&gt;
Install the FreeCast debian package available on the [http://debian.tryphon.org Tryphon Debian Archiver].&lt;br /&gt;
&lt;br /&gt;
* [http://www.freecast.org FreeCast website]&lt;br /&gt;
&lt;br /&gt;
=== IceCast ===&lt;br /&gt;
&lt;br /&gt;
Install the IceCast streaming server using the instructions and source code found at [http://www.icecast.org IceCast].&lt;br /&gt;
&lt;br /&gt;
=== Streamp2p ===&lt;br /&gt;
&lt;br /&gt;
[http://www.streamerp2p.com Streamerp2p] enables anyone to webcast without expensive servers. Works from your home pc, even on dial-up for some streams. No max limit to listeners like shoutcast. No 'server full' messages, no stream hosting costs, completely free to use for both personal and commercial users. Tiny install (430k), ActiveX version for web pages, and soon a Java version for web and mobile devices.&lt;br /&gt;
&lt;br /&gt;
Streamp2p is a  Windows but runs without problem under wine on Ubuntu Linux.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Icecast2/Shoutcast Meta Data from Rivendell==&lt;br /&gt;
&lt;br /&gt;
=== icecast.py ===&lt;br /&gt;
&lt;br /&gt;
Icecast Stream python meta-data Updater Courtesy WZEW-FM MOBILE AL and Nik Martin - Server Corps&lt;br /&gt;
&lt;br /&gt;
[http://92zew.net/icecast.py icecast.py]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Updating metadata IceCast2/Shoutcast with Rivendell - RDSTREAMDATA===&lt;br /&gt;
&amp;lt;font size=1&amp;gt;Portuguese to English translation&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Following these steps can we use the information in &amp;quot;Now &amp;amp; Next&amp;quot; to update the Rivendell icecast2 servers and / or Shoutcast, thereby making the names of the artist and song are running are displayed in the player receiving the stream. &lt;br /&gt;
&lt;br /&gt;
The Rivendell sends this information via UDP messages, what we do is to capture these messages (using netcat), treat them and apply them to the desired shape Shoutcast/Icecast2 streaming services. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Requirements ==== &lt;br /&gt;
&lt;br /&gt;
The procedures shown here were tested at 10.4 32 bit Ubuntu distribution. &lt;br /&gt;
Make sure your distribution has the following packages installed: &lt;br /&gt;
&lt;br /&gt;
* Wget (Used to upgrade servers icecast2) &lt;br /&gt;
* Lynx (Used to upgrade servers Shoutcast) &lt;br /&gt;
* Nc (netcat, used to capture messages sent by RDAirPlay) &lt;br /&gt;
&lt;br /&gt;
The commands used in the scripts provided below will work with NC (netcat) openbsd version which is the default for Ubuntu 10.04. &lt;br /&gt;
If your distribution uses the traditional NC default, see if there is a binary version of openbsd, as Ubuntu, for example, has both versions. &lt;br /&gt;
In Ubuntu you can check the versions available with the command: &lt;br /&gt;
&lt;br /&gt;
 # Update-alternatives - list nc &lt;br /&gt;
&lt;br /&gt;
It is not necessary that you change the default version of your system, just set in the following steps to use the version RDStreamData openbsd. &lt;br /&gt;
&lt;br /&gt;
==== Installation ==== &lt;br /&gt;
&lt;br /&gt;
* Download the package rdstreamdata.tar.gz &lt;br /&gt;
[Http://www.fdts.com.br/rdstreamdata.tar.gz rdstreamdata.tar.gz] &lt;br /&gt;
&lt;br /&gt;
* Unzip the package and enter the directory created &lt;br /&gt;
 # Tar-zxvf rdstreamdata.tar.gz &lt;br /&gt;
 # Cd rdstreamdata &lt;br /&gt;
* As root, run the installation script and read the instructions on screen. &lt;br /&gt;
 #. / Install.sh &lt;br /&gt;
 Will this script install RDstreamdata, a set of scripts That Will listen to an UDP port is Rivendell Now &amp;amp; Next information and update &lt;br /&gt;
 this information to an icecast2 and / or ShoutCast Server. &lt;br /&gt;
 Do you want to do it? y / n.y &lt;br /&gt;
* Enter &amp;quot;y&amp;quot; and hit Enter &lt;br /&gt;
 Copying files &lt;br /&gt;
 Now You Have to edit / etc / rdstreamdata.conf 'to suit your icecast2, Rivendell and ShoutCast Configurations. &lt;br /&gt;
  &lt;br /&gt;
 Attemper That You Must Set the username and group Which must run under the process before you start the daemon for the first time. &lt;br /&gt;
 Edit / etc / default / rdstreamdata 'and set' Enable 'to' true ', so You Can start it though the init script &lt;br /&gt;
  &lt;br /&gt;
 Also you need to Set the script / etc / init.d / rdstreamdata 'to Be automaticaly run in the desired runlevels, &lt;br /&gt;
 systems in Ubuntu You may use &amp;quot;sysv-rc-conf 'command for this. &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 You Can contact me at contato@fdts.com.br &lt;br /&gt;
  &lt;br /&gt;
 Thanks for using &lt;br /&gt;
&lt;br /&gt;
====General Settings ====  &lt;br /&gt;
&lt;br /&gt;
* Now we must set up some items, as described by the installer, start with the'''/ etc / defaults / rdstreamdata''', where we must fulfill what the user under which the processes are executed. You can use either the user that you log into Linux as the user running the other services of Rivendell, I use the username'''rduser''' and''group 'rivendell'''. '''NOT recommend that you use root or another user with higher privileges'''. &lt;br /&gt;
* Even in'''/ etc / defaults / rdstreamdata''' set the value of'''ENABLE''' to'''true''', otherwise the daemon will not start. &lt;br /&gt;
* In the file'''/ etc / rdstreamdata.conf''' we have all other settings, we should look to the following: &lt;br /&gt;
** In the general settings: &lt;br /&gt;
***'''Netcat_bin = / bin / nc''' - At this point we can define a binary alternative to netcat, remember that we emphasize the importance of early use Netcat version of OpenBSD. As with Ubuntu 4.10 this is already the default, I'm using the default path / bin / nc. &lt;br /&gt;
***'''Riv_udp_port = &amp;quot;9876&amp;quot;''' - Here we define which port our script will be listening for messages from Rivendell, you should use a port that is not being used by any service above 1024 and ever since we are not running as root. The port is also used here as defined in the configuration of Rivendell. &lt;br /&gt;
***'''Message = &amp;quot;Name of your radio&amp;quot;''' - The message specified here is used when the RDAirPlay is closed or when the event is in the air that is not configured to send names (jingles, commercials, called , etc.). &lt;br /&gt;
***'''Min_title_size = 5''' - Minimum size of characters that the event must have for the the standard message set in the previous section is replaced by the name of the event. This is used to filter unwanted events of null characters. &lt;br /&gt;
&lt;br /&gt;
==== Settings Icecast2====  &lt;br /&gt;
* In the file'''/ etc / rdstreamdata.conf''' &lt;br /&gt;
** These settings define whether or not you use a server Icecast2 and what data to access it. &lt;br /&gt;
***'''Ic_enable = true''' - If the value is different from'''true''' the server Icecast2 not be updated. &lt;br /&gt;
***'''Ic_server = &amp;quot;localhost&amp;quot;''' - Hostname or IP of server Icecast2, change as needed. &lt;br /&gt;
***'''Ic_admin = &amp;quot;admin&amp;quot;''' - User Icecast2 server administrator, change as needed. &lt;br /&gt;
***'''Ic_pass = &amp;quot;password&amp;quot;''' - User password server administrator Icecast2, change as needed. &lt;br /&gt;
***'''Ic_port = &amp;quot;8888&amp;quot;''' - Server port Icecast2, change as needed. &lt;br /&gt;
***'''Ic_mount = &amp;quot;/ radio&amp;quot;''' - Mount point Icecast2 server, change as needed. &lt;br /&gt;
&lt;br /&gt;
==== Settings Shoucast====  &lt;br /&gt;
* In the file'''/ etc / rdstreamdata.conf''' &lt;br /&gt;
** These settings define whether or not you use a Shoutcast server and what data to access it. &lt;br /&gt;
***'''Sc_enable = true''' - If the value is different from'''true''' the Shoutcast server will not be updated. &lt;br /&gt;
***'''Sc_server = &amp;quot;localhost&amp;quot;''' - Hostname or IP of the Shoutcast server, change as needed. &lt;br /&gt;
***'''Sc_admin = &amp;quot;admin&amp;quot;''' - User Shoutcast server administrator, change as needed. &lt;br /&gt;
***'''Sc_pass = &amp;quot;password&amp;quot;''' - Password for user administrator Shoutcast server, change as needed. &lt;br /&gt;
***'''Sc_port = &amp;quot;8080&amp;quot;''' - Shoutcast server port, change as needed. &lt;br /&gt;
&lt;br /&gt;
==== Configuring Rivendell ==== &lt;br /&gt;
&lt;br /&gt;
This is an essential step for the update to run, since the Rivendell not send the desired information is useless effort. &lt;br /&gt;
To enable the transmission of information follow the following steps: &lt;br /&gt;
* Enter rdadmin. &lt;br /&gt;
[[File: rdstreamdata_01.jpeg]] &lt;br /&gt;
* Click on'''Manage Hosts'''. &lt;br /&gt;
[[File: rdstreamdata_02.jpeg]] &lt;br /&gt;
* Select the Host which runs RDAirPlay and click'''Edit'''. &lt;br /&gt;
[[File: rdstreamdata_03.jpeg]] &lt;br /&gt;
* Click'''RDAirPlay''' &lt;br /&gt;
[[File: rdstreamdata_04.jpeg]] &lt;br /&gt;
* On the screen that opens click'''Now &amp;amp; Next Set Parameters'''. &lt;br /&gt;
[[File: rdstreamdata_05.jpeg]] &lt;br /&gt;
* Fill in the fields as indicated: &lt;br /&gt;
**'''IP Address''' 127.0.0.1 &lt;br /&gt;
**'''UDP Port:''' 9876 - The same setup informed'''/ etc / rdstreamdata.conf'''. &lt;br /&gt;
**'''UDP String:'''% a -% t% r - Thus we have a message with the names of the artist and the current song, plus a line break. &lt;br /&gt;
[[File: rdstreamdata_06.jpeg]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this point the RDAirPlay is ready to send UDP messages to update our Streaming, however we must be sure that groups are configured to transmit the event information. &lt;br /&gt;
&lt;br /&gt;
* Free rdadmin again. &lt;br /&gt;
[[File: rdstreamdata_01.jpeg]] &lt;br /&gt;
* Click'''Groups'''. &lt;br /&gt;
[[File: rdstreamdata_07.jpeg]] &lt;br /&gt;
* Select a group that wants to transmit information and click'''Edit'''. &lt;br /&gt;
[[File: rdstreamdata_08.jpeg]] &lt;br /&gt;
* Check the'''Transmit Now &amp;amp; Next day''' and click OK. &lt;br /&gt;
[[File: rdstreamdata_09.jpeg]] &lt;br /&gt;
* Repeat the last steps for all desired groups. &lt;br /&gt;
&lt;br /&gt;
* Close and reopen the RDAirPlay. Now the Rivendell should already be updating your streaming server! &lt;br /&gt;
&lt;br /&gt;
Happy Rivendelling! &lt;br /&gt;
&lt;br /&gt;
You can follow any updates to the log file'''/ var / log / rdstreamdata.log'''&lt;br /&gt;
&lt;br /&gt;
== Further Rivendell Streaming Info ==&lt;br /&gt;
You can also see the page [[Stream under Debian]]  for information about streaming under Rivendell but it references darkice and ices-kh(ices2). The first if compiled does not work and the latter is hard to find if you even can.&lt;br /&gt;
&lt;br /&gt;
Also see [[Rivendell_Loadable_Module_(RLM)_SDK_-_For_Sending_Now_%26_Next_Data_to_external_systems|Rivendell Loadable Modules]] for more info on meta data transfer to external systems&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=Streaming_from_Rivendell&amp;diff=677</id>
		<title>Streaming from Rivendell</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=Streaming_from_Rivendell&amp;diff=677"/>
				<updated>2023-07-02T19:46:01Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: /* Probably outdated Information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Using PyPAD to Generate PAD Updates ==&lt;br /&gt;
&lt;br /&gt;
Beginning with v3.0.1, Rivendell uses a system called 'PyPAD' to generate program associated data (&amp;quot;PAD&amp;quot;, sometimes also referred to in the Rivendell docs as &amp;quot;Now &amp;amp; Next&amp;quot;) updates in real time. Each time a log event starts or stops in RDAirplay, PyPAD can be configured to call one or more Python scripts, each of which are handed the parameters of the event to be be processed and/or forwarded by the code in the script. An overview of the system can be found in the [https://opsguide.rivendellaudio.org/html/chapter.pad.html Program Associated Data chapter] in the [https://opsguide.rivendellaudio.org/html/ Rivendell Operations Guide].&lt;br /&gt;
&lt;br /&gt;
While PyPAD is explicitly designed to make it relatively easy for even novice Python coders to create their own custom scripts, Rivendell also ships with a set of pre-installed scripts that can deal with many common update scenarios, including sending updates for:&lt;br /&gt;
&lt;br /&gt;
* RDS/RDBS displays&lt;br /&gt;
* Online streaming encoders/players&lt;br /&gt;
* Station web sites&lt;br /&gt;
* Associated data displays (such as the Text Display Widget in [https://www.paravelsystems.com/walltime WallTime]&lt;br /&gt;
&lt;br /&gt;
== Icecast2 Meta Data from Rivendell ==&lt;br /&gt;
&lt;br /&gt;
Rivendell ships with a PyPAD script called '''pypad_icecast2.py''' that can be used to update the 'Currently playing' display in IceCast v2.x setups. To configure it, proceed as follows:&lt;br /&gt;
&lt;br /&gt;
# Start RDAdmin and go to Manage Hosts =&amp;gt; &amp;lt;hostname&amp;gt; =&amp;gt; PyPAD Instances.&lt;br /&gt;
# Touch the 'Add' button to open a list of available PyPAD scripts.&lt;br /&gt;
# Choose '''pypad_icecast2.py''' from the list and then touch 'Open'. An 'Edit PyPAD Instance' dialog will open.&lt;br /&gt;
# Find the 'Password=', 'Hostname=', 'Tcpport=' and 'Mountpoint=' entries in the configuration and change them to the values appropriate for your Icecast server. (The configuration contains other entries that can also be used to customize the behavior of the updating process, such as limiting the ability to send PAD updates to a specific subset of carts on the basis of group membership. See the accompanying comments in the configuration for details).&lt;br /&gt;
# Touch the 'OK' button. &lt;br /&gt;
# A new line will appear in the 'PyPAD Instances' dialog. The status light at the start of the line should turn green after a few seconds. If it remains red, select the entry on the list and then touch the 'Error Log' button to see any error messages or warnings generated by the script. Close the dialog, then touch the 'Edit' button and make any needed changes to the configuration. Repeat the process until a green status light is obtained.&lt;br /&gt;
&lt;br /&gt;
N.B. - Due to the way that the IceCast server software is designed, PAD update messages must be seen by the server to originate from the same IP address as that being used to originate the associated audio stream. Provided that the audio encoder and Rivendell are accessing Icecast by means of the same NAT'ed firewall, this requirement will generally be met. If not, then PyPAD can often be configured to send PAD via the audio encoder.&lt;br /&gt;
&lt;br /&gt;
== Setup Rivendell to Use Jack ==&lt;br /&gt;
&lt;br /&gt;
Setup Rivendell to use jack in the Rivendell configuration file /etc/rd.conf&lt;br /&gt;
&lt;br /&gt;
FIXME: MORE DETAILS NEEDED ON RIVENDELL JACK SETUP.&lt;br /&gt;
&lt;br /&gt;
possible way of working:&lt;br /&gt;
&lt;br /&gt;
When compiling Rivendell from source, include jack support by installing jack prior to ./configure.&lt;br /&gt;
Then - after installation - first fire up jack using qjackctl and then start the rd services.&lt;br /&gt;
You will find a jack &amp;quot;soundcard&amp;quot; in rdadmin.&lt;br /&gt;
&lt;br /&gt;
== Configure Jack ==&lt;br /&gt;
&lt;br /&gt;
You can setup Jack (jackd) in a number of ways. There are packages that will start jack at each bootup (FIXME: NEED DETAILS AND SETUP FOR PACKAGES) or you can use the package qjackctl also called Jack Control to setup and use jack. Jack Control provides a GUI interface for configuring Jack. (FIXME: NEED DETAILS AND SETUP FOR JACK CONTROL).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Install a stream source ==&lt;br /&gt;
&lt;br /&gt;
Install [http://www.oddsock.org/tools/edcast_jack/ edcast-jack] on your machine.&lt;br /&gt;
&lt;br /&gt;
Download and uncompress the source archive file. Then open a terminal and go to the '''edcast-jack-3.1.7''' (May be a different folder name if the version increases) directory and compile it. &lt;br /&gt;
&lt;br /&gt;
The normal '''./configure''' , '''make''' and then run as super user '''make install''' worked for me. However, since there is no list of the dependencies I had to run '''./configure''' a number of times watching for the missing files till I got them all installed. Then do '''make''' and after that as the super user '''make install''' to be up and running. Type '''edcast-jack''' in a console window and it will tell you how to invoke it on the command line.&lt;br /&gt;
&lt;br /&gt;
On Ubuntu Jaunty 9.04 the following packages had to be installed to have full edcast-jack functionality: (Mark additional required changes as well!)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
libfaac-dev&lt;br /&gt;
libfaac0&lt;br /&gt;
libjack-dev&lt;br /&gt;
libflac-dev&lt;br /&gt;
libogg-dev&lt;br /&gt;
libvorbis-dev&lt;br /&gt;
libmad0-dev&lt;br /&gt;
libmp3lame-dev&lt;br /&gt;
g++&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== edcast-jack Readme ===&lt;br /&gt;
&amp;lt;pre&amp;gt;edcast-jack Readme&lt;br /&gt;
-------------------&lt;br /&gt;
&lt;br /&gt;
This version of edcast allows you to hook into any jack output port&lt;br /&gt;
and broadcast the audio to an icecast or shoutcast server.&lt;br /&gt;
&lt;br /&gt;
This version of edcast is all command-line oriented, and comes with&lt;br /&gt;
example config files for each of the encoding types supported (Ogg Vorbis,&lt;br /&gt;
LAME, AAC).  You will most likely need to take one of the example configs&lt;br /&gt;
(in the conf dir) and modify it to suit your needs.&lt;br /&gt;
&lt;br /&gt;
Here is an example of how to use it with jack (http://jackit.sourceforge.net).&lt;br /&gt;
&lt;br /&gt;
Step 1: &lt;br /&gt;
 * startup jackd &lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
 * Feed a signal into jackd.  There are many applications you can use&lt;br /&gt;
   for this, if you like XMMS, try installing http://xmms-jack.sourceforge.net/&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
 * Start edcast specifying the appropriate output ports.  To get a list of&lt;br /&gt;
   the output ports, use jack_lsp.  If you use XMMS, you'll see something like :&lt;br /&gt;
&lt;br /&gt;
    % jack_lsp&lt;br /&gt;
    alsa_pcm:capture_1&lt;br /&gt;
    alsa_pcm:capture_2&lt;br /&gt;
    alsa_pcm:playback_1&lt;br /&gt;
    alsa_pcm:playback_2&lt;br /&gt;
    bio2jack_0_32083:out_0&lt;br /&gt;
    bio2jack_0_32083:out_1&lt;br /&gt;
&lt;br /&gt;
   In this case, the bio2jack_0_32083:out_0 and bio2jack_0_32083:out_1 are the &lt;br /&gt;
   output ports from XMMS.  So you'd start edcast like :&lt;br /&gt;
&lt;br /&gt;
    edcast -c edcast_OggVorbis.cfg bio2jack_0_32083:out_0 bio2jack_0_32083:out_1&lt;br /&gt;
&lt;br /&gt;
   Use edcast -h for a usage.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== edcast-jack Usage ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
usage: edcast -c configfile [ -n jack_client_name ] [ -p portmatch ] [ jackport1 [ jackport2 ... ]]&lt;br /&gt;
Where:&lt;br /&gt;
-c : config file that specified encoding settings&lt;br /&gt;
-n : name used to register with jackd&lt;br /&gt;
-p : if specified, edcast will connect to the first two output ports matching this name.&lt;br /&gt;
jackportX : explicitly specify a jack port name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== edcast-jack Sample Configuration File ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Destination server details (to where you are encoding).  Valid server types : Shoutcast, Icecast, Icecast2&lt;br /&gt;
ServerType=Icecast2&lt;br /&gt;
Server=192.168.1.100&lt;br /&gt;
Port=8000&lt;br /&gt;
ServerPassword=hackme&lt;br /&gt;
ServerMountpoint=/stream&lt;br /&gt;
# YP (Stream Directory) Settings&lt;br /&gt;
ServerPublic=1&lt;br /&gt;
ServerIRC=&lt;br /&gt;
ServerAIM=&lt;br /&gt;
ServerICQ=&lt;br /&gt;
ServerStreamURL=http://www.oddsock.org&lt;br /&gt;
ServerName=This is my server name&lt;br /&gt;
ServerDescription=This is my server description&lt;br /&gt;
ServerGenre=Rock&lt;br /&gt;
AutomaticReconnectSecs=10&lt;br /&gt;
AutoConnect=0&lt;br /&gt;
# Output codec selection (Valid selections : MP3, OggVorbis, Ogg FLAC, AAC, AAC Plus)&lt;br /&gt;
Encode=MP3&lt;br /&gt;
# General settings (non-codec related).  Note : NumberChannels = 1 for MONO, 2 for STEREO&lt;br /&gt;
BitrateNominal=48&lt;br /&gt;
BitrateMin=128&lt;br /&gt;
BitrateMax=128&lt;br /&gt;
NumberChannels=1&lt;br /&gt;
Samplerate=22050&lt;br /&gt;
# Ogg Vorbis specific settings.  Note: Valid settings for BitrateQuality flag are (Quality, Bitrate Management)&lt;br /&gt;
OggQuality=0&lt;br /&gt;
OggBitrateQualityFlag=Quality&lt;br /&gt;
# LAME specific settings.  Note: Setting the low/highpass freq to 0 will disable them.&lt;br /&gt;
LameCBRFlag=1&lt;br /&gt;
LameQuality=1&lt;br /&gt;
LameCopywrite=0&lt;br /&gt;
LameOriginal=0&lt;br /&gt;
LameStrictISO=0&lt;br /&gt;
LameDisableReservior=0&lt;br /&gt;
LameVBRMode=vbr_abr&lt;br /&gt;
LameLowpassfreq=0&lt;br /&gt;
LameHighpassfreq=0&lt;br /&gt;
LAMEPreset=0&lt;br /&gt;
# AAC (FAAC) specific settings.&lt;br /&gt;
AACQuality=100&lt;br /&gt;
AACCutoff=&lt;br /&gt;
# Log Level 1 = LOG_ERROR, 2 = LOG_ERROR+LOG_WARNING, 3 = LOG_ERROR+LOG_WARNING+LOG_DEBUG&lt;br /&gt;
LogLevel=3&lt;br /&gt;
# Log File&lt;br /&gt;
LogFile=streamTranscoder_1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Install a broadcast server ==&lt;br /&gt;
&lt;br /&gt;
You can select one of these broadcast servers. &lt;br /&gt;
It will receive the encoded stream from the source stream and provide it to the public listeners.&lt;br /&gt;
&lt;br /&gt;
You can choose ''classic'' broadcast servers (like Icecast2) or peer-to-peer broadcast solutions (like PeerCast or FreeCast).&lt;br /&gt;
&lt;br /&gt;
=== PeerCast ===&lt;br /&gt;
&lt;br /&gt;
Install PeerCast. Current version (as of May 18/2005) is PeerCast v0.1211&lt;br /&gt;
* [http://www.peercast.org/ PeerCast web site]&lt;br /&gt;
* [[Create A PeerCast User]]&lt;br /&gt;
* [http://www.peercast.org/guides/pc-linux.php PeerCast linux install guide.]]&lt;br /&gt;
** I suggest you copy the html directory from the peercast archive to /home/peercast.&lt;br /&gt;
** I suggest you copy the peercast executable from the peercast archive to /usr/bin.&lt;br /&gt;
** See below for configuration instructions/suggestions.&lt;br /&gt;
&lt;br /&gt;
==== Configure ====&lt;br /&gt;
&lt;br /&gt;
=== FreeCast ===&lt;br /&gt;
&lt;br /&gt;
Install the FreeCast debian package available on the [http://debian.tryphon.org Tryphon Debian Archiver].&lt;br /&gt;
&lt;br /&gt;
* [http://www.freecast.org FreeCast website]&lt;br /&gt;
&lt;br /&gt;
=== IceCast ===&lt;br /&gt;
&lt;br /&gt;
Install the IceCast streaming server using the instructions and source code found at [http://www.icecast.org IceCast].&lt;br /&gt;
&lt;br /&gt;
=== Streamp2p ===&lt;br /&gt;
&lt;br /&gt;
[http://www.streamerp2p.com Streamerp2p] enables anyone to webcast without expensive servers. Works from your home pc, even on dial-up for some streams. No max limit to listeners like shoutcast. No 'server full' messages, no stream hosting costs, completely free to use for both personal and commercial users. Tiny install (430k), ActiveX version for web pages, and soon a Java version for web and mobile devices.&lt;br /&gt;
&lt;br /&gt;
Streamp2p is a  Windows but runs without problem under wine on Ubuntu Linux.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Icecast2/Shoutcast Meta Data from Rivendell==&lt;br /&gt;
&lt;br /&gt;
=== icecast.py ===&lt;br /&gt;
&lt;br /&gt;
Icecast Stream python meta-data Updater Courtesy WZEW-FM MOBILE AL and Nik Martin - Server Corps&lt;br /&gt;
&lt;br /&gt;
[http://92zew.net/icecast.py icecast.py]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Updating metadata IceCast2/Shoutcast with Rivendell - RDSTREAMDATA===&lt;br /&gt;
&amp;lt;font size=1&amp;gt;Portuguese to English translation&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Following these steps can we use the information in &amp;quot;Now &amp;amp; Next&amp;quot; to update the Rivendell icecast2 servers and / or Shoutcast, thereby making the names of the artist and song are running are displayed in the player receiving the stream. &lt;br /&gt;
&lt;br /&gt;
The Rivendell sends this information via UDP messages, what we do is to capture these messages (using netcat), treat them and apply them to the desired shape Shoutcast/Icecast2 streaming services. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Requirements ==== &lt;br /&gt;
&lt;br /&gt;
The procedures shown here were tested at 10.4 32 bit Ubuntu distribution. &lt;br /&gt;
Make sure your distribution has the following packages installed: &lt;br /&gt;
&lt;br /&gt;
* Wget (Used to upgrade servers icecast2) &lt;br /&gt;
* Lynx (Used to upgrade servers Shoutcast) &lt;br /&gt;
* Nc (netcat, used to capture messages sent by RDAirPlay) &lt;br /&gt;
&lt;br /&gt;
The commands used in the scripts provided below will work with NC (netcat) openbsd version which is the default for Ubuntu 10.04. &lt;br /&gt;
If your distribution uses the traditional NC default, see if there is a binary version of openbsd, as Ubuntu, for example, has both versions. &lt;br /&gt;
In Ubuntu you can check the versions available with the command: &lt;br /&gt;
&lt;br /&gt;
 # Update-alternatives - list nc &lt;br /&gt;
&lt;br /&gt;
It is not necessary that you change the default version of your system, just set in the following steps to use the version RDStreamData openbsd. &lt;br /&gt;
&lt;br /&gt;
==== Installation ==== &lt;br /&gt;
&lt;br /&gt;
* Download the package rdstreamdata.tar.gz &lt;br /&gt;
[Http://www.fdts.com.br/rdstreamdata.tar.gz rdstreamdata.tar.gz] &lt;br /&gt;
&lt;br /&gt;
* Unzip the package and enter the directory created &lt;br /&gt;
 # Tar-zxvf rdstreamdata.tar.gz &lt;br /&gt;
 # Cd rdstreamdata &lt;br /&gt;
* As root, run the installation script and read the instructions on screen. &lt;br /&gt;
 #. / Install.sh &lt;br /&gt;
 Will this script install RDstreamdata, a set of scripts That Will listen to an UDP port is Rivendell Now &amp;amp; Next information and update &lt;br /&gt;
 this information to an icecast2 and / or ShoutCast Server. &lt;br /&gt;
 Do you want to do it? y / n.y &lt;br /&gt;
* Enter &amp;quot;y&amp;quot; and hit Enter &lt;br /&gt;
 Copying files &lt;br /&gt;
 Now You Have to edit / etc / rdstreamdata.conf 'to suit your icecast2, Rivendell and ShoutCast Configurations. &lt;br /&gt;
  &lt;br /&gt;
 Attemper That You Must Set the username and group Which must run under the process before you start the daemon for the first time. &lt;br /&gt;
 Edit / etc / default / rdstreamdata 'and set' Enable 'to' true ', so You Can start it though the init script &lt;br /&gt;
  &lt;br /&gt;
 Also you need to Set the script / etc / init.d / rdstreamdata 'to Be automaticaly run in the desired runlevels, &lt;br /&gt;
 systems in Ubuntu You may use &amp;quot;sysv-rc-conf 'command for this. &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 You Can contact me at contato@fdts.com.br &lt;br /&gt;
  &lt;br /&gt;
 Thanks for using &lt;br /&gt;
&lt;br /&gt;
====General Settings ====  &lt;br /&gt;
&lt;br /&gt;
* Now we must set up some items, as described by the installer, start with the'''/ etc / defaults / rdstreamdata''', where we must fulfill what the user under which the processes are executed. You can use either the user that you log into Linux as the user running the other services of Rivendell, I use the username'''rduser''' and''group 'rivendell'''. '''NOT recommend that you use root or another user with higher privileges'''. &lt;br /&gt;
* Even in'''/ etc / defaults / rdstreamdata''' set the value of'''ENABLE''' to'''true''', otherwise the daemon will not start. &lt;br /&gt;
* In the file'''/ etc / rdstreamdata.conf''' we have all other settings, we should look to the following: &lt;br /&gt;
** In the general settings: &lt;br /&gt;
***'''Netcat_bin = / bin / nc''' - At this point we can define a binary alternative to netcat, remember that we emphasize the importance of early use Netcat version of OpenBSD. As with Ubuntu 4.10 this is already the default, I'm using the default path / bin / nc. &lt;br /&gt;
***'''Riv_udp_port = &amp;quot;9876&amp;quot;''' - Here we define which port our script will be listening for messages from Rivendell, you should use a port that is not being used by any service above 1024 and ever since we are not running as root. The port is also used here as defined in the configuration of Rivendell. &lt;br /&gt;
***'''Message = &amp;quot;Name of your radio&amp;quot;''' - The message specified here is used when the RDAirPlay is closed or when the event is in the air that is not configured to send names (jingles, commercials, called , etc.). &lt;br /&gt;
***'''Min_title_size = 5''' - Minimum size of characters that the event must have for the the standard message set in the previous section is replaced by the name of the event. This is used to filter unwanted events of null characters. &lt;br /&gt;
&lt;br /&gt;
==== Settings Icecast2====  &lt;br /&gt;
* In the file'''/ etc / rdstreamdata.conf''' &lt;br /&gt;
** These settings define whether or not you use a server Icecast2 and what data to access it. &lt;br /&gt;
***'''Ic_enable = true''' - If the value is different from'''true''' the server Icecast2 not be updated. &lt;br /&gt;
***'''Ic_server = &amp;quot;localhost&amp;quot;''' - Hostname or IP of server Icecast2, change as needed. &lt;br /&gt;
***'''Ic_admin = &amp;quot;admin&amp;quot;''' - User Icecast2 server administrator, change as needed. &lt;br /&gt;
***'''Ic_pass = &amp;quot;password&amp;quot;''' - User password server administrator Icecast2, change as needed. &lt;br /&gt;
***'''Ic_port = &amp;quot;8888&amp;quot;''' - Server port Icecast2, change as needed. &lt;br /&gt;
***'''Ic_mount = &amp;quot;/ radio&amp;quot;''' - Mount point Icecast2 server, change as needed. &lt;br /&gt;
&lt;br /&gt;
==== Settings Shoucast====  &lt;br /&gt;
* In the file'''/ etc / rdstreamdata.conf''' &lt;br /&gt;
** These settings define whether or not you use a Shoutcast server and what data to access it. &lt;br /&gt;
***'''Sc_enable = true''' - If the value is different from'''true''' the Shoutcast server will not be updated. &lt;br /&gt;
***'''Sc_server = &amp;quot;localhost&amp;quot;''' - Hostname or IP of the Shoutcast server, change as needed. &lt;br /&gt;
***'''Sc_admin = &amp;quot;admin&amp;quot;''' - User Shoutcast server administrator, change as needed. &lt;br /&gt;
***'''Sc_pass = &amp;quot;password&amp;quot;''' - Password for user administrator Shoutcast server, change as needed. &lt;br /&gt;
***'''Sc_port = &amp;quot;8080&amp;quot;''' - Shoutcast server port, change as needed. &lt;br /&gt;
&lt;br /&gt;
==== Configuring Rivendell ==== &lt;br /&gt;
&lt;br /&gt;
This is an essential step for the update to run, since the Rivendell not send the desired information is useless effort. &lt;br /&gt;
To enable the transmission of information follow the following steps: &lt;br /&gt;
* Enter rdadmin. &lt;br /&gt;
[[File: rdstreamdata_01.jpeg]] &lt;br /&gt;
* Click on'''Manage Hosts'''. &lt;br /&gt;
[[File: rdstreamdata_02.jpeg]] &lt;br /&gt;
* Select the Host which runs RDAirPlay and click'''Edit'''. &lt;br /&gt;
[[File: rdstreamdata_03.jpeg]] &lt;br /&gt;
* Click'''RDAirPlay''' &lt;br /&gt;
[[File: rdstreamdata_04.jpeg]] &lt;br /&gt;
* On the screen that opens click'''Now &amp;amp; Next Set Parameters'''. &lt;br /&gt;
[[File: rdstreamdata_05.jpeg]] &lt;br /&gt;
* Fill in the fields as indicated: &lt;br /&gt;
**'''IP Address''' 127.0.0.1 &lt;br /&gt;
**'''UDP Port:''' 9876 - The same setup informed'''/ etc / rdstreamdata.conf'''. &lt;br /&gt;
**'''UDP String:'''% a -% t% r - Thus we have a message with the names of the artist and the current song, plus a line break. &lt;br /&gt;
[[File: rdstreamdata_06.jpeg]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this point the RDAirPlay is ready to send UDP messages to update our Streaming, however we must be sure that groups are configured to transmit the event information. &lt;br /&gt;
&lt;br /&gt;
* Free rdadmin again. &lt;br /&gt;
[[File: rdstreamdata_01.jpeg]] &lt;br /&gt;
* Click'''Groups'''. &lt;br /&gt;
[[File: rdstreamdata_07.jpeg]] &lt;br /&gt;
* Select a group that wants to transmit information and click'''Edit'''. &lt;br /&gt;
[[File: rdstreamdata_08.jpeg]] &lt;br /&gt;
* Check the'''Transmit Now &amp;amp; Next day''' and click OK. &lt;br /&gt;
[[File: rdstreamdata_09.jpeg]] &lt;br /&gt;
* Repeat the last steps for all desired groups. &lt;br /&gt;
&lt;br /&gt;
* Close and reopen the RDAirPlay. Now the Rivendell should already be updating your streaming server! &lt;br /&gt;
&lt;br /&gt;
Happy Rivendelling! &lt;br /&gt;
&lt;br /&gt;
You can follow any updates to the log file'''/ var / log / rdstreamdata.log'''&lt;br /&gt;
&lt;br /&gt;
== Further Rivendell Streaming Info ==&lt;br /&gt;
You can also see the page [[Stream under Debian]]  for information about streaming under Rivendell but it references darkice and ices-kh(ices2). The first if compiled does not work and the latter is hard to find if you even can.&lt;br /&gt;
&lt;br /&gt;
Also see [[Rivendell_Loadable_Module_(RLM)_SDK_-_For_Sending_Now_%26_Next_Data_to_external_systems|Rivendell Loadable Modules]] for more info on meta data transfer to external systems&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=Streaming_from_Rivendell&amp;diff=676</id>
		<title>Streaming from Rivendell</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=Streaming_from_Rivendell&amp;diff=676"/>
				<updated>2023-07-02T19:43:38Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: /* Streamdata */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Using PyPAD to Generate PAD Updates ==&lt;br /&gt;
&lt;br /&gt;
Beginning with v3.0.1, Rivendell uses a system called 'PyPAD' to generate program associated data (&amp;quot;PAD&amp;quot;, sometimes also referred to in the Rivendell docs as &amp;quot;Now &amp;amp; Next&amp;quot;) updates in real time. Each time a log event starts or stops in RDAirplay, PyPAD can be configured to call one or more Python scripts, each of which are handed the parameters of the event to be be processed and/or forwarded by the code in the script. An overview of the system can be found in the [https://opsguide.rivendellaudio.org/html/chapter.pad.html Program Associated Data chapter] in the [https://opsguide.rivendellaudio.org/html/ Rivendell Operations Guide].&lt;br /&gt;
&lt;br /&gt;
While PyPAD is explicitly designed to make it relatively easy for even novice Python coders to create their own custom scripts, Rivendell also ships with a set of pre-installed scripts that can deal with many common update scenarios, including sending updates for:&lt;br /&gt;
&lt;br /&gt;
* RDS/RDBS displays&lt;br /&gt;
* Online streaming encoders/players&lt;br /&gt;
* Station web sites&lt;br /&gt;
* Associated data displays (such as the Text Display Widget in [https://www.paravelsystems.com/walltime WallTime]&lt;br /&gt;
&lt;br /&gt;
== Icecast2 Meta Data from Rivendell ==&lt;br /&gt;
&lt;br /&gt;
Rivendell ships with a PyPAD script called '''pypad_icecast2.py''' that can be used to update the 'Currently playing' display in IceCast v2.x setups. To configure it, proceed as follows:&lt;br /&gt;
&lt;br /&gt;
# Start RDAdmin and go to Manage Hosts =&amp;gt; &amp;lt;hostname&amp;gt; =&amp;gt; PyPAD Instances.&lt;br /&gt;
# Touch the 'Add' button to open a list of available PyPAD scripts.&lt;br /&gt;
# Choose '''pypad_icecast2.py''' from the list and then touch 'Open'. An 'Edit PyPAD Instance' dialog will open.&lt;br /&gt;
# Find the 'Password=', 'Hostname=', 'Tcpport=' and 'Mountpoint=' entries in the configuration and change them to the values appropriate for your Icecast server. (The configuration contains other entries that can also be used to customize the behavior of the updating process, such as limiting the ability to send PAD updates to a specific subset of carts on the basis of group membership. See the accompanying comments in the configuration for details).&lt;br /&gt;
# Touch the 'OK' button. &lt;br /&gt;
# A new line will appear in the 'PyPAD Instances' dialog. The status light at the start of the line should turn green after a few seconds. If it remains red, select the entry on the list and then touch the 'Error Log' button to see any error messages or warnings generated by the script. Close the dialog, then touch the 'Edit' button and make any needed changes to the configuration. Repeat the process until a green status light is obtained.&lt;br /&gt;
&lt;br /&gt;
N.B. - Due to the way that the IceCast server software is designed, PAD update messages must be seen by the server to originate from the same IP address as that being used to originate the associated audio stream. Provided that the audio encoder and Rivendell are accessing Icecast by means of the same NAT'ed firewall, this requirement will generally be met. If not, then PyPAD can often be configured to send PAD via the audio encoder.&lt;br /&gt;
&lt;br /&gt;
== Probably outdated Information ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;'''THIS IS PROBABLY OUTDATED'''&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rivendell can be setup to use to jack for audio output. Jack handles connections to ALSA. Hook up the Rivendell outputs to the jack inputs. Jack encodes the stream and sends to your stream source which then feeds your stream server.&lt;br /&gt;
&lt;br /&gt;
== Setup Rivendell to Use Jack ==&lt;br /&gt;
&lt;br /&gt;
Setup Rivendell to use jack in the Rivendell configuration file /etc/rd.conf&lt;br /&gt;
&lt;br /&gt;
FIXME: MORE DETAILS NEEDED ON RIVENDELL JACK SETUP.&lt;br /&gt;
&lt;br /&gt;
possible way of working:&lt;br /&gt;
&lt;br /&gt;
When compiling Rivendell from source, include jack support by installing jack prior to ./configure.&lt;br /&gt;
Then - after installation - first fire up jack using qjackctl and then start the rd services.&lt;br /&gt;
You will find a jack &amp;quot;soundcard&amp;quot; in rdadmin.&lt;br /&gt;
&lt;br /&gt;
== Configure Jack ==&lt;br /&gt;
&lt;br /&gt;
You can setup Jack (jackd) in a number of ways. There are packages that will start jack at each bootup (FIXME: NEED DETAILS AND SETUP FOR PACKAGES) or you can use the package qjackctl also called Jack Control to setup and use jack. Jack Control provides a GUI interface for configuring Jack. (FIXME: NEED DETAILS AND SETUP FOR JACK CONTROL).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Install a stream source ==&lt;br /&gt;
&lt;br /&gt;
Install [http://www.oddsock.org/tools/edcast_jack/ edcast-jack] on your machine.&lt;br /&gt;
&lt;br /&gt;
Download and uncompress the source archive file. Then open a terminal and go to the '''edcast-jack-3.1.7''' (May be a different folder name if the version increases) directory and compile it. &lt;br /&gt;
&lt;br /&gt;
The normal '''./configure''' , '''make''' and then run as super user '''make install''' worked for me. However, since there is no list of the dependencies I had to run '''./configure''' a number of times watching for the missing files till I got them all installed. Then do '''make''' and after that as the super user '''make install''' to be up and running. Type '''edcast-jack''' in a console window and it will tell you how to invoke it on the command line.&lt;br /&gt;
&lt;br /&gt;
On Ubuntu Jaunty 9.04 the following packages had to be installed to have full edcast-jack functionality: (Mark additional required changes as well!)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
libfaac-dev&lt;br /&gt;
libfaac0&lt;br /&gt;
libjack-dev&lt;br /&gt;
libflac-dev&lt;br /&gt;
libogg-dev&lt;br /&gt;
libvorbis-dev&lt;br /&gt;
libmad0-dev&lt;br /&gt;
libmp3lame-dev&lt;br /&gt;
g++&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== edcast-jack Readme ===&lt;br /&gt;
&amp;lt;pre&amp;gt;edcast-jack Readme&lt;br /&gt;
-------------------&lt;br /&gt;
&lt;br /&gt;
This version of edcast allows you to hook into any jack output port&lt;br /&gt;
and broadcast the audio to an icecast or shoutcast server.&lt;br /&gt;
&lt;br /&gt;
This version of edcast is all command-line oriented, and comes with&lt;br /&gt;
example config files for each of the encoding types supported (Ogg Vorbis,&lt;br /&gt;
LAME, AAC).  You will most likely need to take one of the example configs&lt;br /&gt;
(in the conf dir) and modify it to suit your needs.&lt;br /&gt;
&lt;br /&gt;
Here is an example of how to use it with jack (http://jackit.sourceforge.net).&lt;br /&gt;
&lt;br /&gt;
Step 1: &lt;br /&gt;
 * startup jackd &lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
 * Feed a signal into jackd.  There are many applications you can use&lt;br /&gt;
   for this, if you like XMMS, try installing http://xmms-jack.sourceforge.net/&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
 * Start edcast specifying the appropriate output ports.  To get a list of&lt;br /&gt;
   the output ports, use jack_lsp.  If you use XMMS, you'll see something like :&lt;br /&gt;
&lt;br /&gt;
    % jack_lsp&lt;br /&gt;
    alsa_pcm:capture_1&lt;br /&gt;
    alsa_pcm:capture_2&lt;br /&gt;
    alsa_pcm:playback_1&lt;br /&gt;
    alsa_pcm:playback_2&lt;br /&gt;
    bio2jack_0_32083:out_0&lt;br /&gt;
    bio2jack_0_32083:out_1&lt;br /&gt;
&lt;br /&gt;
   In this case, the bio2jack_0_32083:out_0 and bio2jack_0_32083:out_1 are the &lt;br /&gt;
   output ports from XMMS.  So you'd start edcast like :&lt;br /&gt;
&lt;br /&gt;
    edcast -c edcast_OggVorbis.cfg bio2jack_0_32083:out_0 bio2jack_0_32083:out_1&lt;br /&gt;
&lt;br /&gt;
   Use edcast -h for a usage.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== edcast-jack Usage ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
usage: edcast -c configfile [ -n jack_client_name ] [ -p portmatch ] [ jackport1 [ jackport2 ... ]]&lt;br /&gt;
Where:&lt;br /&gt;
-c : config file that specified encoding settings&lt;br /&gt;
-n : name used to register with jackd&lt;br /&gt;
-p : if specified, edcast will connect to the first two output ports matching this name.&lt;br /&gt;
jackportX : explicitly specify a jack port name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== edcast-jack Sample Configuration File ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Destination server details (to where you are encoding).  Valid server types : Shoutcast, Icecast, Icecast2&lt;br /&gt;
ServerType=Icecast2&lt;br /&gt;
Server=192.168.1.100&lt;br /&gt;
Port=8000&lt;br /&gt;
ServerPassword=hackme&lt;br /&gt;
ServerMountpoint=/stream&lt;br /&gt;
# YP (Stream Directory) Settings&lt;br /&gt;
ServerPublic=1&lt;br /&gt;
ServerIRC=&lt;br /&gt;
ServerAIM=&lt;br /&gt;
ServerICQ=&lt;br /&gt;
ServerStreamURL=http://www.oddsock.org&lt;br /&gt;
ServerName=This is my server name&lt;br /&gt;
ServerDescription=This is my server description&lt;br /&gt;
ServerGenre=Rock&lt;br /&gt;
AutomaticReconnectSecs=10&lt;br /&gt;
AutoConnect=0&lt;br /&gt;
# Output codec selection (Valid selections : MP3, OggVorbis, Ogg FLAC, AAC, AAC Plus)&lt;br /&gt;
Encode=MP3&lt;br /&gt;
# General settings (non-codec related).  Note : NumberChannels = 1 for MONO, 2 for STEREO&lt;br /&gt;
BitrateNominal=48&lt;br /&gt;
BitrateMin=128&lt;br /&gt;
BitrateMax=128&lt;br /&gt;
NumberChannels=1&lt;br /&gt;
Samplerate=22050&lt;br /&gt;
# Ogg Vorbis specific settings.  Note: Valid settings for BitrateQuality flag are (Quality, Bitrate Management)&lt;br /&gt;
OggQuality=0&lt;br /&gt;
OggBitrateQualityFlag=Quality&lt;br /&gt;
# LAME specific settings.  Note: Setting the low/highpass freq to 0 will disable them.&lt;br /&gt;
LameCBRFlag=1&lt;br /&gt;
LameQuality=1&lt;br /&gt;
LameCopywrite=0&lt;br /&gt;
LameOriginal=0&lt;br /&gt;
LameStrictISO=0&lt;br /&gt;
LameDisableReservior=0&lt;br /&gt;
LameVBRMode=vbr_abr&lt;br /&gt;
LameLowpassfreq=0&lt;br /&gt;
LameHighpassfreq=0&lt;br /&gt;
LAMEPreset=0&lt;br /&gt;
# AAC (FAAC) specific settings.&lt;br /&gt;
AACQuality=100&lt;br /&gt;
AACCutoff=&lt;br /&gt;
# Log Level 1 = LOG_ERROR, 2 = LOG_ERROR+LOG_WARNING, 3 = LOG_ERROR+LOG_WARNING+LOG_DEBUG&lt;br /&gt;
LogLevel=3&lt;br /&gt;
# Log File&lt;br /&gt;
LogFile=streamTranscoder_1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Install a broadcast server ==&lt;br /&gt;
&lt;br /&gt;
You can select one of these broadcast servers. &lt;br /&gt;
It will receive the encoded stream from the source stream and provide it to the public listeners.&lt;br /&gt;
&lt;br /&gt;
You can choose ''classic'' broadcast servers (like Icecast2) or peer-to-peer broadcast solutions (like PeerCast or FreeCast).&lt;br /&gt;
&lt;br /&gt;
=== PeerCast ===&lt;br /&gt;
&lt;br /&gt;
Install PeerCast. Current version (as of May 18/2005) is PeerCast v0.1211&lt;br /&gt;
* [http://www.peercast.org/ PeerCast web site]&lt;br /&gt;
* [[Create A PeerCast User]]&lt;br /&gt;
* [http://www.peercast.org/guides/pc-linux.php PeerCast linux install guide.]]&lt;br /&gt;
** I suggest you copy the html directory from the peercast archive to /home/peercast.&lt;br /&gt;
** I suggest you copy the peercast executable from the peercast archive to /usr/bin.&lt;br /&gt;
** See below for configuration instructions/suggestions.&lt;br /&gt;
&lt;br /&gt;
==== Configure ====&lt;br /&gt;
&lt;br /&gt;
=== FreeCast ===&lt;br /&gt;
&lt;br /&gt;
Install the FreeCast debian package available on the [http://debian.tryphon.org Tryphon Debian Archiver].&lt;br /&gt;
&lt;br /&gt;
* [http://www.freecast.org FreeCast website]&lt;br /&gt;
&lt;br /&gt;
=== IceCast ===&lt;br /&gt;
&lt;br /&gt;
Install the IceCast streaming server using the instructions and source code found at [http://www.icecast.org IceCast].&lt;br /&gt;
&lt;br /&gt;
=== Streamp2p ===&lt;br /&gt;
&lt;br /&gt;
[http://www.streamerp2p.com Streamerp2p] enables anyone to webcast without expensive servers. Works from your home pc, even on dial-up for some streams. No max limit to listeners like shoutcast. No 'server full' messages, no stream hosting costs, completely free to use for both personal and commercial users. Tiny install (430k), ActiveX version for web pages, and soon a Java version for web and mobile devices.&lt;br /&gt;
&lt;br /&gt;
Streamp2p is a  Windows but runs without problem under wine on Ubuntu Linux.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Icecast2/Shoutcast Meta Data from Rivendell==&lt;br /&gt;
&lt;br /&gt;
=== icecast.py ===&lt;br /&gt;
&lt;br /&gt;
Icecast Stream python meta-data Updater Courtesy WZEW-FM MOBILE AL and Nik Martin - Server Corps&lt;br /&gt;
&lt;br /&gt;
[http://92zew.net/icecast.py icecast.py]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Updating metadata IceCast2/Shoutcast with Rivendell - RDSTREAMDATA===&lt;br /&gt;
&amp;lt;font size=1&amp;gt;Portuguese to English translation&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Following these steps can we use the information in &amp;quot;Now &amp;amp; Next&amp;quot; to update the Rivendell icecast2 servers and / or Shoutcast, thereby making the names of the artist and song are running are displayed in the player receiving the stream. &lt;br /&gt;
&lt;br /&gt;
The Rivendell sends this information via UDP messages, what we do is to capture these messages (using netcat), treat them and apply them to the desired shape Shoutcast/Icecast2 streaming services. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Requirements ==== &lt;br /&gt;
&lt;br /&gt;
The procedures shown here were tested at 10.4 32 bit Ubuntu distribution. &lt;br /&gt;
Make sure your distribution has the following packages installed: &lt;br /&gt;
&lt;br /&gt;
* Wget (Used to upgrade servers icecast2) &lt;br /&gt;
* Lynx (Used to upgrade servers Shoutcast) &lt;br /&gt;
* Nc (netcat, used to capture messages sent by RDAirPlay) &lt;br /&gt;
&lt;br /&gt;
The commands used in the scripts provided below will work with NC (netcat) openbsd version which is the default for Ubuntu 10.04. &lt;br /&gt;
If your distribution uses the traditional NC default, see if there is a binary version of openbsd, as Ubuntu, for example, has both versions. &lt;br /&gt;
In Ubuntu you can check the versions available with the command: &lt;br /&gt;
&lt;br /&gt;
 # Update-alternatives - list nc &lt;br /&gt;
&lt;br /&gt;
It is not necessary that you change the default version of your system, just set in the following steps to use the version RDStreamData openbsd. &lt;br /&gt;
&lt;br /&gt;
==== Installation ==== &lt;br /&gt;
&lt;br /&gt;
* Download the package rdstreamdata.tar.gz &lt;br /&gt;
[Http://www.fdts.com.br/rdstreamdata.tar.gz rdstreamdata.tar.gz] &lt;br /&gt;
&lt;br /&gt;
* Unzip the package and enter the directory created &lt;br /&gt;
 # Tar-zxvf rdstreamdata.tar.gz &lt;br /&gt;
 # Cd rdstreamdata &lt;br /&gt;
* As root, run the installation script and read the instructions on screen. &lt;br /&gt;
 #. / Install.sh &lt;br /&gt;
 Will this script install RDstreamdata, a set of scripts That Will listen to an UDP port is Rivendell Now &amp;amp; Next information and update &lt;br /&gt;
 this information to an icecast2 and / or ShoutCast Server. &lt;br /&gt;
 Do you want to do it? y / n.y &lt;br /&gt;
* Enter &amp;quot;y&amp;quot; and hit Enter &lt;br /&gt;
 Copying files &lt;br /&gt;
 Now You Have to edit / etc / rdstreamdata.conf 'to suit your icecast2, Rivendell and ShoutCast Configurations. &lt;br /&gt;
  &lt;br /&gt;
 Attemper That You Must Set the username and group Which must run under the process before you start the daemon for the first time. &lt;br /&gt;
 Edit / etc / default / rdstreamdata 'and set' Enable 'to' true ', so You Can start it though the init script &lt;br /&gt;
  &lt;br /&gt;
 Also you need to Set the script / etc / init.d / rdstreamdata 'to Be automaticaly run in the desired runlevels, &lt;br /&gt;
 systems in Ubuntu You may use &amp;quot;sysv-rc-conf 'command for this. &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 You Can contact me at contato@fdts.com.br &lt;br /&gt;
  &lt;br /&gt;
 Thanks for using &lt;br /&gt;
&lt;br /&gt;
====General Settings ====  &lt;br /&gt;
&lt;br /&gt;
* Now we must set up some items, as described by the installer, start with the'''/ etc / defaults / rdstreamdata''', where we must fulfill what the user under which the processes are executed. You can use either the user that you log into Linux as the user running the other services of Rivendell, I use the username'''rduser''' and''group 'rivendell'''. '''NOT recommend that you use root or another user with higher privileges'''. &lt;br /&gt;
* Even in'''/ etc / defaults / rdstreamdata''' set the value of'''ENABLE''' to'''true''', otherwise the daemon will not start. &lt;br /&gt;
* In the file'''/ etc / rdstreamdata.conf''' we have all other settings, we should look to the following: &lt;br /&gt;
** In the general settings: &lt;br /&gt;
***'''Netcat_bin = / bin / nc''' - At this point we can define a binary alternative to netcat, remember that we emphasize the importance of early use Netcat version of OpenBSD. As with Ubuntu 4.10 this is already the default, I'm using the default path / bin / nc. &lt;br /&gt;
***'''Riv_udp_port = &amp;quot;9876&amp;quot;''' - Here we define which port our script will be listening for messages from Rivendell, you should use a port that is not being used by any service above 1024 and ever since we are not running as root. The port is also used here as defined in the configuration of Rivendell. &lt;br /&gt;
***'''Message = &amp;quot;Name of your radio&amp;quot;''' - The message specified here is used when the RDAirPlay is closed or when the event is in the air that is not configured to send names (jingles, commercials, called , etc.). &lt;br /&gt;
***'''Min_title_size = 5''' - Minimum size of characters that the event must have for the the standard message set in the previous section is replaced by the name of the event. This is used to filter unwanted events of null characters. &lt;br /&gt;
&lt;br /&gt;
==== Settings Icecast2====  &lt;br /&gt;
* In the file'''/ etc / rdstreamdata.conf''' &lt;br /&gt;
** These settings define whether or not you use a server Icecast2 and what data to access it. &lt;br /&gt;
***'''Ic_enable = true''' - If the value is different from'''true''' the server Icecast2 not be updated. &lt;br /&gt;
***'''Ic_server = &amp;quot;localhost&amp;quot;''' - Hostname or IP of server Icecast2, change as needed. &lt;br /&gt;
***'''Ic_admin = &amp;quot;admin&amp;quot;''' - User Icecast2 server administrator, change as needed. &lt;br /&gt;
***'''Ic_pass = &amp;quot;password&amp;quot;''' - User password server administrator Icecast2, change as needed. &lt;br /&gt;
***'''Ic_port = &amp;quot;8888&amp;quot;''' - Server port Icecast2, change as needed. &lt;br /&gt;
***'''Ic_mount = &amp;quot;/ radio&amp;quot;''' - Mount point Icecast2 server, change as needed. &lt;br /&gt;
&lt;br /&gt;
==== Settings Shoucast====  &lt;br /&gt;
* In the file'''/ etc / rdstreamdata.conf''' &lt;br /&gt;
** These settings define whether or not you use a Shoutcast server and what data to access it. &lt;br /&gt;
***'''Sc_enable = true''' - If the value is different from'''true''' the Shoutcast server will not be updated. &lt;br /&gt;
***'''Sc_server = &amp;quot;localhost&amp;quot;''' - Hostname or IP of the Shoutcast server, change as needed. &lt;br /&gt;
***'''Sc_admin = &amp;quot;admin&amp;quot;''' - User Shoutcast server administrator, change as needed. &lt;br /&gt;
***'''Sc_pass = &amp;quot;password&amp;quot;''' - Password for user administrator Shoutcast server, change as needed. &lt;br /&gt;
***'''Sc_port = &amp;quot;8080&amp;quot;''' - Shoutcast server port, change as needed. &lt;br /&gt;
&lt;br /&gt;
==== Configuring Rivendell ==== &lt;br /&gt;
&lt;br /&gt;
This is an essential step for the update to run, since the Rivendell not send the desired information is useless effort. &lt;br /&gt;
To enable the transmission of information follow the following steps: &lt;br /&gt;
* Enter rdadmin. &lt;br /&gt;
[[File: rdstreamdata_01.jpeg]] &lt;br /&gt;
* Click on'''Manage Hosts'''. &lt;br /&gt;
[[File: rdstreamdata_02.jpeg]] &lt;br /&gt;
* Select the Host which runs RDAirPlay and click'''Edit'''. &lt;br /&gt;
[[File: rdstreamdata_03.jpeg]] &lt;br /&gt;
* Click'''RDAirPlay''' &lt;br /&gt;
[[File: rdstreamdata_04.jpeg]] &lt;br /&gt;
* On the screen that opens click'''Now &amp;amp; Next Set Parameters'''. &lt;br /&gt;
[[File: rdstreamdata_05.jpeg]] &lt;br /&gt;
* Fill in the fields as indicated: &lt;br /&gt;
**'''IP Address''' 127.0.0.1 &lt;br /&gt;
**'''UDP Port:''' 9876 - The same setup informed'''/ etc / rdstreamdata.conf'''. &lt;br /&gt;
**'''UDP String:'''% a -% t% r - Thus we have a message with the names of the artist and the current song, plus a line break. &lt;br /&gt;
[[File: rdstreamdata_06.jpeg]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this point the RDAirPlay is ready to send UDP messages to update our Streaming, however we must be sure that groups are configured to transmit the event information. &lt;br /&gt;
&lt;br /&gt;
* Free rdadmin again. &lt;br /&gt;
[[File: rdstreamdata_01.jpeg]] &lt;br /&gt;
* Click'''Groups'''. &lt;br /&gt;
[[File: rdstreamdata_07.jpeg]] &lt;br /&gt;
* Select a group that wants to transmit information and click'''Edit'''. &lt;br /&gt;
[[File: rdstreamdata_08.jpeg]] &lt;br /&gt;
* Check the'''Transmit Now &amp;amp; Next day''' and click OK. &lt;br /&gt;
[[File: rdstreamdata_09.jpeg]] &lt;br /&gt;
* Repeat the last steps for all desired groups. &lt;br /&gt;
&lt;br /&gt;
* Close and reopen the RDAirPlay. Now the Rivendell should already be updating your streaming server! &lt;br /&gt;
&lt;br /&gt;
Happy Rivendelling! &lt;br /&gt;
&lt;br /&gt;
You can follow any updates to the log file'''/ var / log / rdstreamdata.log'''&lt;br /&gt;
&lt;br /&gt;
== Further Rivendell Streaming Info ==&lt;br /&gt;
You can also see the page [[Stream under Debian]]  for information about streaming under Rivendell but it references darkice and ices-kh(ices2). The first if compiled does not work and the latter is hard to find if you even can.&lt;br /&gt;
&lt;br /&gt;
Also see [[Rivendell_Loadable_Module_(RLM)_SDK_-_For_Sending_Now_%26_Next_Data_to_external_systems|Rivendell Loadable Modules]] for more info on meta data transfer to external systems&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=Streaming_from_Rivendell&amp;diff=675</id>
		<title>Streaming from Rivendell</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=Streaming_from_Rivendell&amp;diff=675"/>
				<updated>2023-07-02T19:39:46Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Using PyPAD to Generate PAD Updates ==&lt;br /&gt;
&lt;br /&gt;
Beginning with v3.0.1, Rivendell uses a system called 'PyPAD' to generate program associated data (&amp;quot;PAD&amp;quot;, sometimes also referred to in the Rivendell docs as &amp;quot;Now &amp;amp; Next&amp;quot;) updates in real time. Each time a log event starts or stops in RDAirplay, PyPAD can be configured to call one or more Python scripts, each of which are handed the parameters of the event to be be processed and/or forwarded by the code in the script. An overview of the system can be found in the [https://opsguide.rivendellaudio.org/html/chapter.pad.html Program Associated Data chapter] in the [https://opsguide.rivendellaudio.org/html/ Rivendell Operations Guide].&lt;br /&gt;
&lt;br /&gt;
While PyPAD is explicitly designed to make it relatively easy for even novice Python coders to create their own custom scripts, Rivendell also ships with a set of pre-installed scripts that can deal with many common update scenarios, including sending updates for:&lt;br /&gt;
&lt;br /&gt;
* RDS/RDBS displays&lt;br /&gt;
* Online streaming encoders/players&lt;br /&gt;
* Station web sites&lt;br /&gt;
* Associated data displays (such as the Text Display Widget in [https://www.paravelsystems.com/walltime WallTime]&lt;br /&gt;
&lt;br /&gt;
== Icecast2 Meta Data from Rivendell ==&lt;br /&gt;
&lt;br /&gt;
Rivendell ships with a PyPAD script called '''pypad_icecast2.py''' that can be used to update the 'Currently playing' display in IceCast v2.x setups. To configure it, proceed as follows:&lt;br /&gt;
&lt;br /&gt;
# Start RDAdmin and go to Manage Hosts =&amp;gt; &amp;lt;hostname&amp;gt; =&amp;gt; PyPAD Instances.&lt;br /&gt;
# Touch the 'Add' button to open a list of available PyPAD scripts.&lt;br /&gt;
# Choose '''pypad_icecast2.py''' from the list and then touch 'Open'. An 'Edit PyPAD Instance' dialog will open.&lt;br /&gt;
# Find the 'Password=', 'Hostname=', 'Tcpport=' and 'Mountpoint=' entries in the configuration and change them to the values appropriate for your Icecast server. (The configuration contains other entries that can also be used to customize the behavior of the updating process, such as limiting the ability to send PAD updates to a specific subset of carts on the basis of group membership. See the accompanying comments in the configuration for details).&lt;br /&gt;
# Touch the 'OK' button. &lt;br /&gt;
# A new line will appear in the 'PyPAD Instances' dialog. The status light at the start of the line should turn green after a few seconds. If it remains red, select the entry on the list and then touch the 'Error Log' button to see any error messages or warnings generated by the script. Close the dialog, then touch the 'Edit' button and make any needed changes to the configuration. Repeat the process until a green status light is obtained.&lt;br /&gt;
&lt;br /&gt;
N.B. - Due to the way that the IceCast server software is designed, PAD update messages must be seen by the server to originate from the same IP address as that being used to originate the associated audio stream. Provided that the audio encoder and Rivendell are accessing Icecast by means of the same NAT'ed firewall, this requirement will generally be met. If not, then PyPAD can often be configured to send PAD via the audio encoder.&lt;br /&gt;
&lt;br /&gt;
== Probably outdated Information ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;'''THIS IS PROBABLY OUTDATED'''&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rivendell can be setup to use to jack for audio output. Jack handles connections to ALSA. Hook up the Rivendell outputs to the jack inputs. Jack encodes the stream and sends to your stream source which then feeds your stream server.&lt;br /&gt;
&lt;br /&gt;
== Setup Rivendell to Use Jack ==&lt;br /&gt;
&lt;br /&gt;
Setup Rivendell to use jack in the Rivendell configuration file /etc/rd.conf&lt;br /&gt;
&lt;br /&gt;
FIXME: MORE DETAILS NEEDED ON RIVENDELL JACK SETUP.&lt;br /&gt;
&lt;br /&gt;
possible way of working:&lt;br /&gt;
&lt;br /&gt;
When compiling Rivendell from source, include jack support by installing jack prior to ./configure.&lt;br /&gt;
Then - after installation - first fire up jack using qjackctl and then start the rd services.&lt;br /&gt;
You will find a jack &amp;quot;soundcard&amp;quot; in rdadmin.&lt;br /&gt;
&lt;br /&gt;
== Configure Jack ==&lt;br /&gt;
&lt;br /&gt;
You can setup Jack (jackd) in a number of ways. There are packages that will start jack at each bootup (FIXME: NEED DETAILS AND SETUP FOR PACKAGES) or you can use the package qjackctl also called Jack Control to setup and use jack. Jack Control provides a GUI interface for configuring Jack. (FIXME: NEED DETAILS AND SETUP FOR JACK CONTROL).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Install a stream source ==&lt;br /&gt;
&lt;br /&gt;
Install [http://www.oddsock.org/tools/edcast_jack/ edcast-jack] on your machine.&lt;br /&gt;
&lt;br /&gt;
Download and uncompress the source archive file. Then open a terminal and go to the '''edcast-jack-3.1.7''' (May be a different folder name if the version increases) directory and compile it. &lt;br /&gt;
&lt;br /&gt;
The normal '''./configure''' , '''make''' and then run as super user '''make install''' worked for me. However, since there is no list of the dependencies I had to run '''./configure''' a number of times watching for the missing files till I got them all installed. Then do '''make''' and after that as the super user '''make install''' to be up and running. Type '''edcast-jack''' in a console window and it will tell you how to invoke it on the command line.&lt;br /&gt;
&lt;br /&gt;
On Ubuntu Jaunty 9.04 the following packages had to be installed to have full edcast-jack functionality: (Mark additional required changes as well!)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
libfaac-dev&lt;br /&gt;
libfaac0&lt;br /&gt;
libjack-dev&lt;br /&gt;
libflac-dev&lt;br /&gt;
libogg-dev&lt;br /&gt;
libvorbis-dev&lt;br /&gt;
libmad0-dev&lt;br /&gt;
libmp3lame-dev&lt;br /&gt;
g++&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== edcast-jack Readme ===&lt;br /&gt;
&amp;lt;pre&amp;gt;edcast-jack Readme&lt;br /&gt;
-------------------&lt;br /&gt;
&lt;br /&gt;
This version of edcast allows you to hook into any jack output port&lt;br /&gt;
and broadcast the audio to an icecast or shoutcast server.&lt;br /&gt;
&lt;br /&gt;
This version of edcast is all command-line oriented, and comes with&lt;br /&gt;
example config files for each of the encoding types supported (Ogg Vorbis,&lt;br /&gt;
LAME, AAC).  You will most likely need to take one of the example configs&lt;br /&gt;
(in the conf dir) and modify it to suit your needs.&lt;br /&gt;
&lt;br /&gt;
Here is an example of how to use it with jack (http://jackit.sourceforge.net).&lt;br /&gt;
&lt;br /&gt;
Step 1: &lt;br /&gt;
 * startup jackd &lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
 * Feed a signal into jackd.  There are many applications you can use&lt;br /&gt;
   for this, if you like XMMS, try installing http://xmms-jack.sourceforge.net/&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
 * Start edcast specifying the appropriate output ports.  To get a list of&lt;br /&gt;
   the output ports, use jack_lsp.  If you use XMMS, you'll see something like :&lt;br /&gt;
&lt;br /&gt;
    % jack_lsp&lt;br /&gt;
    alsa_pcm:capture_1&lt;br /&gt;
    alsa_pcm:capture_2&lt;br /&gt;
    alsa_pcm:playback_1&lt;br /&gt;
    alsa_pcm:playback_2&lt;br /&gt;
    bio2jack_0_32083:out_0&lt;br /&gt;
    bio2jack_0_32083:out_1&lt;br /&gt;
&lt;br /&gt;
   In this case, the bio2jack_0_32083:out_0 and bio2jack_0_32083:out_1 are the &lt;br /&gt;
   output ports from XMMS.  So you'd start edcast like :&lt;br /&gt;
&lt;br /&gt;
    edcast -c edcast_OggVorbis.cfg bio2jack_0_32083:out_0 bio2jack_0_32083:out_1&lt;br /&gt;
&lt;br /&gt;
   Use edcast -h for a usage.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== edcast-jack Usage ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
usage: edcast -c configfile [ -n jack_client_name ] [ -p portmatch ] [ jackport1 [ jackport2 ... ]]&lt;br /&gt;
Where:&lt;br /&gt;
-c : config file that specified encoding settings&lt;br /&gt;
-n : name used to register with jackd&lt;br /&gt;
-p : if specified, edcast will connect to the first two output ports matching this name.&lt;br /&gt;
jackportX : explicitly specify a jack port name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== edcast-jack Sample Configuration File ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Destination server details (to where you are encoding).  Valid server types : Shoutcast, Icecast, Icecast2&lt;br /&gt;
ServerType=Icecast2&lt;br /&gt;
Server=192.168.1.100&lt;br /&gt;
Port=8000&lt;br /&gt;
ServerPassword=hackme&lt;br /&gt;
ServerMountpoint=/stream&lt;br /&gt;
# YP (Stream Directory) Settings&lt;br /&gt;
ServerPublic=1&lt;br /&gt;
ServerIRC=&lt;br /&gt;
ServerAIM=&lt;br /&gt;
ServerICQ=&lt;br /&gt;
ServerStreamURL=http://www.oddsock.org&lt;br /&gt;
ServerName=This is my server name&lt;br /&gt;
ServerDescription=This is my server description&lt;br /&gt;
ServerGenre=Rock&lt;br /&gt;
AutomaticReconnectSecs=10&lt;br /&gt;
AutoConnect=0&lt;br /&gt;
# Output codec selection (Valid selections : MP3, OggVorbis, Ogg FLAC, AAC, AAC Plus)&lt;br /&gt;
Encode=MP3&lt;br /&gt;
# General settings (non-codec related).  Note : NumberChannels = 1 for MONO, 2 for STEREO&lt;br /&gt;
BitrateNominal=48&lt;br /&gt;
BitrateMin=128&lt;br /&gt;
BitrateMax=128&lt;br /&gt;
NumberChannels=1&lt;br /&gt;
Samplerate=22050&lt;br /&gt;
# Ogg Vorbis specific settings.  Note: Valid settings for BitrateQuality flag are (Quality, Bitrate Management)&lt;br /&gt;
OggQuality=0&lt;br /&gt;
OggBitrateQualityFlag=Quality&lt;br /&gt;
# LAME specific settings.  Note: Setting the low/highpass freq to 0 will disable them.&lt;br /&gt;
LameCBRFlag=1&lt;br /&gt;
LameQuality=1&lt;br /&gt;
LameCopywrite=0&lt;br /&gt;
LameOriginal=0&lt;br /&gt;
LameStrictISO=0&lt;br /&gt;
LameDisableReservior=0&lt;br /&gt;
LameVBRMode=vbr_abr&lt;br /&gt;
LameLowpassfreq=0&lt;br /&gt;
LameHighpassfreq=0&lt;br /&gt;
LAMEPreset=0&lt;br /&gt;
# AAC (FAAC) specific settings.&lt;br /&gt;
AACQuality=100&lt;br /&gt;
AACCutoff=&lt;br /&gt;
# Log Level 1 = LOG_ERROR, 2 = LOG_ERROR+LOG_WARNING, 3 = LOG_ERROR+LOG_WARNING+LOG_DEBUG&lt;br /&gt;
LogLevel=3&lt;br /&gt;
# Log File&lt;br /&gt;
LogFile=streamTranscoder_1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Install a broadcast server ==&lt;br /&gt;
&lt;br /&gt;
You can select one of these broadcast servers. &lt;br /&gt;
It will receive the encoded stream from the source stream and provide it to the public listeners.&lt;br /&gt;
&lt;br /&gt;
You can choose ''classic'' broadcast servers (like Icecast2) or peer-to-peer broadcast solutions (like PeerCast or FreeCast).&lt;br /&gt;
&lt;br /&gt;
=== PeerCast ===&lt;br /&gt;
&lt;br /&gt;
Install PeerCast. Current version (as of May 18/2005) is PeerCast v0.1211&lt;br /&gt;
* [http://www.peercast.org/ PeerCast web site]&lt;br /&gt;
* [[Create A PeerCast User]]&lt;br /&gt;
* [http://www.peercast.org/guides/pc-linux.php PeerCast linux install guide.]]&lt;br /&gt;
** I suggest you copy the html directory from the peercast archive to /home/peercast.&lt;br /&gt;
** I suggest you copy the peercast executable from the peercast archive to /usr/bin.&lt;br /&gt;
** See below for configuration instructions/suggestions.&lt;br /&gt;
&lt;br /&gt;
==== Configure ====&lt;br /&gt;
&lt;br /&gt;
=== FreeCast ===&lt;br /&gt;
&lt;br /&gt;
Install the FreeCast debian package available on the [http://debian.tryphon.org Tryphon Debian Archiver].&lt;br /&gt;
&lt;br /&gt;
* [http://www.freecast.org FreeCast website]&lt;br /&gt;
&lt;br /&gt;
=== IceCast ===&lt;br /&gt;
&lt;br /&gt;
Install the IceCast streaming server using the instructions and source code found at [http://www.icecast.org IceCast].&lt;br /&gt;
&lt;br /&gt;
=== Streamp2p ===&lt;br /&gt;
&lt;br /&gt;
[http://www.streamerp2p.com Streamerp2p] enables anyone to webcast without expensive servers. Works from your home pc, even on dial-up for some streams. No max limit to listeners like shoutcast. No 'server full' messages, no stream hosting costs, completely free to use for both personal and commercial users. Tiny install (430k), ActiveX version for web pages, and soon a Java version for web and mobile devices.&lt;br /&gt;
&lt;br /&gt;
Streamp2p is a  Windows but runs without problem under wine on Ubuntu Linux.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Icecast2/Shoutcast Meta Data from Rivendell==&lt;br /&gt;
&lt;br /&gt;
=== Streamdata === &lt;br /&gt;
&lt;br /&gt;
Streamdata for Shoutcast is available from [http://emitworks.com/en/index.php?id=rivendell-radio-automation EMITworks]. You can download it [http://emitworks.com/streamdata.tar.gz here].&lt;br /&gt;
&lt;br /&gt;
Streamdata for Icecast2 is available for download [http://ubuntuone.com/p/E7F// here] . &lt;br /&gt;
&lt;br /&gt;
Streamdata is a set of scripts to update Shoutcast and Icecast2 using Rivendell Now&amp;amp;Next data.&lt;br /&gt;
&lt;br /&gt;
*Streamdata was written by Michael Papsdorf  &lt;br /&gt;
&lt;br /&gt;
*Modified for usage in Debian/Ubuntu and Icecast2 by Daniel Roviriego&lt;br /&gt;
&lt;br /&gt;
 HowTo stream Rivendell Now &amp;amp; Next data to your Shoutcast server: &lt;br /&gt;
&lt;br /&gt;
* Preparation: make sure you have netcat, lynx and awk installed on your system under openSUSE, simply type &amp;quot;zypper install netcat&amp;quot; in a console. Same with Lynx and awk&lt;br /&gt;
&lt;br /&gt;
* Extract the directory somewhere you will find it ;)&lt;br /&gt;
&lt;br /&gt;
* In rdadmin, go to manage hosts --&amp;gt; your host --&amp;gt; rdairplay --&amp;gt; configure Now &amp;amp; Next&lt;br /&gt;
** '''IP-Adress:''' this is 127.0.0.1 since you are running the script on the same machine&lt;br /&gt;
** '''UDP Port:''' anything that is unused, we use 6666&lt;br /&gt;
** '''UDP String:''' This is the data you actually send.  To output the now playing artist and title enter:&lt;br /&gt;
 %a %t#&lt;br /&gt;
'''Note:''' You must include a '''#''' at the end of the UDP string so that the updater can tell where one title starts and the other ends.&lt;br /&gt;
&lt;br /&gt;
The following placeholder macros can be used in the UDP String, which will be replaced appropriately when a packet is sent:&lt;br /&gt;
 %n - The currently-playing CART NUMBER&lt;br /&gt;
 %g - The currently-playing GROUP NAME&lt;br /&gt;
 %t - The currently-playing TITLE field&lt;br /&gt;
 %a - The currently-playing ARTIST field&lt;br /&gt;
 %l - The currently-playing ALBUM field&lt;br /&gt;
 %y - The currently-playing YEAR field&lt;br /&gt;
 %b - The currently-playing LABEL field&lt;br /&gt;
 %c - The currently-playing CLIENT field&lt;br /&gt;
 %e - The currently-playing AGENCY field&lt;br /&gt;
 %u - The currently-playing USER DEFINED field&lt;br /&gt;
 %h - The length of the currently playing cut, in mS.&lt;br /&gt;
 %r - A &amp;quot;Unix&amp;quot; style newline (naked ASCII 10)&lt;br /&gt;
 %R - An &amp;quot;MS-DOS&amp;quot; style newsline (ASCII 13/10)&lt;br /&gt;
 %% - A literal '%'.&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' Additionally, with the exception of the '%r', '%R' and '%%' placeholders, '''the corresponding field for the &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;next-to-play event&amp;lt;/span&amp;gt; can be specified by simply uppercasing the above placeholders'''.  Any other characters will be sent unchanged.&lt;br /&gt;
&lt;br /&gt;
Remember to put a '''#''' at the end of the UDP String, so the updater can keep the different titles apart.&lt;br /&gt;
&lt;br /&gt;
* '''RML:''' Additional RML to execute. To put the update that was sent into the message field in rdairplay, this should read LB updated %a %t! (the ! is mandatory)&lt;br /&gt;
&lt;br /&gt;
* cd into /streamdata&lt;br /&gt;
&lt;br /&gt;
* Edit the configuration in song.sh and streamupdate.sh&lt;br /&gt;
** In song.sh port set in rdadmin and songdat the path where you extracted the directory to including the directory and song.dat. '''Example:''' you put it into /home/rd, than it should read &amp;quot;/home/rd/streamdata/song.dat&amp;quot;&lt;br /&gt;
** In streamupdate.sh: edit the domain name or ip of your shoutcast server, the port it is on, the adminpassword (in case you didn't set one, this is the password you use to stream), a message for when it is started and, once again, the path to song.dat&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;NOTE: The issue has been fixed. If you downloaded streamdata before 27th of September 2010, the following still applies: In the current release streamupdate.sh has a hardcoded value in place of a variable. You can fix this by changing&lt;br /&gt;
&amp;lt;pre&amp;gt;($(nohup lynx -source &amp;quot;http://dd-radio.com:8000/admin.cgi?pass=$pass&amp;amp;mode=updinfo&amp;amp;song=$title&amp;quot; &amp;gt; /dev/null &amp;amp;))&amp;amp;&amp;lt;/pre&amp;gt;&lt;br /&gt;
to&lt;br /&gt;
&amp;lt;pre&amp;gt;($(nohup lynx -source &amp;quot;http://$server:$port/admin.cgi?pass=$pass&amp;amp;mode=updinfo&amp;amp;song=$title&amp;quot; &amp;gt; /dev/null &amp;amp;))&amp;amp;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Restart rdairplay so that the changes in now&amp;amp;next take place&lt;br /&gt;
&lt;br /&gt;
* execute startupdate.sh by typing ./startupdate.sh&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' The meta data for all songs are written to song.dat. ALL of them. Make sure that song.dat is not getting too big. To reset the file, simply &amp;quot;rm song.dat&amp;quot; and &amp;quot;touch song.dat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 How to stream Rivendell Now &amp;amp; Next data to your Icecast2 server: &lt;br /&gt;
&lt;br /&gt;
The same instructions as above (for the Shoutcast Server), apart from:&lt;br /&gt;
&lt;br /&gt;
* There is no need for lynx and awk (wget and tail instead, available natively in Debian and Ubuntu)&lt;br /&gt;
&lt;br /&gt;
*'''UDP String:''' - The same as above, but for getting the titles and Artists to different lines into the &amp;quot;song.dat&amp;quot;, Use a wildcard for a newline  '''%r'''. That would be:  %a - %t %r&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;'''NOTE:''' If you are using Ubuntu 10.04, due to changes in the netcat of this version, you'll have to change the options passed to &amp;quot;nc&amp;quot; in the &amp;quot;song.sh&amp;quot; file. Change &lt;br /&gt;
 netcat -l -u -p $port &amp;gt; $songdat &amp;amp;&lt;br /&gt;
to&lt;br /&gt;
 netcat -k -u -l $port &amp;gt; $songdat &amp;amp;&lt;br /&gt;
&amp;lt;/span&amp;gt;&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== icecast.py ===&lt;br /&gt;
&lt;br /&gt;
Icecast Stream python meta-data Updater Courtesy WZEW-FM MOBILE AL and Nik Martin - Server Corps&lt;br /&gt;
&lt;br /&gt;
[http://92zew.net/icecast.py icecast.py]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Updating metadata IceCast2/Shoutcast with Rivendell - RDSTREAMDATA===&lt;br /&gt;
&amp;lt;font size=1&amp;gt;Portuguese to English translation&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Following these steps can we use the information in &amp;quot;Now &amp;amp; Next&amp;quot; to update the Rivendell icecast2 servers and / or Shoutcast, thereby making the names of the artist and song are running are displayed in the player receiving the stream. &lt;br /&gt;
&lt;br /&gt;
The Rivendell sends this information via UDP messages, what we do is to capture these messages (using netcat), treat them and apply them to the desired shape Shoutcast/Icecast2 streaming services. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Requirements ==== &lt;br /&gt;
&lt;br /&gt;
The procedures shown here were tested at 10.4 32 bit Ubuntu distribution. &lt;br /&gt;
Make sure your distribution has the following packages installed: &lt;br /&gt;
&lt;br /&gt;
* Wget (Used to upgrade servers icecast2) &lt;br /&gt;
* Lynx (Used to upgrade servers Shoutcast) &lt;br /&gt;
* Nc (netcat, used to capture messages sent by RDAirPlay) &lt;br /&gt;
&lt;br /&gt;
The commands used in the scripts provided below will work with NC (netcat) openbsd version which is the default for Ubuntu 10.04. &lt;br /&gt;
If your distribution uses the traditional NC default, see if there is a binary version of openbsd, as Ubuntu, for example, has both versions. &lt;br /&gt;
In Ubuntu you can check the versions available with the command: &lt;br /&gt;
&lt;br /&gt;
 # Update-alternatives - list nc &lt;br /&gt;
&lt;br /&gt;
It is not necessary that you change the default version of your system, just set in the following steps to use the version RDStreamData openbsd. &lt;br /&gt;
&lt;br /&gt;
==== Installation ==== &lt;br /&gt;
&lt;br /&gt;
* Download the package rdstreamdata.tar.gz &lt;br /&gt;
[Http://www.fdts.com.br/rdstreamdata.tar.gz rdstreamdata.tar.gz] &lt;br /&gt;
&lt;br /&gt;
* Unzip the package and enter the directory created &lt;br /&gt;
 # Tar-zxvf rdstreamdata.tar.gz &lt;br /&gt;
 # Cd rdstreamdata &lt;br /&gt;
* As root, run the installation script and read the instructions on screen. &lt;br /&gt;
 #. / Install.sh &lt;br /&gt;
 Will this script install RDstreamdata, a set of scripts That Will listen to an UDP port is Rivendell Now &amp;amp; Next information and update &lt;br /&gt;
 this information to an icecast2 and / or ShoutCast Server. &lt;br /&gt;
 Do you want to do it? y / n.y &lt;br /&gt;
* Enter &amp;quot;y&amp;quot; and hit Enter &lt;br /&gt;
 Copying files &lt;br /&gt;
 Now You Have to edit / etc / rdstreamdata.conf 'to suit your icecast2, Rivendell and ShoutCast Configurations. &lt;br /&gt;
  &lt;br /&gt;
 Attemper That You Must Set the username and group Which must run under the process before you start the daemon for the first time. &lt;br /&gt;
 Edit / etc / default / rdstreamdata 'and set' Enable 'to' true ', so You Can start it though the init script &lt;br /&gt;
  &lt;br /&gt;
 Also you need to Set the script / etc / init.d / rdstreamdata 'to Be automaticaly run in the desired runlevels, &lt;br /&gt;
 systems in Ubuntu You may use &amp;quot;sysv-rc-conf 'command for this. &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 You Can contact me at contato@fdts.com.br &lt;br /&gt;
  &lt;br /&gt;
 Thanks for using &lt;br /&gt;
&lt;br /&gt;
====General Settings ====  &lt;br /&gt;
&lt;br /&gt;
* Now we must set up some items, as described by the installer, start with the'''/ etc / defaults / rdstreamdata''', where we must fulfill what the user under which the processes are executed. You can use either the user that you log into Linux as the user running the other services of Rivendell, I use the username'''rduser''' and''group 'rivendell'''. '''NOT recommend that you use root or another user with higher privileges'''. &lt;br /&gt;
* Even in'''/ etc / defaults / rdstreamdata''' set the value of'''ENABLE''' to'''true''', otherwise the daemon will not start. &lt;br /&gt;
* In the file'''/ etc / rdstreamdata.conf''' we have all other settings, we should look to the following: &lt;br /&gt;
** In the general settings: &lt;br /&gt;
***'''Netcat_bin = / bin / nc''' - At this point we can define a binary alternative to netcat, remember that we emphasize the importance of early use Netcat version of OpenBSD. As with Ubuntu 4.10 this is already the default, I'm using the default path / bin / nc. &lt;br /&gt;
***'''Riv_udp_port = &amp;quot;9876&amp;quot;''' - Here we define which port our script will be listening for messages from Rivendell, you should use a port that is not being used by any service above 1024 and ever since we are not running as root. The port is also used here as defined in the configuration of Rivendell. &lt;br /&gt;
***'''Message = &amp;quot;Name of your radio&amp;quot;''' - The message specified here is used when the RDAirPlay is closed or when the event is in the air that is not configured to send names (jingles, commercials, called , etc.). &lt;br /&gt;
***'''Min_title_size = 5''' - Minimum size of characters that the event must have for the the standard message set in the previous section is replaced by the name of the event. This is used to filter unwanted events of null characters. &lt;br /&gt;
&lt;br /&gt;
==== Settings Icecast2====  &lt;br /&gt;
* In the file'''/ etc / rdstreamdata.conf''' &lt;br /&gt;
** These settings define whether or not you use a server Icecast2 and what data to access it. &lt;br /&gt;
***'''Ic_enable = true''' - If the value is different from'''true''' the server Icecast2 not be updated. &lt;br /&gt;
***'''Ic_server = &amp;quot;localhost&amp;quot;''' - Hostname or IP of server Icecast2, change as needed. &lt;br /&gt;
***'''Ic_admin = &amp;quot;admin&amp;quot;''' - User Icecast2 server administrator, change as needed. &lt;br /&gt;
***'''Ic_pass = &amp;quot;password&amp;quot;''' - User password server administrator Icecast2, change as needed. &lt;br /&gt;
***'''Ic_port = &amp;quot;8888&amp;quot;''' - Server port Icecast2, change as needed. &lt;br /&gt;
***'''Ic_mount = &amp;quot;/ radio&amp;quot;''' - Mount point Icecast2 server, change as needed. &lt;br /&gt;
&lt;br /&gt;
==== Settings Shoucast====  &lt;br /&gt;
* In the file'''/ etc / rdstreamdata.conf''' &lt;br /&gt;
** These settings define whether or not you use a Shoutcast server and what data to access it. &lt;br /&gt;
***'''Sc_enable = true''' - If the value is different from'''true''' the Shoutcast server will not be updated. &lt;br /&gt;
***'''Sc_server = &amp;quot;localhost&amp;quot;''' - Hostname or IP of the Shoutcast server, change as needed. &lt;br /&gt;
***'''Sc_admin = &amp;quot;admin&amp;quot;''' - User Shoutcast server administrator, change as needed. &lt;br /&gt;
***'''Sc_pass = &amp;quot;password&amp;quot;''' - Password for user administrator Shoutcast server, change as needed. &lt;br /&gt;
***'''Sc_port = &amp;quot;8080&amp;quot;''' - Shoutcast server port, change as needed. &lt;br /&gt;
&lt;br /&gt;
==== Configuring Rivendell ==== &lt;br /&gt;
&lt;br /&gt;
This is an essential step for the update to run, since the Rivendell not send the desired information is useless effort. &lt;br /&gt;
To enable the transmission of information follow the following steps: &lt;br /&gt;
* Enter rdadmin. &lt;br /&gt;
[[File: rdstreamdata_01.jpeg]] &lt;br /&gt;
* Click on'''Manage Hosts'''. &lt;br /&gt;
[[File: rdstreamdata_02.jpeg]] &lt;br /&gt;
* Select the Host which runs RDAirPlay and click'''Edit'''. &lt;br /&gt;
[[File: rdstreamdata_03.jpeg]] &lt;br /&gt;
* Click'''RDAirPlay''' &lt;br /&gt;
[[File: rdstreamdata_04.jpeg]] &lt;br /&gt;
* On the screen that opens click'''Now &amp;amp; Next Set Parameters'''. &lt;br /&gt;
[[File: rdstreamdata_05.jpeg]] &lt;br /&gt;
* Fill in the fields as indicated: &lt;br /&gt;
**'''IP Address''' 127.0.0.1 &lt;br /&gt;
**'''UDP Port:''' 9876 - The same setup informed'''/ etc / rdstreamdata.conf'''. &lt;br /&gt;
**'''UDP String:'''% a -% t% r - Thus we have a message with the names of the artist and the current song, plus a line break. &lt;br /&gt;
[[File: rdstreamdata_06.jpeg]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this point the RDAirPlay is ready to send UDP messages to update our Streaming, however we must be sure that groups are configured to transmit the event information. &lt;br /&gt;
&lt;br /&gt;
* Free rdadmin again. &lt;br /&gt;
[[File: rdstreamdata_01.jpeg]] &lt;br /&gt;
* Click'''Groups'''. &lt;br /&gt;
[[File: rdstreamdata_07.jpeg]] &lt;br /&gt;
* Select a group that wants to transmit information and click'''Edit'''. &lt;br /&gt;
[[File: rdstreamdata_08.jpeg]] &lt;br /&gt;
* Check the'''Transmit Now &amp;amp; Next day''' and click OK. &lt;br /&gt;
[[File: rdstreamdata_09.jpeg]] &lt;br /&gt;
* Repeat the last steps for all desired groups. &lt;br /&gt;
&lt;br /&gt;
* Close and reopen the RDAirPlay. Now the Rivendell should already be updating your streaming server! &lt;br /&gt;
&lt;br /&gt;
Happy Rivendelling! &lt;br /&gt;
&lt;br /&gt;
You can follow any updates to the log file'''/ var / log / rdstreamdata.log'''&lt;br /&gt;
&lt;br /&gt;
== Further Rivendell Streaming Info ==&lt;br /&gt;
You can also see the page [[Stream under Debian]]  for information about streaming under Rivendell but it references darkice and ices-kh(ices2). The first if compiled does not work and the latter is hard to find if you even can.&lt;br /&gt;
&lt;br /&gt;
Also see [[Rivendell_Loadable_Module_(RLM)_SDK_-_For_Sending_Now_%26_Next_Data_to_external_systems|Rivendell Loadable Modules]] for more info on meta data transfer to external systems&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=Streaming_from_Rivendell&amp;diff=674</id>
		<title>Streaming from Rivendell</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=Streaming_from_Rivendell&amp;diff=674"/>
				<updated>2023-07-02T19:37:25Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: /* Icecast2 Meta Data from Rivendell */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FIXME: THIS PAGE IS NOT FINISHED! IF YOU GO THROUGH THIS SETUP PLEASE FINISH THIS PAGE!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using PyPAD to Generate PAD Updates ==&lt;br /&gt;
&lt;br /&gt;
Beginning with v3.0.1, Rivendell uses a system called 'PyPAD' to generate program associated data (&amp;quot;PAD&amp;quot;, sometimes also referred to in the Rivendell docs as &amp;quot;Now &amp;amp; Next&amp;quot;) updates in real time. Each time a log event starts or stops in RDAirplay, PyPAD can be configured to call one or more Python scripts, each of which are handed the parameters of the event to be be processed and/or forwarded by the code in the script. An overview of the system can be found in the [https://opsguide.rivendellaudio.org/html/chapter.pad.html Program Associated Data chapter] in the [https://opsguide.rivendellaudio.org/html/ Rivendell Operations Guide].&lt;br /&gt;
&lt;br /&gt;
While PyPAD is explicitly designed to make it relatively easy for even novice Python coders to create their own custom scripts, Rivendell also ships with a set of pre-installed scripts that can deal with many common update scenarios, including sending updates for:&lt;br /&gt;
&lt;br /&gt;
* RDS/RDBS displays&lt;br /&gt;
* Online streaming encoders/players&lt;br /&gt;
* Station web sites&lt;br /&gt;
* Associated data displays (such as the Text Display Widget in [https://www.paravelsystems.com/walltime WallTime]&lt;br /&gt;
&lt;br /&gt;
== Icecast2 Meta Data from Rivendell ==&lt;br /&gt;
&lt;br /&gt;
Rivendell ships with a PyPAD script called '''pypad_icecast2.py''' that can be used to update the 'Currently playing' display in IceCast v2.x setups. To configure it, proceed as follows:&lt;br /&gt;
&lt;br /&gt;
# Start RDAdmin and go to Manage Hosts =&amp;gt; &amp;lt;hostname&amp;gt; =&amp;gt; PyPAD Instances.&lt;br /&gt;
# Touch the 'Add' button to open a list of available PyPAD scripts.&lt;br /&gt;
# Choose '''pypad_icecast2.py''' from the list and then touch 'Open'. An 'Edit PyPAD Instance' dialog will open.&lt;br /&gt;
# Find the 'Password=', 'Hostname=', 'Tcpport=' and 'Mountpoint=' entries in the configuration and change them to the values appropriate for your Icecast server. (The configuration contains other entries that can also be used to customize the behavior of the updating process, such as limiting the ability to send PAD updates to a specific subset of carts on the basis of group membership. See the accompanying comments in the configuration for details).&lt;br /&gt;
# Touch the 'OK' button. &lt;br /&gt;
# A new line will appear in the 'PyPAD Instances' dialog. The status light at the start of the line should turn green after a few seconds. If it remains red, select the entry on the list and then touch the 'Error Log' button to see any error messages or warnings generated by the script. Close the dialog, then touch the 'Edit' button and make any needed changes to the configuration. Repeat the process until a green status light is obtained.&lt;br /&gt;
&lt;br /&gt;
N.B. - Due to the way that the IceCast server software is designed, PAD update messages must be seen by the server to originate from the same IP address as that being used to originate the associated audio stream. Provided that the audio encoder and Rivendell are accessing Icecast by means of the same NAT'ed firewall, this requirement will generally be met. If not, then PyPAD can often be configured to send PAD via the audio encoder.&lt;br /&gt;
&lt;br /&gt;
== Probably outdated Information ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;'''THIS IS PROBABLY OUTDATED'''&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rivendell can be setup to use to jack for audio output. Jack handles connections to ALSA. Hook up the Rivendell outputs to the jack inputs. Jack encodes the stream and sends to your stream source which then feeds your stream server.&lt;br /&gt;
&lt;br /&gt;
== Setup Rivendell to Use Jack ==&lt;br /&gt;
&lt;br /&gt;
Setup Rivendell to use jack in the Rivendell configuration file /etc/rd.conf&lt;br /&gt;
&lt;br /&gt;
FIXME: MORE DETAILS NEEDED ON RIVENDELL JACK SETUP.&lt;br /&gt;
&lt;br /&gt;
possible way of working:&lt;br /&gt;
&lt;br /&gt;
When compiling Rivendell from source, include jack support by installing jack prior to ./configure.&lt;br /&gt;
Then - after installation - first fire up jack using qjackctl and then start the rd services.&lt;br /&gt;
You will find a jack &amp;quot;soundcard&amp;quot; in rdadmin.&lt;br /&gt;
&lt;br /&gt;
== Configure Jack ==&lt;br /&gt;
&lt;br /&gt;
You can setup Jack (jackd) in a number of ways. There are packages that will start jack at each bootup (FIXME: NEED DETAILS AND SETUP FOR PACKAGES) or you can use the package qjackctl also called Jack Control to setup and use jack. Jack Control provides a GUI interface for configuring Jack. (FIXME: NEED DETAILS AND SETUP FOR JACK CONTROL).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Install a stream source ==&lt;br /&gt;
&lt;br /&gt;
Install [http://www.oddsock.org/tools/edcast_jack/ edcast-jack] on your machine.&lt;br /&gt;
&lt;br /&gt;
Download and uncompress the source archive file. Then open a terminal and go to the '''edcast-jack-3.1.7''' (May be a different folder name if the version increases) directory and compile it. &lt;br /&gt;
&lt;br /&gt;
The normal '''./configure''' , '''make''' and then run as super user '''make install''' worked for me. However, since there is no list of the dependencies I had to run '''./configure''' a number of times watching for the missing files till I got them all installed. Then do '''make''' and after that as the super user '''make install''' to be up and running. Type '''edcast-jack''' in a console window and it will tell you how to invoke it on the command line.&lt;br /&gt;
&lt;br /&gt;
On Ubuntu Jaunty 9.04 the following packages had to be installed to have full edcast-jack functionality: (Mark additional required changes as well!)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
libfaac-dev&lt;br /&gt;
libfaac0&lt;br /&gt;
libjack-dev&lt;br /&gt;
libflac-dev&lt;br /&gt;
libogg-dev&lt;br /&gt;
libvorbis-dev&lt;br /&gt;
libmad0-dev&lt;br /&gt;
libmp3lame-dev&lt;br /&gt;
g++&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== edcast-jack Readme ===&lt;br /&gt;
&amp;lt;pre&amp;gt;edcast-jack Readme&lt;br /&gt;
-------------------&lt;br /&gt;
&lt;br /&gt;
This version of edcast allows you to hook into any jack output port&lt;br /&gt;
and broadcast the audio to an icecast or shoutcast server.&lt;br /&gt;
&lt;br /&gt;
This version of edcast is all command-line oriented, and comes with&lt;br /&gt;
example config files for each of the encoding types supported (Ogg Vorbis,&lt;br /&gt;
LAME, AAC).  You will most likely need to take one of the example configs&lt;br /&gt;
(in the conf dir) and modify it to suit your needs.&lt;br /&gt;
&lt;br /&gt;
Here is an example of how to use it with jack (http://jackit.sourceforge.net).&lt;br /&gt;
&lt;br /&gt;
Step 1: &lt;br /&gt;
 * startup jackd &lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
 * Feed a signal into jackd.  There are many applications you can use&lt;br /&gt;
   for this, if you like XMMS, try installing http://xmms-jack.sourceforge.net/&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
 * Start edcast specifying the appropriate output ports.  To get a list of&lt;br /&gt;
   the output ports, use jack_lsp.  If you use XMMS, you'll see something like :&lt;br /&gt;
&lt;br /&gt;
    % jack_lsp&lt;br /&gt;
    alsa_pcm:capture_1&lt;br /&gt;
    alsa_pcm:capture_2&lt;br /&gt;
    alsa_pcm:playback_1&lt;br /&gt;
    alsa_pcm:playback_2&lt;br /&gt;
    bio2jack_0_32083:out_0&lt;br /&gt;
    bio2jack_0_32083:out_1&lt;br /&gt;
&lt;br /&gt;
   In this case, the bio2jack_0_32083:out_0 and bio2jack_0_32083:out_1 are the &lt;br /&gt;
   output ports from XMMS.  So you'd start edcast like :&lt;br /&gt;
&lt;br /&gt;
    edcast -c edcast_OggVorbis.cfg bio2jack_0_32083:out_0 bio2jack_0_32083:out_1&lt;br /&gt;
&lt;br /&gt;
   Use edcast -h for a usage.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== edcast-jack Usage ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
usage: edcast -c configfile [ -n jack_client_name ] [ -p portmatch ] [ jackport1 [ jackport2 ... ]]&lt;br /&gt;
Where:&lt;br /&gt;
-c : config file that specified encoding settings&lt;br /&gt;
-n : name used to register with jackd&lt;br /&gt;
-p : if specified, edcast will connect to the first two output ports matching this name.&lt;br /&gt;
jackportX : explicitly specify a jack port name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== edcast-jack Sample Configuration File ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Destination server details (to where you are encoding).  Valid server types : Shoutcast, Icecast, Icecast2&lt;br /&gt;
ServerType=Icecast2&lt;br /&gt;
Server=192.168.1.100&lt;br /&gt;
Port=8000&lt;br /&gt;
ServerPassword=hackme&lt;br /&gt;
ServerMountpoint=/stream&lt;br /&gt;
# YP (Stream Directory) Settings&lt;br /&gt;
ServerPublic=1&lt;br /&gt;
ServerIRC=&lt;br /&gt;
ServerAIM=&lt;br /&gt;
ServerICQ=&lt;br /&gt;
ServerStreamURL=http://www.oddsock.org&lt;br /&gt;
ServerName=This is my server name&lt;br /&gt;
ServerDescription=This is my server description&lt;br /&gt;
ServerGenre=Rock&lt;br /&gt;
AutomaticReconnectSecs=10&lt;br /&gt;
AutoConnect=0&lt;br /&gt;
# Output codec selection (Valid selections : MP3, OggVorbis, Ogg FLAC, AAC, AAC Plus)&lt;br /&gt;
Encode=MP3&lt;br /&gt;
# General settings (non-codec related).  Note : NumberChannels = 1 for MONO, 2 for STEREO&lt;br /&gt;
BitrateNominal=48&lt;br /&gt;
BitrateMin=128&lt;br /&gt;
BitrateMax=128&lt;br /&gt;
NumberChannels=1&lt;br /&gt;
Samplerate=22050&lt;br /&gt;
# Ogg Vorbis specific settings.  Note: Valid settings for BitrateQuality flag are (Quality, Bitrate Management)&lt;br /&gt;
OggQuality=0&lt;br /&gt;
OggBitrateQualityFlag=Quality&lt;br /&gt;
# LAME specific settings.  Note: Setting the low/highpass freq to 0 will disable them.&lt;br /&gt;
LameCBRFlag=1&lt;br /&gt;
LameQuality=1&lt;br /&gt;
LameCopywrite=0&lt;br /&gt;
LameOriginal=0&lt;br /&gt;
LameStrictISO=0&lt;br /&gt;
LameDisableReservior=0&lt;br /&gt;
LameVBRMode=vbr_abr&lt;br /&gt;
LameLowpassfreq=0&lt;br /&gt;
LameHighpassfreq=0&lt;br /&gt;
LAMEPreset=0&lt;br /&gt;
# AAC (FAAC) specific settings.&lt;br /&gt;
AACQuality=100&lt;br /&gt;
AACCutoff=&lt;br /&gt;
# Log Level 1 = LOG_ERROR, 2 = LOG_ERROR+LOG_WARNING, 3 = LOG_ERROR+LOG_WARNING+LOG_DEBUG&lt;br /&gt;
LogLevel=3&lt;br /&gt;
# Log File&lt;br /&gt;
LogFile=streamTranscoder_1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Install a broadcast server ==&lt;br /&gt;
&lt;br /&gt;
You can select one of these broadcast servers. &lt;br /&gt;
It will receive the encoded stream from the source stream and provide it to the public listeners.&lt;br /&gt;
&lt;br /&gt;
You can choose ''classic'' broadcast servers (like Icecast2) or peer-to-peer broadcast solutions (like PeerCast or FreeCast).&lt;br /&gt;
&lt;br /&gt;
=== PeerCast ===&lt;br /&gt;
&lt;br /&gt;
Install PeerCast. Current version (as of May 18/2005) is PeerCast v0.1211&lt;br /&gt;
* [http://www.peercast.org/ PeerCast web site]&lt;br /&gt;
* [[Create A PeerCast User]]&lt;br /&gt;
* [http://www.peercast.org/guides/pc-linux.php PeerCast linux install guide.]]&lt;br /&gt;
** I suggest you copy the html directory from the peercast archive to /home/peercast.&lt;br /&gt;
** I suggest you copy the peercast executable from the peercast archive to /usr/bin.&lt;br /&gt;
** See below for configuration instructions/suggestions.&lt;br /&gt;
&lt;br /&gt;
==== Configure ====&lt;br /&gt;
&lt;br /&gt;
=== FreeCast ===&lt;br /&gt;
&lt;br /&gt;
Install the FreeCast debian package available on the [http://debian.tryphon.org Tryphon Debian Archiver].&lt;br /&gt;
&lt;br /&gt;
* [http://www.freecast.org FreeCast website]&lt;br /&gt;
&lt;br /&gt;
=== IceCast ===&lt;br /&gt;
&lt;br /&gt;
Install the IceCast streaming server using the instructions and source code found at [http://www.icecast.org IceCast].&lt;br /&gt;
&lt;br /&gt;
=== Streamp2p ===&lt;br /&gt;
&lt;br /&gt;
[http://www.streamerp2p.com Streamerp2p] enables anyone to webcast without expensive servers. Works from your home pc, even on dial-up for some streams. No max limit to listeners like shoutcast. No 'server full' messages, no stream hosting costs, completely free to use for both personal and commercial users. Tiny install (430k), ActiveX version for web pages, and soon a Java version for web and mobile devices.&lt;br /&gt;
&lt;br /&gt;
Streamp2p is a  Windows but runs without problem under wine on Ubuntu Linux.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Icecast2/Shoutcast Meta Data from Rivendell==&lt;br /&gt;
&lt;br /&gt;
=== Streamdata === &lt;br /&gt;
&lt;br /&gt;
Streamdata for Shoutcast is available from [http://emitworks.com/en/index.php?id=rivendell-radio-automation EMITworks]. You can download it [http://emitworks.com/streamdata.tar.gz here].&lt;br /&gt;
&lt;br /&gt;
Streamdata for Icecast2 is available for download [http://ubuntuone.com/p/E7F// here] . &lt;br /&gt;
&lt;br /&gt;
Streamdata is a set of scripts to update Shoutcast and Icecast2 using Rivendell Now&amp;amp;Next data.&lt;br /&gt;
&lt;br /&gt;
*Streamdata was written by Michael Papsdorf  &lt;br /&gt;
&lt;br /&gt;
*Modified for usage in Debian/Ubuntu and Icecast2 by Daniel Roviriego&lt;br /&gt;
&lt;br /&gt;
 HowTo stream Rivendell Now &amp;amp; Next data to your Shoutcast server: &lt;br /&gt;
&lt;br /&gt;
* Preparation: make sure you have netcat, lynx and awk installed on your system under openSUSE, simply type &amp;quot;zypper install netcat&amp;quot; in a console. Same with Lynx and awk&lt;br /&gt;
&lt;br /&gt;
* Extract the directory somewhere you will find it ;)&lt;br /&gt;
&lt;br /&gt;
* In rdadmin, go to manage hosts --&amp;gt; your host --&amp;gt; rdairplay --&amp;gt; configure Now &amp;amp; Next&lt;br /&gt;
** '''IP-Adress:''' this is 127.0.0.1 since you are running the script on the same machine&lt;br /&gt;
** '''UDP Port:''' anything that is unused, we use 6666&lt;br /&gt;
** '''UDP String:''' This is the data you actually send.  To output the now playing artist and title enter:&lt;br /&gt;
 %a %t#&lt;br /&gt;
'''Note:''' You must include a '''#''' at the end of the UDP string so that the updater can tell where one title starts and the other ends.&lt;br /&gt;
&lt;br /&gt;
The following placeholder macros can be used in the UDP String, which will be replaced appropriately when a packet is sent:&lt;br /&gt;
 %n - The currently-playing CART NUMBER&lt;br /&gt;
 %g - The currently-playing GROUP NAME&lt;br /&gt;
 %t - The currently-playing TITLE field&lt;br /&gt;
 %a - The currently-playing ARTIST field&lt;br /&gt;
 %l - The currently-playing ALBUM field&lt;br /&gt;
 %y - The currently-playing YEAR field&lt;br /&gt;
 %b - The currently-playing LABEL field&lt;br /&gt;
 %c - The currently-playing CLIENT field&lt;br /&gt;
 %e - The currently-playing AGENCY field&lt;br /&gt;
 %u - The currently-playing USER DEFINED field&lt;br /&gt;
 %h - The length of the currently playing cut, in mS.&lt;br /&gt;
 %r - A &amp;quot;Unix&amp;quot; style newline (naked ASCII 10)&lt;br /&gt;
 %R - An &amp;quot;MS-DOS&amp;quot; style newsline (ASCII 13/10)&lt;br /&gt;
 %% - A literal '%'.&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' Additionally, with the exception of the '%r', '%R' and '%%' placeholders, '''the corresponding field for the &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;next-to-play event&amp;lt;/span&amp;gt; can be specified by simply uppercasing the above placeholders'''.  Any other characters will be sent unchanged.&lt;br /&gt;
&lt;br /&gt;
Remember to put a '''#''' at the end of the UDP String, so the updater can keep the different titles apart.&lt;br /&gt;
&lt;br /&gt;
* '''RML:''' Additional RML to execute. To put the update that was sent into the message field in rdairplay, this should read LB updated %a %t! (the ! is mandatory)&lt;br /&gt;
&lt;br /&gt;
* cd into /streamdata&lt;br /&gt;
&lt;br /&gt;
* Edit the configuration in song.sh and streamupdate.sh&lt;br /&gt;
** In song.sh port set in rdadmin and songdat the path where you extracted the directory to including the directory and song.dat. '''Example:''' you put it into /home/rd, than it should read &amp;quot;/home/rd/streamdata/song.dat&amp;quot;&lt;br /&gt;
** In streamupdate.sh: edit the domain name or ip of your shoutcast server, the port it is on, the adminpassword (in case you didn't set one, this is the password you use to stream), a message for when it is started and, once again, the path to song.dat&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;NOTE: The issue has been fixed. If you downloaded streamdata before 27th of September 2010, the following still applies: In the current release streamupdate.sh has a hardcoded value in place of a variable. You can fix this by changing&lt;br /&gt;
&amp;lt;pre&amp;gt;($(nohup lynx -source &amp;quot;http://dd-radio.com:8000/admin.cgi?pass=$pass&amp;amp;mode=updinfo&amp;amp;song=$title&amp;quot; &amp;gt; /dev/null &amp;amp;))&amp;amp;&amp;lt;/pre&amp;gt;&lt;br /&gt;
to&lt;br /&gt;
&amp;lt;pre&amp;gt;($(nohup lynx -source &amp;quot;http://$server:$port/admin.cgi?pass=$pass&amp;amp;mode=updinfo&amp;amp;song=$title&amp;quot; &amp;gt; /dev/null &amp;amp;))&amp;amp;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Restart rdairplay so that the changes in now&amp;amp;next take place&lt;br /&gt;
&lt;br /&gt;
* execute startupdate.sh by typing ./startupdate.sh&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' The meta data for all songs are written to song.dat. ALL of them. Make sure that song.dat is not getting too big. To reset the file, simply &amp;quot;rm song.dat&amp;quot; and &amp;quot;touch song.dat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 How to stream Rivendell Now &amp;amp; Next data to your Icecast2 server: &lt;br /&gt;
&lt;br /&gt;
The same instructions as above (for the Shoutcast Server), apart from:&lt;br /&gt;
&lt;br /&gt;
* There is no need for lynx and awk (wget and tail instead, available natively in Debian and Ubuntu)&lt;br /&gt;
&lt;br /&gt;
*'''UDP String:''' - The same as above, but for getting the titles and Artists to different lines into the &amp;quot;song.dat&amp;quot;, Use a wildcard for a newline  '''%r'''. That would be:  %a - %t %r&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;'''NOTE:''' If you are using Ubuntu 10.04, due to changes in the netcat of this version, you'll have to change the options passed to &amp;quot;nc&amp;quot; in the &amp;quot;song.sh&amp;quot; file. Change &lt;br /&gt;
 netcat -l -u -p $port &amp;gt; $songdat &amp;amp;&lt;br /&gt;
to&lt;br /&gt;
 netcat -k -u -l $port &amp;gt; $songdat &amp;amp;&lt;br /&gt;
&amp;lt;/span&amp;gt;&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== icecast.py ===&lt;br /&gt;
&lt;br /&gt;
Icecast Stream python meta-data Updater Courtesy WZEW-FM MOBILE AL and Nik Martin - Server Corps&lt;br /&gt;
&lt;br /&gt;
[http://92zew.net/icecast.py icecast.py]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Updating metadata IceCast2/Shoutcast with Rivendell - RDSTREAMDATA===&lt;br /&gt;
&amp;lt;font size=1&amp;gt;Portuguese to English translation&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Following these steps can we use the information in &amp;quot;Now &amp;amp; Next&amp;quot; to update the Rivendell icecast2 servers and / or Shoutcast, thereby making the names of the artist and song are running are displayed in the player receiving the stream. &lt;br /&gt;
&lt;br /&gt;
The Rivendell sends this information via UDP messages, what we do is to capture these messages (using netcat), treat them and apply them to the desired shape Shoutcast/Icecast2 streaming services. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Requirements ==== &lt;br /&gt;
&lt;br /&gt;
The procedures shown here were tested at 10.4 32 bit Ubuntu distribution. &lt;br /&gt;
Make sure your distribution has the following packages installed: &lt;br /&gt;
&lt;br /&gt;
* Wget (Used to upgrade servers icecast2) &lt;br /&gt;
* Lynx (Used to upgrade servers Shoutcast) &lt;br /&gt;
* Nc (netcat, used to capture messages sent by RDAirPlay) &lt;br /&gt;
&lt;br /&gt;
The commands used in the scripts provided below will work with NC (netcat) openbsd version which is the default for Ubuntu 10.04. &lt;br /&gt;
If your distribution uses the traditional NC default, see if there is a binary version of openbsd, as Ubuntu, for example, has both versions. &lt;br /&gt;
In Ubuntu you can check the versions available with the command: &lt;br /&gt;
&lt;br /&gt;
 # Update-alternatives - list nc &lt;br /&gt;
&lt;br /&gt;
It is not necessary that you change the default version of your system, just set in the following steps to use the version RDStreamData openbsd. &lt;br /&gt;
&lt;br /&gt;
==== Installation ==== &lt;br /&gt;
&lt;br /&gt;
* Download the package rdstreamdata.tar.gz &lt;br /&gt;
[Http://www.fdts.com.br/rdstreamdata.tar.gz rdstreamdata.tar.gz] &lt;br /&gt;
&lt;br /&gt;
* Unzip the package and enter the directory created &lt;br /&gt;
 # Tar-zxvf rdstreamdata.tar.gz &lt;br /&gt;
 # Cd rdstreamdata &lt;br /&gt;
* As root, run the installation script and read the instructions on screen. &lt;br /&gt;
 #. / Install.sh &lt;br /&gt;
 Will this script install RDstreamdata, a set of scripts That Will listen to an UDP port is Rivendell Now &amp;amp; Next information and update &lt;br /&gt;
 this information to an icecast2 and / or ShoutCast Server. &lt;br /&gt;
 Do you want to do it? y / n.y &lt;br /&gt;
* Enter &amp;quot;y&amp;quot; and hit Enter &lt;br /&gt;
 Copying files &lt;br /&gt;
 Now You Have to edit / etc / rdstreamdata.conf 'to suit your icecast2, Rivendell and ShoutCast Configurations. &lt;br /&gt;
  &lt;br /&gt;
 Attemper That You Must Set the username and group Which must run under the process before you start the daemon for the first time. &lt;br /&gt;
 Edit / etc / default / rdstreamdata 'and set' Enable 'to' true ', so You Can start it though the init script &lt;br /&gt;
  &lt;br /&gt;
 Also you need to Set the script / etc / init.d / rdstreamdata 'to Be automaticaly run in the desired runlevels, &lt;br /&gt;
 systems in Ubuntu You may use &amp;quot;sysv-rc-conf 'command for this. &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 You Can contact me at contato@fdts.com.br &lt;br /&gt;
  &lt;br /&gt;
 Thanks for using &lt;br /&gt;
&lt;br /&gt;
====General Settings ====  &lt;br /&gt;
&lt;br /&gt;
* Now we must set up some items, as described by the installer, start with the'''/ etc / defaults / rdstreamdata''', where we must fulfill what the user under which the processes are executed. You can use either the user that you log into Linux as the user running the other services of Rivendell, I use the username'''rduser''' and''group 'rivendell'''. '''NOT recommend that you use root or another user with higher privileges'''. &lt;br /&gt;
* Even in'''/ etc / defaults / rdstreamdata''' set the value of'''ENABLE''' to'''true''', otherwise the daemon will not start. &lt;br /&gt;
* In the file'''/ etc / rdstreamdata.conf''' we have all other settings, we should look to the following: &lt;br /&gt;
** In the general settings: &lt;br /&gt;
***'''Netcat_bin = / bin / nc''' - At this point we can define a binary alternative to netcat, remember that we emphasize the importance of early use Netcat version of OpenBSD. As with Ubuntu 4.10 this is already the default, I'm using the default path / bin / nc. &lt;br /&gt;
***'''Riv_udp_port = &amp;quot;9876&amp;quot;''' - Here we define which port our script will be listening for messages from Rivendell, you should use a port that is not being used by any service above 1024 and ever since we are not running as root. The port is also used here as defined in the configuration of Rivendell. &lt;br /&gt;
***'''Message = &amp;quot;Name of your radio&amp;quot;''' - The message specified here is used when the RDAirPlay is closed or when the event is in the air that is not configured to send names (jingles, commercials, called , etc.). &lt;br /&gt;
***'''Min_title_size = 5''' - Minimum size of characters that the event must have for the the standard message set in the previous section is replaced by the name of the event. This is used to filter unwanted events of null characters. &lt;br /&gt;
&lt;br /&gt;
==== Settings Icecast2====  &lt;br /&gt;
* In the file'''/ etc / rdstreamdata.conf''' &lt;br /&gt;
** These settings define whether or not you use a server Icecast2 and what data to access it. &lt;br /&gt;
***'''Ic_enable = true''' - If the value is different from'''true''' the server Icecast2 not be updated. &lt;br /&gt;
***'''Ic_server = &amp;quot;localhost&amp;quot;''' - Hostname or IP of server Icecast2, change as needed. &lt;br /&gt;
***'''Ic_admin = &amp;quot;admin&amp;quot;''' - User Icecast2 server administrator, change as needed. &lt;br /&gt;
***'''Ic_pass = &amp;quot;password&amp;quot;''' - User password server administrator Icecast2, change as needed. &lt;br /&gt;
***'''Ic_port = &amp;quot;8888&amp;quot;''' - Server port Icecast2, change as needed. &lt;br /&gt;
***'''Ic_mount = &amp;quot;/ radio&amp;quot;''' - Mount point Icecast2 server, change as needed. &lt;br /&gt;
&lt;br /&gt;
==== Settings Shoucast====  &lt;br /&gt;
* In the file'''/ etc / rdstreamdata.conf''' &lt;br /&gt;
** These settings define whether or not you use a Shoutcast server and what data to access it. &lt;br /&gt;
***'''Sc_enable = true''' - If the value is different from'''true''' the Shoutcast server will not be updated. &lt;br /&gt;
***'''Sc_server = &amp;quot;localhost&amp;quot;''' - Hostname or IP of the Shoutcast server, change as needed. &lt;br /&gt;
***'''Sc_admin = &amp;quot;admin&amp;quot;''' - User Shoutcast server administrator, change as needed. &lt;br /&gt;
***'''Sc_pass = &amp;quot;password&amp;quot;''' - Password for user administrator Shoutcast server, change as needed. &lt;br /&gt;
***'''Sc_port = &amp;quot;8080&amp;quot;''' - Shoutcast server port, change as needed. &lt;br /&gt;
&lt;br /&gt;
==== Configuring Rivendell ==== &lt;br /&gt;
&lt;br /&gt;
This is an essential step for the update to run, since the Rivendell not send the desired information is useless effort. &lt;br /&gt;
To enable the transmission of information follow the following steps: &lt;br /&gt;
* Enter rdadmin. &lt;br /&gt;
[[File: rdstreamdata_01.jpeg]] &lt;br /&gt;
* Click on'''Manage Hosts'''. &lt;br /&gt;
[[File: rdstreamdata_02.jpeg]] &lt;br /&gt;
* Select the Host which runs RDAirPlay and click'''Edit'''. &lt;br /&gt;
[[File: rdstreamdata_03.jpeg]] &lt;br /&gt;
* Click'''RDAirPlay''' &lt;br /&gt;
[[File: rdstreamdata_04.jpeg]] &lt;br /&gt;
* On the screen that opens click'''Now &amp;amp; Next Set Parameters'''. &lt;br /&gt;
[[File: rdstreamdata_05.jpeg]] &lt;br /&gt;
* Fill in the fields as indicated: &lt;br /&gt;
**'''IP Address''' 127.0.0.1 &lt;br /&gt;
**'''UDP Port:''' 9876 - The same setup informed'''/ etc / rdstreamdata.conf'''. &lt;br /&gt;
**'''UDP String:'''% a -% t% r - Thus we have a message with the names of the artist and the current song, plus a line break. &lt;br /&gt;
[[File: rdstreamdata_06.jpeg]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this point the RDAirPlay is ready to send UDP messages to update our Streaming, however we must be sure that groups are configured to transmit the event information. &lt;br /&gt;
&lt;br /&gt;
* Free rdadmin again. &lt;br /&gt;
[[File: rdstreamdata_01.jpeg]] &lt;br /&gt;
* Click'''Groups'''. &lt;br /&gt;
[[File: rdstreamdata_07.jpeg]] &lt;br /&gt;
* Select a group that wants to transmit information and click'''Edit'''. &lt;br /&gt;
[[File: rdstreamdata_08.jpeg]] &lt;br /&gt;
* Check the'''Transmit Now &amp;amp; Next day''' and click OK. &lt;br /&gt;
[[File: rdstreamdata_09.jpeg]] &lt;br /&gt;
* Repeat the last steps for all desired groups. &lt;br /&gt;
&lt;br /&gt;
* Close and reopen the RDAirPlay. Now the Rivendell should already be updating your streaming server! &lt;br /&gt;
&lt;br /&gt;
Happy Rivendelling! &lt;br /&gt;
&lt;br /&gt;
You can follow any updates to the log file'''/ var / log / rdstreamdata.log'''&lt;br /&gt;
&lt;br /&gt;
== Further Rivendell Streaming Info ==&lt;br /&gt;
You can also see the page [[Stream under Debian]]  for information about streaming under Rivendell but it references darkice and ices-kh(ices2). The first if compiled does not work and the latter is hard to find if you even can.&lt;br /&gt;
&lt;br /&gt;
Also see [[Rivendell_Loadable_Module_(RLM)_SDK_-_For_Sending_Now_%26_Next_Data_to_external_systems|Rivendell Loadable Modules]] for more info on meta data transfer to external systems&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=Streaming_from_Rivendell&amp;diff=673</id>
		<title>Streaming from Rivendell</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=Streaming_from_Rivendell&amp;diff=673"/>
				<updated>2023-07-02T19:21:51Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: /* Example: Updating the Currently playing information on an IceCast Server */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FIXME: THIS PAGE IS NOT FINISHED! IF YOU GO THROUGH THIS SETUP PLEASE FINISH THIS PAGE!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Icecast2 Meta Data from Rivendell ==&lt;br /&gt;
&lt;br /&gt;
=== Configuring Rivendell to send Now&amp;amp;Next/PAD Data ===&lt;br /&gt;
&lt;br /&gt;
Beginning with v3.0.1, Rivendell uses a system called 'PyPAD' to generate program associated data (&amp;quot;PAD&amp;quot;, sometimes also referred to in the Rivendell docs as &amp;quot;Now &amp;amp; Next&amp;quot;) updates in real time. Each time a log event starts or stops in RDAirplay, PyPAD cn be configured to call one or more Python scripts, each of which are handed the parameters of the event, which can then be processed and/or forwarded by the code in the script. An overview of the system can be found in the [https://opsguide.rivendellaudio.org/html/chapter.pad.html Program Associated Data chapter] in the [https://opsguide.rivendellaudio.org/html/ Rivendell Operations Guide].&lt;br /&gt;
&lt;br /&gt;
While PyPAD is explicitly designed to make it relatively easy for even novice Python coders to create their own custom scripts, Rivendell also ships with a set of pre-installed scripts that can deal with many common update scenarios, including sending updates for:&lt;br /&gt;
&lt;br /&gt;
* RDS/RDBS displays&lt;br /&gt;
* Online streaming encoders/players&lt;br /&gt;
* Station web sites&lt;br /&gt;
* Associated data displays (such as the Text Display Widget in [https://www.paravelsystems.com/walltime WallTime]&lt;br /&gt;
&lt;br /&gt;
==== Updating the Currently playing information on an IceCast Server ====&lt;br /&gt;
&lt;br /&gt;
Rivendell ships with a PyPAD script called '''pypad_icecast2.py''' that can be used to update the 'Currently playing' display in IceCast v2.x setups. To configure it, proceed as follows:&lt;br /&gt;
&lt;br /&gt;
# Start RDAdmin and go to Manage Hosts =&amp;gt; &amp;lt;hostname&amp;gt; =&amp;gt; PyPAD Instances.&lt;br /&gt;
# Touch the 'Add' button to open a list of available PyPAD scripts.&lt;br /&gt;
# Choose '''pypad_icecast2.py''' from the list and then touch 'Open'. An 'Edit PyPAD Instance' dialog will open.&lt;br /&gt;
# Find the 'Password=', 'Hostname=', 'Tcpport=' and 'Mountpoint=' entries in the configuration and change them to the values appropriate for your Icecast server. (The configuration contains other entries that can also be used to customize the behavior of the updating process; see the accompanying comments in the configuration for details).&lt;br /&gt;
# Touch the 'OK' button. &lt;br /&gt;
# A new line will appear in the 'PyPAD Instances' dialog. The status light at the start of the should turn green after a few seconds. If it remains red, select the entry on the list and then touch the 'Error Log' button to see any error messages or warnings generated by the script. Close the dialog, then touch the 'Edit' button and make any needed changes to the configuration. Repeat the process until a green status light is obtained.&lt;br /&gt;
&lt;br /&gt;
N.B. - Due to the way that the IceCast server is designed, PAD update messages must be seen by the server to originate from the same IP address as that being used to originate the associated audio stream. Provided that the audio encoder and Rivendell are accessing Icecast by means of the same NAT'ed firewall, this requirement will generally be met. If not, then PyPAD can often be configured to send PAD via the audio encoder.&lt;br /&gt;
&lt;br /&gt;
=== Set up Groups for Now &amp;amp; Next data ===&lt;br /&gt;
&lt;br /&gt;
At this point the RDAirPlay is ready to send UDP messages to update our Streaming, however we must be sure that groups are configured to transmit the event information. &lt;br /&gt;
&lt;br /&gt;
* Free rdadmin again. &lt;br /&gt;
[[File: rdstreamdata_01.jpeg]] &lt;br /&gt;
* Click'''Groups'''. &lt;br /&gt;
[[File: rdstreamdata_07.jpeg]] &lt;br /&gt;
* Select a group that wants to transmit information and click'''Edit'''. &lt;br /&gt;
[[File: rdstreamdata_08.jpeg]] &lt;br /&gt;
* Check the'''Transmit Now &amp;amp; Next day''' and click OK. &lt;br /&gt;
[[File: rdstreamdata_09.jpeg]] &lt;br /&gt;
* Repeat the last steps for all desired groups. &lt;br /&gt;
&lt;br /&gt;
* Close and reopen the RDAirPlay. Now the Rivendell should already be updating your streaming server! &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Probably outdated Information ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;'''THIS IS PROBABLY OUTDATED'''&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rivendell can be setup to use to jack for audio output. Jack handles connections to ALSA. Hook up the Rivendell outputs to the jack inputs. Jack encodes the stream and sends to your stream source which then feeds your stream server.&lt;br /&gt;
&lt;br /&gt;
== Setup Rivendell to Use Jack ==&lt;br /&gt;
&lt;br /&gt;
Setup Rivendell to use jack in the Rivendell configuration file /etc/rd.conf&lt;br /&gt;
&lt;br /&gt;
FIXME: MORE DETAILS NEEDED ON RIVENDELL JACK SETUP.&lt;br /&gt;
&lt;br /&gt;
possible way of working:&lt;br /&gt;
&lt;br /&gt;
When compiling Rivendell from source, include jack support by installing jack prior to ./configure.&lt;br /&gt;
Then - after installation - first fire up jack using qjackctl and then start the rd services.&lt;br /&gt;
You will find a jack &amp;quot;soundcard&amp;quot; in rdadmin.&lt;br /&gt;
&lt;br /&gt;
== Configure Jack ==&lt;br /&gt;
&lt;br /&gt;
You can setup Jack (jackd) in a number of ways. There are packages that will start jack at each bootup (FIXME: NEED DETAILS AND SETUP FOR PACKAGES) or you can use the package qjackctl also called Jack Control to setup and use jack. Jack Control provides a GUI interface for configuring Jack. (FIXME: NEED DETAILS AND SETUP FOR JACK CONTROL).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Install a stream source ==&lt;br /&gt;
&lt;br /&gt;
Install [http://www.oddsock.org/tools/edcast_jack/ edcast-jack] on your machine.&lt;br /&gt;
&lt;br /&gt;
Download and uncompress the source archive file. Then open a terminal and go to the '''edcast-jack-3.1.7''' (May be a different folder name if the version increases) directory and compile it. &lt;br /&gt;
&lt;br /&gt;
The normal '''./configure''' , '''make''' and then run as super user '''make install''' worked for me. However, since there is no list of the dependencies I had to run '''./configure''' a number of times watching for the missing files till I got them all installed. Then do '''make''' and after that as the super user '''make install''' to be up and running. Type '''edcast-jack''' in a console window and it will tell you how to invoke it on the command line.&lt;br /&gt;
&lt;br /&gt;
On Ubuntu Jaunty 9.04 the following packages had to be installed to have full edcast-jack functionality: (Mark additional required changes as well!)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
libfaac-dev&lt;br /&gt;
libfaac0&lt;br /&gt;
libjack-dev&lt;br /&gt;
libflac-dev&lt;br /&gt;
libogg-dev&lt;br /&gt;
libvorbis-dev&lt;br /&gt;
libmad0-dev&lt;br /&gt;
libmp3lame-dev&lt;br /&gt;
g++&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== edcast-jack Readme ===&lt;br /&gt;
&amp;lt;pre&amp;gt;edcast-jack Readme&lt;br /&gt;
-------------------&lt;br /&gt;
&lt;br /&gt;
This version of edcast allows you to hook into any jack output port&lt;br /&gt;
and broadcast the audio to an icecast or shoutcast server.&lt;br /&gt;
&lt;br /&gt;
This version of edcast is all command-line oriented, and comes with&lt;br /&gt;
example config files for each of the encoding types supported (Ogg Vorbis,&lt;br /&gt;
LAME, AAC).  You will most likely need to take one of the example configs&lt;br /&gt;
(in the conf dir) and modify it to suit your needs.&lt;br /&gt;
&lt;br /&gt;
Here is an example of how to use it with jack (http://jackit.sourceforge.net).&lt;br /&gt;
&lt;br /&gt;
Step 1: &lt;br /&gt;
 * startup jackd &lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
 * Feed a signal into jackd.  There are many applications you can use&lt;br /&gt;
   for this, if you like XMMS, try installing http://xmms-jack.sourceforge.net/&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
 * Start edcast specifying the appropriate output ports.  To get a list of&lt;br /&gt;
   the output ports, use jack_lsp.  If you use XMMS, you'll see something like :&lt;br /&gt;
&lt;br /&gt;
    % jack_lsp&lt;br /&gt;
    alsa_pcm:capture_1&lt;br /&gt;
    alsa_pcm:capture_2&lt;br /&gt;
    alsa_pcm:playback_1&lt;br /&gt;
    alsa_pcm:playback_2&lt;br /&gt;
    bio2jack_0_32083:out_0&lt;br /&gt;
    bio2jack_0_32083:out_1&lt;br /&gt;
&lt;br /&gt;
   In this case, the bio2jack_0_32083:out_0 and bio2jack_0_32083:out_1 are the &lt;br /&gt;
   output ports from XMMS.  So you'd start edcast like :&lt;br /&gt;
&lt;br /&gt;
    edcast -c edcast_OggVorbis.cfg bio2jack_0_32083:out_0 bio2jack_0_32083:out_1&lt;br /&gt;
&lt;br /&gt;
   Use edcast -h for a usage.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== edcast-jack Usage ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
usage: edcast -c configfile [ -n jack_client_name ] [ -p portmatch ] [ jackport1 [ jackport2 ... ]]&lt;br /&gt;
Where:&lt;br /&gt;
-c : config file that specified encoding settings&lt;br /&gt;
-n : name used to register with jackd&lt;br /&gt;
-p : if specified, edcast will connect to the first two output ports matching this name.&lt;br /&gt;
jackportX : explicitly specify a jack port name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== edcast-jack Sample Configuration File ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Destination server details (to where you are encoding).  Valid server types : Shoutcast, Icecast, Icecast2&lt;br /&gt;
ServerType=Icecast2&lt;br /&gt;
Server=192.168.1.100&lt;br /&gt;
Port=8000&lt;br /&gt;
ServerPassword=hackme&lt;br /&gt;
ServerMountpoint=/stream&lt;br /&gt;
# YP (Stream Directory) Settings&lt;br /&gt;
ServerPublic=1&lt;br /&gt;
ServerIRC=&lt;br /&gt;
ServerAIM=&lt;br /&gt;
ServerICQ=&lt;br /&gt;
ServerStreamURL=http://www.oddsock.org&lt;br /&gt;
ServerName=This is my server name&lt;br /&gt;
ServerDescription=This is my server description&lt;br /&gt;
ServerGenre=Rock&lt;br /&gt;
AutomaticReconnectSecs=10&lt;br /&gt;
AutoConnect=0&lt;br /&gt;
# Output codec selection (Valid selections : MP3, OggVorbis, Ogg FLAC, AAC, AAC Plus)&lt;br /&gt;
Encode=MP3&lt;br /&gt;
# General settings (non-codec related).  Note : NumberChannels = 1 for MONO, 2 for STEREO&lt;br /&gt;
BitrateNominal=48&lt;br /&gt;
BitrateMin=128&lt;br /&gt;
BitrateMax=128&lt;br /&gt;
NumberChannels=1&lt;br /&gt;
Samplerate=22050&lt;br /&gt;
# Ogg Vorbis specific settings.  Note: Valid settings for BitrateQuality flag are (Quality, Bitrate Management)&lt;br /&gt;
OggQuality=0&lt;br /&gt;
OggBitrateQualityFlag=Quality&lt;br /&gt;
# LAME specific settings.  Note: Setting the low/highpass freq to 0 will disable them.&lt;br /&gt;
LameCBRFlag=1&lt;br /&gt;
LameQuality=1&lt;br /&gt;
LameCopywrite=0&lt;br /&gt;
LameOriginal=0&lt;br /&gt;
LameStrictISO=0&lt;br /&gt;
LameDisableReservior=0&lt;br /&gt;
LameVBRMode=vbr_abr&lt;br /&gt;
LameLowpassfreq=0&lt;br /&gt;
LameHighpassfreq=0&lt;br /&gt;
LAMEPreset=0&lt;br /&gt;
# AAC (FAAC) specific settings.&lt;br /&gt;
AACQuality=100&lt;br /&gt;
AACCutoff=&lt;br /&gt;
# Log Level 1 = LOG_ERROR, 2 = LOG_ERROR+LOG_WARNING, 3 = LOG_ERROR+LOG_WARNING+LOG_DEBUG&lt;br /&gt;
LogLevel=3&lt;br /&gt;
# Log File&lt;br /&gt;
LogFile=streamTranscoder_1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Install a broadcast server ==&lt;br /&gt;
&lt;br /&gt;
You can select one of these broadcast servers. &lt;br /&gt;
It will receive the encoded stream from the source stream and provide it to the public listeners.&lt;br /&gt;
&lt;br /&gt;
You can choose ''classic'' broadcast servers (like Icecast2) or peer-to-peer broadcast solutions (like PeerCast or FreeCast).&lt;br /&gt;
&lt;br /&gt;
=== PeerCast ===&lt;br /&gt;
&lt;br /&gt;
Install PeerCast. Current version (as of May 18/2005) is PeerCast v0.1211&lt;br /&gt;
* [http://www.peercast.org/ PeerCast web site]&lt;br /&gt;
* [[Create A PeerCast User]]&lt;br /&gt;
* [http://www.peercast.org/guides/pc-linux.php PeerCast linux install guide.]]&lt;br /&gt;
** I suggest you copy the html directory from the peercast archive to /home/peercast.&lt;br /&gt;
** I suggest you copy the peercast executable from the peercast archive to /usr/bin.&lt;br /&gt;
** See below for configuration instructions/suggestions.&lt;br /&gt;
&lt;br /&gt;
==== Configure ====&lt;br /&gt;
&lt;br /&gt;
=== FreeCast ===&lt;br /&gt;
&lt;br /&gt;
Install the FreeCast debian package available on the [http://debian.tryphon.org Tryphon Debian Archiver].&lt;br /&gt;
&lt;br /&gt;
* [http://www.freecast.org FreeCast website]&lt;br /&gt;
&lt;br /&gt;
=== IceCast ===&lt;br /&gt;
&lt;br /&gt;
Install the IceCast streaming server using the instructions and source code found at [http://www.icecast.org IceCast].&lt;br /&gt;
&lt;br /&gt;
=== Streamp2p ===&lt;br /&gt;
&lt;br /&gt;
[http://www.streamerp2p.com Streamerp2p] enables anyone to webcast without expensive servers. Works from your home pc, even on dial-up for some streams. No max limit to listeners like shoutcast. No 'server full' messages, no stream hosting costs, completely free to use for both personal and commercial users. Tiny install (430k), ActiveX version for web pages, and soon a Java version for web and mobile devices.&lt;br /&gt;
&lt;br /&gt;
Streamp2p is a  Windows but runs without problem under wine on Ubuntu Linux.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Icecast2/Shoutcast Meta Data from Rivendell==&lt;br /&gt;
&lt;br /&gt;
=== Streamdata === &lt;br /&gt;
&lt;br /&gt;
Streamdata for Shoutcast is available from [http://emitworks.com/en/index.php?id=rivendell-radio-automation EMITworks]. You can download it [http://emitworks.com/streamdata.tar.gz here].&lt;br /&gt;
&lt;br /&gt;
Streamdata for Icecast2 is available for download [http://ubuntuone.com/p/E7F// here] . &lt;br /&gt;
&lt;br /&gt;
Streamdata is a set of scripts to update Shoutcast and Icecast2 using Rivendell Now&amp;amp;Next data.&lt;br /&gt;
&lt;br /&gt;
*Streamdata was written by Michael Papsdorf  &lt;br /&gt;
&lt;br /&gt;
*Modified for usage in Debian/Ubuntu and Icecast2 by Daniel Roviriego&lt;br /&gt;
&lt;br /&gt;
 HowTo stream Rivendell Now &amp;amp; Next data to your Shoutcast server: &lt;br /&gt;
&lt;br /&gt;
* Preparation: make sure you have netcat, lynx and awk installed on your system under openSUSE, simply type &amp;quot;zypper install netcat&amp;quot; in a console. Same with Lynx and awk&lt;br /&gt;
&lt;br /&gt;
* Extract the directory somewhere you will find it ;)&lt;br /&gt;
&lt;br /&gt;
* In rdadmin, go to manage hosts --&amp;gt; your host --&amp;gt; rdairplay --&amp;gt; configure Now &amp;amp; Next&lt;br /&gt;
** '''IP-Adress:''' this is 127.0.0.1 since you are running the script on the same machine&lt;br /&gt;
** '''UDP Port:''' anything that is unused, we use 6666&lt;br /&gt;
** '''UDP String:''' This is the data you actually send.  To output the now playing artist and title enter:&lt;br /&gt;
 %a %t#&lt;br /&gt;
'''Note:''' You must include a '''#''' at the end of the UDP string so that the updater can tell where one title starts and the other ends.&lt;br /&gt;
&lt;br /&gt;
The following placeholder macros can be used in the UDP String, which will be replaced appropriately when a packet is sent:&lt;br /&gt;
 %n - The currently-playing CART NUMBER&lt;br /&gt;
 %g - The currently-playing GROUP NAME&lt;br /&gt;
 %t - The currently-playing TITLE field&lt;br /&gt;
 %a - The currently-playing ARTIST field&lt;br /&gt;
 %l - The currently-playing ALBUM field&lt;br /&gt;
 %y - The currently-playing YEAR field&lt;br /&gt;
 %b - The currently-playing LABEL field&lt;br /&gt;
 %c - The currently-playing CLIENT field&lt;br /&gt;
 %e - The currently-playing AGENCY field&lt;br /&gt;
 %u - The currently-playing USER DEFINED field&lt;br /&gt;
 %h - The length of the currently playing cut, in mS.&lt;br /&gt;
 %r - A &amp;quot;Unix&amp;quot; style newline (naked ASCII 10)&lt;br /&gt;
 %R - An &amp;quot;MS-DOS&amp;quot; style newsline (ASCII 13/10)&lt;br /&gt;
 %% - A literal '%'.&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' Additionally, with the exception of the '%r', '%R' and '%%' placeholders, '''the corresponding field for the &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;next-to-play event&amp;lt;/span&amp;gt; can be specified by simply uppercasing the above placeholders'''.  Any other characters will be sent unchanged.&lt;br /&gt;
&lt;br /&gt;
Remember to put a '''#''' at the end of the UDP String, so the updater can keep the different titles apart.&lt;br /&gt;
&lt;br /&gt;
* '''RML:''' Additional RML to execute. To put the update that was sent into the message field in rdairplay, this should read LB updated %a %t! (the ! is mandatory)&lt;br /&gt;
&lt;br /&gt;
* cd into /streamdata&lt;br /&gt;
&lt;br /&gt;
* Edit the configuration in song.sh and streamupdate.sh&lt;br /&gt;
** In song.sh port set in rdadmin and songdat the path where you extracted the directory to including the directory and song.dat. '''Example:''' you put it into /home/rd, than it should read &amp;quot;/home/rd/streamdata/song.dat&amp;quot;&lt;br /&gt;
** In streamupdate.sh: edit the domain name or ip of your shoutcast server, the port it is on, the adminpassword (in case you didn't set one, this is the password you use to stream), a message for when it is started and, once again, the path to song.dat&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;NOTE: The issue has been fixed. If you downloaded streamdata before 27th of September 2010, the following still applies: In the current release streamupdate.sh has a hardcoded value in place of a variable. You can fix this by changing&lt;br /&gt;
&amp;lt;pre&amp;gt;($(nohup lynx -source &amp;quot;http://dd-radio.com:8000/admin.cgi?pass=$pass&amp;amp;mode=updinfo&amp;amp;song=$title&amp;quot; &amp;gt; /dev/null &amp;amp;))&amp;amp;&amp;lt;/pre&amp;gt;&lt;br /&gt;
to&lt;br /&gt;
&amp;lt;pre&amp;gt;($(nohup lynx -source &amp;quot;http://$server:$port/admin.cgi?pass=$pass&amp;amp;mode=updinfo&amp;amp;song=$title&amp;quot; &amp;gt; /dev/null &amp;amp;))&amp;amp;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Restart rdairplay so that the changes in now&amp;amp;next take place&lt;br /&gt;
&lt;br /&gt;
* execute startupdate.sh by typing ./startupdate.sh&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' The meta data for all songs are written to song.dat. ALL of them. Make sure that song.dat is not getting too big. To reset the file, simply &amp;quot;rm song.dat&amp;quot; and &amp;quot;touch song.dat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 How to stream Rivendell Now &amp;amp; Next data to your Icecast2 server: &lt;br /&gt;
&lt;br /&gt;
The same instructions as above (for the Shoutcast Server), apart from:&lt;br /&gt;
&lt;br /&gt;
* There is no need for lynx and awk (wget and tail instead, available natively in Debian and Ubuntu)&lt;br /&gt;
&lt;br /&gt;
*'''UDP String:''' - The same as above, but for getting the titles and Artists to different lines into the &amp;quot;song.dat&amp;quot;, Use a wildcard for a newline  '''%r'''. That would be:  %a - %t %r&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;'''NOTE:''' If you are using Ubuntu 10.04, due to changes in the netcat of this version, you'll have to change the options passed to &amp;quot;nc&amp;quot; in the &amp;quot;song.sh&amp;quot; file. Change &lt;br /&gt;
 netcat -l -u -p $port &amp;gt; $songdat &amp;amp;&lt;br /&gt;
to&lt;br /&gt;
 netcat -k -u -l $port &amp;gt; $songdat &amp;amp;&lt;br /&gt;
&amp;lt;/span&amp;gt;&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== icecast.py ===&lt;br /&gt;
&lt;br /&gt;
Icecast Stream python meta-data Updater Courtesy WZEW-FM MOBILE AL and Nik Martin - Server Corps&lt;br /&gt;
&lt;br /&gt;
[http://92zew.net/icecast.py icecast.py]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Updating metadata IceCast2/Shoutcast with Rivendell - RDSTREAMDATA===&lt;br /&gt;
&amp;lt;font size=1&amp;gt;Portuguese to English translation&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Following these steps can we use the information in &amp;quot;Now &amp;amp; Next&amp;quot; to update the Rivendell icecast2 servers and / or Shoutcast, thereby making the names of the artist and song are running are displayed in the player receiving the stream. &lt;br /&gt;
&lt;br /&gt;
The Rivendell sends this information via UDP messages, what we do is to capture these messages (using netcat), treat them and apply them to the desired shape Shoutcast/Icecast2 streaming services. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Requirements ==== &lt;br /&gt;
&lt;br /&gt;
The procedures shown here were tested at 10.4 32 bit Ubuntu distribution. &lt;br /&gt;
Make sure your distribution has the following packages installed: &lt;br /&gt;
&lt;br /&gt;
* Wget (Used to upgrade servers icecast2) &lt;br /&gt;
* Lynx (Used to upgrade servers Shoutcast) &lt;br /&gt;
* Nc (netcat, used to capture messages sent by RDAirPlay) &lt;br /&gt;
&lt;br /&gt;
The commands used in the scripts provided below will work with NC (netcat) openbsd version which is the default for Ubuntu 10.04. &lt;br /&gt;
If your distribution uses the traditional NC default, see if there is a binary version of openbsd, as Ubuntu, for example, has both versions. &lt;br /&gt;
In Ubuntu you can check the versions available with the command: &lt;br /&gt;
&lt;br /&gt;
 # Update-alternatives - list nc &lt;br /&gt;
&lt;br /&gt;
It is not necessary that you change the default version of your system, just set in the following steps to use the version RDStreamData openbsd. &lt;br /&gt;
&lt;br /&gt;
==== Installation ==== &lt;br /&gt;
&lt;br /&gt;
* Download the package rdstreamdata.tar.gz &lt;br /&gt;
[Http://www.fdts.com.br/rdstreamdata.tar.gz rdstreamdata.tar.gz] &lt;br /&gt;
&lt;br /&gt;
* Unzip the package and enter the directory created &lt;br /&gt;
 # Tar-zxvf rdstreamdata.tar.gz &lt;br /&gt;
 # Cd rdstreamdata &lt;br /&gt;
* As root, run the installation script and read the instructions on screen. &lt;br /&gt;
 #. / Install.sh &lt;br /&gt;
 Will this script install RDstreamdata, a set of scripts That Will listen to an UDP port is Rivendell Now &amp;amp; Next information and update &lt;br /&gt;
 this information to an icecast2 and / or ShoutCast Server. &lt;br /&gt;
 Do you want to do it? y / n.y &lt;br /&gt;
* Enter &amp;quot;y&amp;quot; and hit Enter &lt;br /&gt;
 Copying files &lt;br /&gt;
 Now You Have to edit / etc / rdstreamdata.conf 'to suit your icecast2, Rivendell and ShoutCast Configurations. &lt;br /&gt;
  &lt;br /&gt;
 Attemper That You Must Set the username and group Which must run under the process before you start the daemon for the first time. &lt;br /&gt;
 Edit / etc / default / rdstreamdata 'and set' Enable 'to' true ', so You Can start it though the init script &lt;br /&gt;
  &lt;br /&gt;
 Also you need to Set the script / etc / init.d / rdstreamdata 'to Be automaticaly run in the desired runlevels, &lt;br /&gt;
 systems in Ubuntu You may use &amp;quot;sysv-rc-conf 'command for this. &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 You Can contact me at contato@fdts.com.br &lt;br /&gt;
  &lt;br /&gt;
 Thanks for using &lt;br /&gt;
&lt;br /&gt;
====General Settings ====  &lt;br /&gt;
&lt;br /&gt;
* Now we must set up some items, as described by the installer, start with the'''/ etc / defaults / rdstreamdata''', where we must fulfill what the user under which the processes are executed. You can use either the user that you log into Linux as the user running the other services of Rivendell, I use the username'''rduser''' and''group 'rivendell'''. '''NOT recommend that you use root or another user with higher privileges'''. &lt;br /&gt;
* Even in'''/ etc / defaults / rdstreamdata''' set the value of'''ENABLE''' to'''true''', otherwise the daemon will not start. &lt;br /&gt;
* In the file'''/ etc / rdstreamdata.conf''' we have all other settings, we should look to the following: &lt;br /&gt;
** In the general settings: &lt;br /&gt;
***'''Netcat_bin = / bin / nc''' - At this point we can define a binary alternative to netcat, remember that we emphasize the importance of early use Netcat version of OpenBSD. As with Ubuntu 4.10 this is already the default, I'm using the default path / bin / nc. &lt;br /&gt;
***'''Riv_udp_port = &amp;quot;9876&amp;quot;''' - Here we define which port our script will be listening for messages from Rivendell, you should use a port that is not being used by any service above 1024 and ever since we are not running as root. The port is also used here as defined in the configuration of Rivendell. &lt;br /&gt;
***'''Message = &amp;quot;Name of your radio&amp;quot;''' - The message specified here is used when the RDAirPlay is closed or when the event is in the air that is not configured to send names (jingles, commercials, called , etc.). &lt;br /&gt;
***'''Min_title_size = 5''' - Minimum size of characters that the event must have for the the standard message set in the previous section is replaced by the name of the event. This is used to filter unwanted events of null characters. &lt;br /&gt;
&lt;br /&gt;
==== Settings Icecast2====  &lt;br /&gt;
* In the file'''/ etc / rdstreamdata.conf''' &lt;br /&gt;
** These settings define whether or not you use a server Icecast2 and what data to access it. &lt;br /&gt;
***'''Ic_enable = true''' - If the value is different from'''true''' the server Icecast2 not be updated. &lt;br /&gt;
***'''Ic_server = &amp;quot;localhost&amp;quot;''' - Hostname or IP of server Icecast2, change as needed. &lt;br /&gt;
***'''Ic_admin = &amp;quot;admin&amp;quot;''' - User Icecast2 server administrator, change as needed. &lt;br /&gt;
***'''Ic_pass = &amp;quot;password&amp;quot;''' - User password server administrator Icecast2, change as needed. &lt;br /&gt;
***'''Ic_port = &amp;quot;8888&amp;quot;''' - Server port Icecast2, change as needed. &lt;br /&gt;
***'''Ic_mount = &amp;quot;/ radio&amp;quot;''' - Mount point Icecast2 server, change as needed. &lt;br /&gt;
&lt;br /&gt;
==== Settings Shoucast====  &lt;br /&gt;
* In the file'''/ etc / rdstreamdata.conf''' &lt;br /&gt;
** These settings define whether or not you use a Shoutcast server and what data to access it. &lt;br /&gt;
***'''Sc_enable = true''' - If the value is different from'''true''' the Shoutcast server will not be updated. &lt;br /&gt;
***'''Sc_server = &amp;quot;localhost&amp;quot;''' - Hostname or IP of the Shoutcast server, change as needed. &lt;br /&gt;
***'''Sc_admin = &amp;quot;admin&amp;quot;''' - User Shoutcast server administrator, change as needed. &lt;br /&gt;
***'''Sc_pass = &amp;quot;password&amp;quot;''' - Password for user administrator Shoutcast server, change as needed. &lt;br /&gt;
***'''Sc_port = &amp;quot;8080&amp;quot;''' - Shoutcast server port, change as needed. &lt;br /&gt;
&lt;br /&gt;
==== Configuring Rivendell ==== &lt;br /&gt;
&lt;br /&gt;
This is an essential step for the update to run, since the Rivendell not send the desired information is useless effort. &lt;br /&gt;
To enable the transmission of information follow the following steps: &lt;br /&gt;
* Enter rdadmin. &lt;br /&gt;
[[File: rdstreamdata_01.jpeg]] &lt;br /&gt;
* Click on'''Manage Hosts'''. &lt;br /&gt;
[[File: rdstreamdata_02.jpeg]] &lt;br /&gt;
* Select the Host which runs RDAirPlay and click'''Edit'''. &lt;br /&gt;
[[File: rdstreamdata_03.jpeg]] &lt;br /&gt;
* Click'''RDAirPlay''' &lt;br /&gt;
[[File: rdstreamdata_04.jpeg]] &lt;br /&gt;
* On the screen that opens click'''Now &amp;amp; Next Set Parameters'''. &lt;br /&gt;
[[File: rdstreamdata_05.jpeg]] &lt;br /&gt;
* Fill in the fields as indicated: &lt;br /&gt;
**'''IP Address''' 127.0.0.1 &lt;br /&gt;
**'''UDP Port:''' 9876 - The same setup informed'''/ etc / rdstreamdata.conf'''. &lt;br /&gt;
**'''UDP String:'''% a -% t% r - Thus we have a message with the names of the artist and the current song, plus a line break. &lt;br /&gt;
[[File: rdstreamdata_06.jpeg]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this point the RDAirPlay is ready to send UDP messages to update our Streaming, however we must be sure that groups are configured to transmit the event information. &lt;br /&gt;
&lt;br /&gt;
* Free rdadmin again. &lt;br /&gt;
[[File: rdstreamdata_01.jpeg]] &lt;br /&gt;
* Click'''Groups'''. &lt;br /&gt;
[[File: rdstreamdata_07.jpeg]] &lt;br /&gt;
* Select a group that wants to transmit information and click'''Edit'''. &lt;br /&gt;
[[File: rdstreamdata_08.jpeg]] &lt;br /&gt;
* Check the'''Transmit Now &amp;amp; Next day''' and click OK. &lt;br /&gt;
[[File: rdstreamdata_09.jpeg]] &lt;br /&gt;
* Repeat the last steps for all desired groups. &lt;br /&gt;
&lt;br /&gt;
* Close and reopen the RDAirPlay. Now the Rivendell should already be updating your streaming server! &lt;br /&gt;
&lt;br /&gt;
Happy Rivendelling! &lt;br /&gt;
&lt;br /&gt;
You can follow any updates to the log file'''/ var / log / rdstreamdata.log'''&lt;br /&gt;
&lt;br /&gt;
== Further Rivendell Streaming Info ==&lt;br /&gt;
You can also see the page [[Stream under Debian]]  for information about streaming under Rivendell but it references darkice and ices-kh(ices2). The first if compiled does not work and the latter is hard to find if you even can.&lt;br /&gt;
&lt;br /&gt;
Also see [[Rivendell_Loadable_Module_(RLM)_SDK_-_For_Sending_Now_%26_Next_Data_to_external_systems|Rivendell Loadable Modules]] for more info on meta data transfer to external systems&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=Streaming_from_Rivendell&amp;diff=672</id>
		<title>Streaming from Rivendell</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=Streaming_from_Rivendell&amp;diff=672"/>
				<updated>2023-07-02T19:18:06Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: /* Configuring RDAirplay to send Now&amp;amp;Next Data */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FIXME: THIS PAGE IS NOT FINISHED! IF YOU GO THROUGH THIS SETUP PLEASE FINISH THIS PAGE!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Icecast2 Meta Data from Rivendell ==&lt;br /&gt;
&lt;br /&gt;
=== Configuring Rivendell to send Now&amp;amp;Next/PAD Data ===&lt;br /&gt;
&lt;br /&gt;
Beginning with v3.0.1, Rivendell uses a system called 'PyPAD' to generate program associated data (&amp;quot;PAD&amp;quot;, sometimes also referred to in the Rivendell docs as &amp;quot;Now &amp;amp; Next&amp;quot;) updates in real time. Each time a log event starts or stops in RDAirplay, PyPAD cn be configured to call one or more Python scripts, each of which are handed the parameters of the event, which can then be processed and/or forwarded by the code in the script. An overview of the system can be found in the [https://opsguide.rivendellaudio.org/html/chapter.pad.html Program Associated Data chapter] in the [https://opsguide.rivendellaudio.org/html/ Rivendell Operations Guide].&lt;br /&gt;
&lt;br /&gt;
While PyPAD is explicitly designed to make it relatively easy for even novice Python coders to create their own custom scripts, Rivendell also ships with a set of pre-installed scripts that can deal with many common update scenarios, including sending updates for:&lt;br /&gt;
&lt;br /&gt;
* RDS/RDBS displays&lt;br /&gt;
* Online streaming encoders/players&lt;br /&gt;
* Station web sites&lt;br /&gt;
* Associated data displays (such as the Text Display Widget in [https://www.paravelsystems.com/walltime WallTime]&lt;br /&gt;
&lt;br /&gt;
==== Example: Updating the Currently playing information on an IceCast Server ====&lt;br /&gt;
&lt;br /&gt;
Rivendell ships with a PyPAD script called '''pypad_icecast2.py''' that can be used to update the 'Currently playing' display in IceCast v2.x setups. To configure it, proceed as follows:&lt;br /&gt;
&lt;br /&gt;
# Start RDAdmin and go to Manage Hosts =&amp;gt; &amp;lt;hostname&amp;gt; =&amp;gt; PyPAD Instances.&lt;br /&gt;
# Touch the 'Add' button to open a list of available PyPAD scripts.&lt;br /&gt;
# Choose '''pypad_icecast2.py''' from the list and then touch 'Open'. An 'Edit PyPAD Instance' dialog will open.&lt;br /&gt;
# Find the 'Password=', 'Hostname=', 'Tcpport=' and 'Mountpoint=' entries in the configuration and change them to the values appropriate for your Icecast server. (The configuration contains other entries that can also be used to customize the behavior of the updating process; see the accompanying comments in the configuration for details).&lt;br /&gt;
# Touch the 'OK' button. &lt;br /&gt;
# A new line will appear in the 'PyPAD Instances' dialog. The status light at the start of the should turn green after a few seconds. If it remains red, select the entry on the list and then touch the 'Error Log' button to see any error messages or warnings generated by the script. Close the dialog, then touch the 'Edit' button and make any needed changes to the configuration. Repeat the process until a green status light is obtained.&lt;br /&gt;
&lt;br /&gt;
N.B. - Due to the way that the IceCast server is designed, PAD update messages must be seen by the server to originate from the same IP address as that being used to originate the associated audio stream. Provided that the audio encoder and Rivendell are accessing Icecast by means of the same NAT'ed firewall, this requirement will generally be met. If not, then PyPAD can often be configured to send PAD via the audio encoder.&lt;br /&gt;
&lt;br /&gt;
=== Set up Groups for Now &amp;amp; Next data ===&lt;br /&gt;
&lt;br /&gt;
At this point the RDAirPlay is ready to send UDP messages to update our Streaming, however we must be sure that groups are configured to transmit the event information. &lt;br /&gt;
&lt;br /&gt;
* Free rdadmin again. &lt;br /&gt;
[[File: rdstreamdata_01.jpeg]] &lt;br /&gt;
* Click'''Groups'''. &lt;br /&gt;
[[File: rdstreamdata_07.jpeg]] &lt;br /&gt;
* Select a group that wants to transmit information and click'''Edit'''. &lt;br /&gt;
[[File: rdstreamdata_08.jpeg]] &lt;br /&gt;
* Check the'''Transmit Now &amp;amp; Next day''' and click OK. &lt;br /&gt;
[[File: rdstreamdata_09.jpeg]] &lt;br /&gt;
* Repeat the last steps for all desired groups. &lt;br /&gt;
&lt;br /&gt;
* Close and reopen the RDAirPlay. Now the Rivendell should already be updating your streaming server! &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Probably outdated Information ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;'''THIS IS PROBABLY OUTDATED'''&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rivendell can be setup to use to jack for audio output. Jack handles connections to ALSA. Hook up the Rivendell outputs to the jack inputs. Jack encodes the stream and sends to your stream source which then feeds your stream server.&lt;br /&gt;
&lt;br /&gt;
== Setup Rivendell to Use Jack ==&lt;br /&gt;
&lt;br /&gt;
Setup Rivendell to use jack in the Rivendell configuration file /etc/rd.conf&lt;br /&gt;
&lt;br /&gt;
FIXME: MORE DETAILS NEEDED ON RIVENDELL JACK SETUP.&lt;br /&gt;
&lt;br /&gt;
possible way of working:&lt;br /&gt;
&lt;br /&gt;
When compiling Rivendell from source, include jack support by installing jack prior to ./configure.&lt;br /&gt;
Then - after installation - first fire up jack using qjackctl and then start the rd services.&lt;br /&gt;
You will find a jack &amp;quot;soundcard&amp;quot; in rdadmin.&lt;br /&gt;
&lt;br /&gt;
== Configure Jack ==&lt;br /&gt;
&lt;br /&gt;
You can setup Jack (jackd) in a number of ways. There are packages that will start jack at each bootup (FIXME: NEED DETAILS AND SETUP FOR PACKAGES) or you can use the package qjackctl also called Jack Control to setup and use jack. Jack Control provides a GUI interface for configuring Jack. (FIXME: NEED DETAILS AND SETUP FOR JACK CONTROL).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Install a stream source ==&lt;br /&gt;
&lt;br /&gt;
Install [http://www.oddsock.org/tools/edcast_jack/ edcast-jack] on your machine.&lt;br /&gt;
&lt;br /&gt;
Download and uncompress the source archive file. Then open a terminal and go to the '''edcast-jack-3.1.7''' (May be a different folder name if the version increases) directory and compile it. &lt;br /&gt;
&lt;br /&gt;
The normal '''./configure''' , '''make''' and then run as super user '''make install''' worked for me. However, since there is no list of the dependencies I had to run '''./configure''' a number of times watching for the missing files till I got them all installed. Then do '''make''' and after that as the super user '''make install''' to be up and running. Type '''edcast-jack''' in a console window and it will tell you how to invoke it on the command line.&lt;br /&gt;
&lt;br /&gt;
On Ubuntu Jaunty 9.04 the following packages had to be installed to have full edcast-jack functionality: (Mark additional required changes as well!)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
libfaac-dev&lt;br /&gt;
libfaac0&lt;br /&gt;
libjack-dev&lt;br /&gt;
libflac-dev&lt;br /&gt;
libogg-dev&lt;br /&gt;
libvorbis-dev&lt;br /&gt;
libmad0-dev&lt;br /&gt;
libmp3lame-dev&lt;br /&gt;
g++&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== edcast-jack Readme ===&lt;br /&gt;
&amp;lt;pre&amp;gt;edcast-jack Readme&lt;br /&gt;
-------------------&lt;br /&gt;
&lt;br /&gt;
This version of edcast allows you to hook into any jack output port&lt;br /&gt;
and broadcast the audio to an icecast or shoutcast server.&lt;br /&gt;
&lt;br /&gt;
This version of edcast is all command-line oriented, and comes with&lt;br /&gt;
example config files for each of the encoding types supported (Ogg Vorbis,&lt;br /&gt;
LAME, AAC).  You will most likely need to take one of the example configs&lt;br /&gt;
(in the conf dir) and modify it to suit your needs.&lt;br /&gt;
&lt;br /&gt;
Here is an example of how to use it with jack (http://jackit.sourceforge.net).&lt;br /&gt;
&lt;br /&gt;
Step 1: &lt;br /&gt;
 * startup jackd &lt;br /&gt;
&lt;br /&gt;
Step 2:&lt;br /&gt;
 * Feed a signal into jackd.  There are many applications you can use&lt;br /&gt;
   for this, if you like XMMS, try installing http://xmms-jack.sourceforge.net/&lt;br /&gt;
&lt;br /&gt;
Step 3:&lt;br /&gt;
 * Start edcast specifying the appropriate output ports.  To get a list of&lt;br /&gt;
   the output ports, use jack_lsp.  If you use XMMS, you'll see something like :&lt;br /&gt;
&lt;br /&gt;
    % jack_lsp&lt;br /&gt;
    alsa_pcm:capture_1&lt;br /&gt;
    alsa_pcm:capture_2&lt;br /&gt;
    alsa_pcm:playback_1&lt;br /&gt;
    alsa_pcm:playback_2&lt;br /&gt;
    bio2jack_0_32083:out_0&lt;br /&gt;
    bio2jack_0_32083:out_1&lt;br /&gt;
&lt;br /&gt;
   In this case, the bio2jack_0_32083:out_0 and bio2jack_0_32083:out_1 are the &lt;br /&gt;
   output ports from XMMS.  So you'd start edcast like :&lt;br /&gt;
&lt;br /&gt;
    edcast -c edcast_OggVorbis.cfg bio2jack_0_32083:out_0 bio2jack_0_32083:out_1&lt;br /&gt;
&lt;br /&gt;
   Use edcast -h for a usage.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== edcast-jack Usage ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
usage: edcast -c configfile [ -n jack_client_name ] [ -p portmatch ] [ jackport1 [ jackport2 ... ]]&lt;br /&gt;
Where:&lt;br /&gt;
-c : config file that specified encoding settings&lt;br /&gt;
-n : name used to register with jackd&lt;br /&gt;
-p : if specified, edcast will connect to the first two output ports matching this name.&lt;br /&gt;
jackportX : explicitly specify a jack port name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== edcast-jack Sample Configuration File ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Destination server details (to where you are encoding).  Valid server types : Shoutcast, Icecast, Icecast2&lt;br /&gt;
ServerType=Icecast2&lt;br /&gt;
Server=192.168.1.100&lt;br /&gt;
Port=8000&lt;br /&gt;
ServerPassword=hackme&lt;br /&gt;
ServerMountpoint=/stream&lt;br /&gt;
# YP (Stream Directory) Settings&lt;br /&gt;
ServerPublic=1&lt;br /&gt;
ServerIRC=&lt;br /&gt;
ServerAIM=&lt;br /&gt;
ServerICQ=&lt;br /&gt;
ServerStreamURL=http://www.oddsock.org&lt;br /&gt;
ServerName=This is my server name&lt;br /&gt;
ServerDescription=This is my server description&lt;br /&gt;
ServerGenre=Rock&lt;br /&gt;
AutomaticReconnectSecs=10&lt;br /&gt;
AutoConnect=0&lt;br /&gt;
# Output codec selection (Valid selections : MP3, OggVorbis, Ogg FLAC, AAC, AAC Plus)&lt;br /&gt;
Encode=MP3&lt;br /&gt;
# General settings (non-codec related).  Note : NumberChannels = 1 for MONO, 2 for STEREO&lt;br /&gt;
BitrateNominal=48&lt;br /&gt;
BitrateMin=128&lt;br /&gt;
BitrateMax=128&lt;br /&gt;
NumberChannels=1&lt;br /&gt;
Samplerate=22050&lt;br /&gt;
# Ogg Vorbis specific settings.  Note: Valid settings for BitrateQuality flag are (Quality, Bitrate Management)&lt;br /&gt;
OggQuality=0&lt;br /&gt;
OggBitrateQualityFlag=Quality&lt;br /&gt;
# LAME specific settings.  Note: Setting the low/highpass freq to 0 will disable them.&lt;br /&gt;
LameCBRFlag=1&lt;br /&gt;
LameQuality=1&lt;br /&gt;
LameCopywrite=0&lt;br /&gt;
LameOriginal=0&lt;br /&gt;
LameStrictISO=0&lt;br /&gt;
LameDisableReservior=0&lt;br /&gt;
LameVBRMode=vbr_abr&lt;br /&gt;
LameLowpassfreq=0&lt;br /&gt;
LameHighpassfreq=0&lt;br /&gt;
LAMEPreset=0&lt;br /&gt;
# AAC (FAAC) specific settings.&lt;br /&gt;
AACQuality=100&lt;br /&gt;
AACCutoff=&lt;br /&gt;
# Log Level 1 = LOG_ERROR, 2 = LOG_ERROR+LOG_WARNING, 3 = LOG_ERROR+LOG_WARNING+LOG_DEBUG&lt;br /&gt;
LogLevel=3&lt;br /&gt;
# Log File&lt;br /&gt;
LogFile=streamTranscoder_1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Install a broadcast server ==&lt;br /&gt;
&lt;br /&gt;
You can select one of these broadcast servers. &lt;br /&gt;
It will receive the encoded stream from the source stream and provide it to the public listeners.&lt;br /&gt;
&lt;br /&gt;
You can choose ''classic'' broadcast servers (like Icecast2) or peer-to-peer broadcast solutions (like PeerCast or FreeCast).&lt;br /&gt;
&lt;br /&gt;
=== PeerCast ===&lt;br /&gt;
&lt;br /&gt;
Install PeerCast. Current version (as of May 18/2005) is PeerCast v0.1211&lt;br /&gt;
* [http://www.peercast.org/ PeerCast web site]&lt;br /&gt;
* [[Create A PeerCast User]]&lt;br /&gt;
* [http://www.peercast.org/guides/pc-linux.php PeerCast linux install guide.]]&lt;br /&gt;
** I suggest you copy the html directory from the peercast archive to /home/peercast.&lt;br /&gt;
** I suggest you copy the peercast executable from the peercast archive to /usr/bin.&lt;br /&gt;
** See below for configuration instructions/suggestions.&lt;br /&gt;
&lt;br /&gt;
==== Configure ====&lt;br /&gt;
&lt;br /&gt;
=== FreeCast ===&lt;br /&gt;
&lt;br /&gt;
Install the FreeCast debian package available on the [http://debian.tryphon.org Tryphon Debian Archiver].&lt;br /&gt;
&lt;br /&gt;
* [http://www.freecast.org FreeCast website]&lt;br /&gt;
&lt;br /&gt;
=== IceCast ===&lt;br /&gt;
&lt;br /&gt;
Install the IceCast streaming server using the instructions and source code found at [http://www.icecast.org IceCast].&lt;br /&gt;
&lt;br /&gt;
=== Streamp2p ===&lt;br /&gt;
&lt;br /&gt;
[http://www.streamerp2p.com Streamerp2p] enables anyone to webcast without expensive servers. Works from your home pc, even on dial-up for some streams. No max limit to listeners like shoutcast. No 'server full' messages, no stream hosting costs, completely free to use for both personal and commercial users. Tiny install (430k), ActiveX version for web pages, and soon a Java version for web and mobile devices.&lt;br /&gt;
&lt;br /&gt;
Streamp2p is a  Windows but runs without problem under wine on Ubuntu Linux.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Icecast2/Shoutcast Meta Data from Rivendell==&lt;br /&gt;
&lt;br /&gt;
=== Streamdata === &lt;br /&gt;
&lt;br /&gt;
Streamdata for Shoutcast is available from [http://emitworks.com/en/index.php?id=rivendell-radio-automation EMITworks]. You can download it [http://emitworks.com/streamdata.tar.gz here].&lt;br /&gt;
&lt;br /&gt;
Streamdata for Icecast2 is available for download [http://ubuntuone.com/p/E7F// here] . &lt;br /&gt;
&lt;br /&gt;
Streamdata is a set of scripts to update Shoutcast and Icecast2 using Rivendell Now&amp;amp;Next data.&lt;br /&gt;
&lt;br /&gt;
*Streamdata was written by Michael Papsdorf  &lt;br /&gt;
&lt;br /&gt;
*Modified for usage in Debian/Ubuntu and Icecast2 by Daniel Roviriego&lt;br /&gt;
&lt;br /&gt;
 HowTo stream Rivendell Now &amp;amp; Next data to your Shoutcast server: &lt;br /&gt;
&lt;br /&gt;
* Preparation: make sure you have netcat, lynx and awk installed on your system under openSUSE, simply type &amp;quot;zypper install netcat&amp;quot; in a console. Same with Lynx and awk&lt;br /&gt;
&lt;br /&gt;
* Extract the directory somewhere you will find it ;)&lt;br /&gt;
&lt;br /&gt;
* In rdadmin, go to manage hosts --&amp;gt; your host --&amp;gt; rdairplay --&amp;gt; configure Now &amp;amp; Next&lt;br /&gt;
** '''IP-Adress:''' this is 127.0.0.1 since you are running the script on the same machine&lt;br /&gt;
** '''UDP Port:''' anything that is unused, we use 6666&lt;br /&gt;
** '''UDP String:''' This is the data you actually send.  To output the now playing artist and title enter:&lt;br /&gt;
 %a %t#&lt;br /&gt;
'''Note:''' You must include a '''#''' at the end of the UDP string so that the updater can tell where one title starts and the other ends.&lt;br /&gt;
&lt;br /&gt;
The following placeholder macros can be used in the UDP String, which will be replaced appropriately when a packet is sent:&lt;br /&gt;
 %n - The currently-playing CART NUMBER&lt;br /&gt;
 %g - The currently-playing GROUP NAME&lt;br /&gt;
 %t - The currently-playing TITLE field&lt;br /&gt;
 %a - The currently-playing ARTIST field&lt;br /&gt;
 %l - The currently-playing ALBUM field&lt;br /&gt;
 %y - The currently-playing YEAR field&lt;br /&gt;
 %b - The currently-playing LABEL field&lt;br /&gt;
 %c - The currently-playing CLIENT field&lt;br /&gt;
 %e - The currently-playing AGENCY field&lt;br /&gt;
 %u - The currently-playing USER DEFINED field&lt;br /&gt;
 %h - The length of the currently playing cut, in mS.&lt;br /&gt;
 %r - A &amp;quot;Unix&amp;quot; style newline (naked ASCII 10)&lt;br /&gt;
 %R - An &amp;quot;MS-DOS&amp;quot; style newsline (ASCII 13/10)&lt;br /&gt;
 %% - A literal '%'.&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' Additionally, with the exception of the '%r', '%R' and '%%' placeholders, '''the corresponding field for the &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;next-to-play event&amp;lt;/span&amp;gt; can be specified by simply uppercasing the above placeholders'''.  Any other characters will be sent unchanged.&lt;br /&gt;
&lt;br /&gt;
Remember to put a '''#''' at the end of the UDP String, so the updater can keep the different titles apart.&lt;br /&gt;
&lt;br /&gt;
* '''RML:''' Additional RML to execute. To put the update that was sent into the message field in rdairplay, this should read LB updated %a %t! (the ! is mandatory)&lt;br /&gt;
&lt;br /&gt;
* cd into /streamdata&lt;br /&gt;
&lt;br /&gt;
* Edit the configuration in song.sh and streamupdate.sh&lt;br /&gt;
** In song.sh port set in rdadmin and songdat the path where you extracted the directory to including the directory and song.dat. '''Example:''' you put it into /home/rd, than it should read &amp;quot;/home/rd/streamdata/song.dat&amp;quot;&lt;br /&gt;
** In streamupdate.sh: edit the domain name or ip of your shoutcast server, the port it is on, the adminpassword (in case you didn't set one, this is the password you use to stream), a message for when it is started and, once again, the path to song.dat&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;NOTE: The issue has been fixed. If you downloaded streamdata before 27th of September 2010, the following still applies: In the current release streamupdate.sh has a hardcoded value in place of a variable. You can fix this by changing&lt;br /&gt;
&amp;lt;pre&amp;gt;($(nohup lynx -source &amp;quot;http://dd-radio.com:8000/admin.cgi?pass=$pass&amp;amp;mode=updinfo&amp;amp;song=$title&amp;quot; &amp;gt; /dev/null &amp;amp;))&amp;amp;&amp;lt;/pre&amp;gt;&lt;br /&gt;
to&lt;br /&gt;
&amp;lt;pre&amp;gt;($(nohup lynx -source &amp;quot;http://$server:$port/admin.cgi?pass=$pass&amp;amp;mode=updinfo&amp;amp;song=$title&amp;quot; &amp;gt; /dev/null &amp;amp;))&amp;amp;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Restart rdairplay so that the changes in now&amp;amp;next take place&lt;br /&gt;
&lt;br /&gt;
* execute startupdate.sh by typing ./startupdate.sh&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' The meta data for all songs are written to song.dat. ALL of them. Make sure that song.dat is not getting too big. To reset the file, simply &amp;quot;rm song.dat&amp;quot; and &amp;quot;touch song.dat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 How to stream Rivendell Now &amp;amp; Next data to your Icecast2 server: &lt;br /&gt;
&lt;br /&gt;
The same instructions as above (for the Shoutcast Server), apart from:&lt;br /&gt;
&lt;br /&gt;
* There is no need for lynx and awk (wget and tail instead, available natively in Debian and Ubuntu)&lt;br /&gt;
&lt;br /&gt;
*'''UDP String:''' - The same as above, but for getting the titles and Artists to different lines into the &amp;quot;song.dat&amp;quot;, Use a wildcard for a newline  '''%r'''. That would be:  %a - %t %r&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;'''NOTE:''' If you are using Ubuntu 10.04, due to changes in the netcat of this version, you'll have to change the options passed to &amp;quot;nc&amp;quot; in the &amp;quot;song.sh&amp;quot; file. Change &lt;br /&gt;
 netcat -l -u -p $port &amp;gt; $songdat &amp;amp;&lt;br /&gt;
to&lt;br /&gt;
 netcat -k -u -l $port &amp;gt; $songdat &amp;amp;&lt;br /&gt;
&amp;lt;/span&amp;gt;&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== icecast.py ===&lt;br /&gt;
&lt;br /&gt;
Icecast Stream python meta-data Updater Courtesy WZEW-FM MOBILE AL and Nik Martin - Server Corps&lt;br /&gt;
&lt;br /&gt;
[http://92zew.net/icecast.py icecast.py]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Updating metadata IceCast2/Shoutcast with Rivendell - RDSTREAMDATA===&lt;br /&gt;
&amp;lt;font size=1&amp;gt;Portuguese to English translation&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Following these steps can we use the information in &amp;quot;Now &amp;amp; Next&amp;quot; to update the Rivendell icecast2 servers and / or Shoutcast, thereby making the names of the artist and song are running are displayed in the player receiving the stream. &lt;br /&gt;
&lt;br /&gt;
The Rivendell sends this information via UDP messages, what we do is to capture these messages (using netcat), treat them and apply them to the desired shape Shoutcast/Icecast2 streaming services. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Requirements ==== &lt;br /&gt;
&lt;br /&gt;
The procedures shown here were tested at 10.4 32 bit Ubuntu distribution. &lt;br /&gt;
Make sure your distribution has the following packages installed: &lt;br /&gt;
&lt;br /&gt;
* Wget (Used to upgrade servers icecast2) &lt;br /&gt;
* Lynx (Used to upgrade servers Shoutcast) &lt;br /&gt;
* Nc (netcat, used to capture messages sent by RDAirPlay) &lt;br /&gt;
&lt;br /&gt;
The commands used in the scripts provided below will work with NC (netcat) openbsd version which is the default for Ubuntu 10.04. &lt;br /&gt;
If your distribution uses the traditional NC default, see if there is a binary version of openbsd, as Ubuntu, for example, has both versions. &lt;br /&gt;
In Ubuntu you can check the versions available with the command: &lt;br /&gt;
&lt;br /&gt;
 # Update-alternatives - list nc &lt;br /&gt;
&lt;br /&gt;
It is not necessary that you change the default version of your system, just set in the following steps to use the version RDStreamData openbsd. &lt;br /&gt;
&lt;br /&gt;
==== Installation ==== &lt;br /&gt;
&lt;br /&gt;
* Download the package rdstreamdata.tar.gz &lt;br /&gt;
[Http://www.fdts.com.br/rdstreamdata.tar.gz rdstreamdata.tar.gz] &lt;br /&gt;
&lt;br /&gt;
* Unzip the package and enter the directory created &lt;br /&gt;
 # Tar-zxvf rdstreamdata.tar.gz &lt;br /&gt;
 # Cd rdstreamdata &lt;br /&gt;
* As root, run the installation script and read the instructions on screen. &lt;br /&gt;
 #. / Install.sh &lt;br /&gt;
 Will this script install RDstreamdata, a set of scripts That Will listen to an UDP port is Rivendell Now &amp;amp; Next information and update &lt;br /&gt;
 this information to an icecast2 and / or ShoutCast Server. &lt;br /&gt;
 Do you want to do it? y / n.y &lt;br /&gt;
* Enter &amp;quot;y&amp;quot; and hit Enter &lt;br /&gt;
 Copying files &lt;br /&gt;
 Now You Have to edit / etc / rdstreamdata.conf 'to suit your icecast2, Rivendell and ShoutCast Configurations. &lt;br /&gt;
  &lt;br /&gt;
 Attemper That You Must Set the username and group Which must run under the process before you start the daemon for the first time. &lt;br /&gt;
 Edit / etc / default / rdstreamdata 'and set' Enable 'to' true ', so You Can start it though the init script &lt;br /&gt;
  &lt;br /&gt;
 Also you need to Set the script / etc / init.d / rdstreamdata 'to Be automaticaly run in the desired runlevels, &lt;br /&gt;
 systems in Ubuntu You may use &amp;quot;sysv-rc-conf 'command for this. &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 You Can contact me at contato@fdts.com.br &lt;br /&gt;
  &lt;br /&gt;
 Thanks for using &lt;br /&gt;
&lt;br /&gt;
====General Settings ====  &lt;br /&gt;
&lt;br /&gt;
* Now we must set up some items, as described by the installer, start with the'''/ etc / defaults / rdstreamdata''', where we must fulfill what the user under which the processes are executed. You can use either the user that you log into Linux as the user running the other services of Rivendell, I use the username'''rduser''' and''group 'rivendell'''. '''NOT recommend that you use root or another user with higher privileges'''. &lt;br /&gt;
* Even in'''/ etc / defaults / rdstreamdata''' set the value of'''ENABLE''' to'''true''', otherwise the daemon will not start. &lt;br /&gt;
* In the file'''/ etc / rdstreamdata.conf''' we have all other settings, we should look to the following: &lt;br /&gt;
** In the general settings: &lt;br /&gt;
***'''Netcat_bin = / bin / nc''' - At this point we can define a binary alternative to netcat, remember that we emphasize the importance of early use Netcat version of OpenBSD. As with Ubuntu 4.10 this is already the default, I'm using the default path / bin / nc. &lt;br /&gt;
***'''Riv_udp_port = &amp;quot;9876&amp;quot;''' - Here we define which port our script will be listening for messages from Rivendell, you should use a port that is not being used by any service above 1024 and ever since we are not running as root. The port is also used here as defined in the configuration of Rivendell. &lt;br /&gt;
***'''Message = &amp;quot;Name of your radio&amp;quot;''' - The message specified here is used when the RDAirPlay is closed or when the event is in the air that is not configured to send names (jingles, commercials, called , etc.). &lt;br /&gt;
***'''Min_title_size = 5''' - Minimum size of characters that the event must have for the the standard message set in the previous section is replaced by the name of the event. This is used to filter unwanted events of null characters. &lt;br /&gt;
&lt;br /&gt;
==== Settings Icecast2====  &lt;br /&gt;
* In the file'''/ etc / rdstreamdata.conf''' &lt;br /&gt;
** These settings define whether or not you use a server Icecast2 and what data to access it. &lt;br /&gt;
***'''Ic_enable = true''' - If the value is different from'''true''' the server Icecast2 not be updated. &lt;br /&gt;
***'''Ic_server = &amp;quot;localhost&amp;quot;''' - Hostname or IP of server Icecast2, change as needed. &lt;br /&gt;
***'''Ic_admin = &amp;quot;admin&amp;quot;''' - User Icecast2 server administrator, change as needed. &lt;br /&gt;
***'''Ic_pass = &amp;quot;password&amp;quot;''' - User password server administrator Icecast2, change as needed. &lt;br /&gt;
***'''Ic_port = &amp;quot;8888&amp;quot;''' - Server port Icecast2, change as needed. &lt;br /&gt;
***'''Ic_mount = &amp;quot;/ radio&amp;quot;''' - Mount point Icecast2 server, change as needed. &lt;br /&gt;
&lt;br /&gt;
==== Settings Shoucast====  &lt;br /&gt;
* In the file'''/ etc / rdstreamdata.conf''' &lt;br /&gt;
** These settings define whether or not you use a Shoutcast server and what data to access it. &lt;br /&gt;
***'''Sc_enable = true''' - If the value is different from'''true''' the Shoutcast server will not be updated. &lt;br /&gt;
***'''Sc_server = &amp;quot;localhost&amp;quot;''' - Hostname or IP of the Shoutcast server, change as needed. &lt;br /&gt;
***'''Sc_admin = &amp;quot;admin&amp;quot;''' - User Shoutcast server administrator, change as needed. &lt;br /&gt;
***'''Sc_pass = &amp;quot;password&amp;quot;''' - Password for user administrator Shoutcast server, change as needed. &lt;br /&gt;
***'''Sc_port = &amp;quot;8080&amp;quot;''' - Shoutcast server port, change as needed. &lt;br /&gt;
&lt;br /&gt;
==== Configuring Rivendell ==== &lt;br /&gt;
&lt;br /&gt;
This is an essential step for the update to run, since the Rivendell not send the desired information is useless effort. &lt;br /&gt;
To enable the transmission of information follow the following steps: &lt;br /&gt;
* Enter rdadmin. &lt;br /&gt;
[[File: rdstreamdata_01.jpeg]] &lt;br /&gt;
* Click on'''Manage Hosts'''. &lt;br /&gt;
[[File: rdstreamdata_02.jpeg]] &lt;br /&gt;
* Select the Host which runs RDAirPlay and click'''Edit'''. &lt;br /&gt;
[[File: rdstreamdata_03.jpeg]] &lt;br /&gt;
* Click'''RDAirPlay''' &lt;br /&gt;
[[File: rdstreamdata_04.jpeg]] &lt;br /&gt;
* On the screen that opens click'''Now &amp;amp; Next Set Parameters'''. &lt;br /&gt;
[[File: rdstreamdata_05.jpeg]] &lt;br /&gt;
* Fill in the fields as indicated: &lt;br /&gt;
**'''IP Address''' 127.0.0.1 &lt;br /&gt;
**'''UDP Port:''' 9876 - The same setup informed'''/ etc / rdstreamdata.conf'''. &lt;br /&gt;
**'''UDP String:'''% a -% t% r - Thus we have a message with the names of the artist and the current song, plus a line break. &lt;br /&gt;
[[File: rdstreamdata_06.jpeg]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this point the RDAirPlay is ready to send UDP messages to update our Streaming, however we must be sure that groups are configured to transmit the event information. &lt;br /&gt;
&lt;br /&gt;
* Free rdadmin again. &lt;br /&gt;
[[File: rdstreamdata_01.jpeg]] &lt;br /&gt;
* Click'''Groups'''. &lt;br /&gt;
[[File: rdstreamdata_07.jpeg]] &lt;br /&gt;
* Select a group that wants to transmit information and click'''Edit'''. &lt;br /&gt;
[[File: rdstreamdata_08.jpeg]] &lt;br /&gt;
* Check the'''Transmit Now &amp;amp; Next day''' and click OK. &lt;br /&gt;
[[File: rdstreamdata_09.jpeg]] &lt;br /&gt;
* Repeat the last steps for all desired groups. &lt;br /&gt;
&lt;br /&gt;
* Close and reopen the RDAirPlay. Now the Rivendell should already be updating your streaming server! &lt;br /&gt;
&lt;br /&gt;
Happy Rivendelling! &lt;br /&gt;
&lt;br /&gt;
You can follow any updates to the log file'''/ var / log / rdstreamdata.log'''&lt;br /&gt;
&lt;br /&gt;
== Further Rivendell Streaming Info ==&lt;br /&gt;
You can also see the page [[Stream under Debian]]  for information about streaming under Rivendell but it references darkice and ices-kh(ices2). The first if compiled does not work and the latter is hard to find if you even can.&lt;br /&gt;
&lt;br /&gt;
Also see [[Rivendell_Loadable_Module_(RLM)_SDK_-_For_Sending_Now_%26_Next_Data_to_external_systems|Rivendell Loadable Modules]] for more info on meta data transfer to external systems&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=Building_Rivendell_from_source&amp;diff=654</id>
		<title>Building Rivendell from source</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=Building_Rivendell_from_source&amp;diff=654"/>
				<updated>2023-06-23T20:13:15Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
In most cases, the preferred way to run Rivendell is to use the pre-built packages provided by Paravel Systems. However, it can sometimes be desireable to build Rivendell directly from the source code provided by the upstream developers; such as when one wishes to test a new feature or bugfix that has been committed on GitHub but not yet released in the pre-built packages. This page provides instructions on how to go about this.&lt;br /&gt;
&lt;br /&gt;
==Caveats==&lt;br /&gt;
Builds directly from source should ''always'' be considered &amp;quot;experimental&amp;quot;. They should '''never''' be attempted on systems that are in production &amp;quot;on the air&amp;quot; use! Thus, it is '''highly''' recommended that a seperate, dedicated computer be used for such builds.&lt;br /&gt;
&lt;br /&gt;
The following instructions assume the distro environment to be Ubuntu 22.04 &amp;quot;Jammy Jellyfish&amp;quot;. The fundamental princples apply to other distros as well though; with any differences mostly being confined to using '''yum''' or '''dnf''' instead of Ubuntu's '''apt''' package management tool.  &lt;br /&gt;
&lt;br /&gt;
==Preparing the Installation Environment==&lt;br /&gt;
The first step in preparing a system to do a source build of Rivendell is to install the basic Rivendell environment by running one of the [https://wiki.rivendellaudio.org/index.php/Installing_Rivendell#Appliance_Installers Rivendell appliance installers].&lt;br /&gt;
&lt;br /&gt;
Once installation is complete, the next step is to remove the pre-built Rivendell packages. Start by opening&lt;br /&gt;
a Terminal window and then entering:&lt;br /&gt;
&lt;br /&gt;
 sudo apt purge rivendell rivendell-opsguide&lt;br /&gt;
&lt;br /&gt;
Next, download the Rivendell source code from GitHub (an operation known as 'cloning'):&lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/ElvishArtisan/rivendell&lt;br /&gt;
&lt;br /&gt;
and then move into the newly-created 'rivendell/' directory:&lt;br /&gt;
&lt;br /&gt;
 cd rivendell&lt;br /&gt;
&lt;br /&gt;
next, open a second 'Terminal' window and likewise move into the 'rivendell/' directory.&lt;br /&gt;
&lt;br /&gt;
Arrange the two windows side-by-side. In the left-hand one, view the 'INSTALL' file using the 'less' file viewer:&lt;br /&gt;
&lt;br /&gt;
 less INSTALL&lt;br /&gt;
&lt;br /&gt;
then scroll down to find the 'DISTRO-SPECIFIC NOTES' section, find the subsection for your Linux distro,&lt;br /&gt;
then the block of text within that subsection that starts with 'Environmental variables:'. In the right-hand terminal window, add the 'DOCBOOK_STYLESHEETS' variable to your environment by copy-pasting the text found in the 'Environmental variables:' subsection. For example:&lt;br /&gt;
&lt;br /&gt;
 export DOCBOOK_STYLESHEETS=/usr/share/xml/docbook/stylesheet/docbook-xsl-ns&lt;br /&gt;
 echo DOCBOOK_STYLESHEETS=/usr/share/xml/docbook/stylesheet/docbook-xsl-ns &amp;gt;&amp;gt; ~/.bashrc&lt;br /&gt;
&lt;br /&gt;
Next, find the block of text that begins with 'Required build packages:'. Copy all of the remaining text in the block, then enter 'sudo apt install ' into the right-hand window, followed by the text copied above.&lt;br /&gt;
&lt;br /&gt;
The result should look something like this:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install apache2 libexpat1-dev libexpat1 libid3-dev libcurl4-gnutls-dev libcoverart-dev \&lt;br /&gt;
 libdiscid-dev libmusicbrainz5-dev libcdparanoia-dev libsndfile1-dev libpam0g-dev libvorbis-dev \&lt;br /&gt;
 python3 python3-pycurl python3-pymysql python3-serial python3-requests libsamplerate0-dev \&lt;br /&gt;
 qtbase5-dev libqt5sql5-mysql libsoundtouch-dev libsystemd-dev libjack-jackd2-dev libasound2-dev \&lt;br /&gt;
 libflac-dev libflac++-dev libmp3lame-dev libmad0-dev libtwolame-dev docbook5-xml libxml2-utils \&lt;br /&gt;
 docbook-xsl-ns xsltproc fop make g++ libltdl-dev autoconf automake libssl-dev libtag1-dev \&lt;br /&gt;
 qttools5-dev-tools debhelper openssh-server autoconf-archive gnupg pbuilder ubuntu-dev-tools \&lt;br /&gt;
 apt-file hpklinux-dev libmagick++-dev&lt;br /&gt;
&lt;br /&gt;
The system will present a list of packages to be installed, followed by confirmation prompt. Enter 'Y'. The system will begin downloading and installing packages. Allow it to finish.&lt;br /&gt;
&lt;br /&gt;
==Building the Code==&lt;br /&gt;
Now we're ready to build the code! In the right-hand Terminal window, run the command:&lt;br /&gt;
&lt;br /&gt;
 ./configure_build.sh&lt;br /&gt;
&lt;br /&gt;
The script will now analyze your system and print a summary of what it found. It should look something like this:&lt;br /&gt;
&lt;br /&gt;
 configure: &amp;quot;|---------------------------------------------------------|&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|         *** RIVENDELL CONFIGURATION SUMMARY ***         |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|---------------------------------------------------------|&amp;quot;&lt;br /&gt;
 configure: &amp;quot;| Platform Information:                                   |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                         Distribution Name ... Linux Mint|&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                       Distribution Family ... Debian    |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                          Update I18N Data ... No        |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                                                         |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;| Configured Audio Drivers:                               |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|  Advanced Linux Sound Architecture (ALSA) ... Yes       |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                          AudioScience HPI ... Yes       |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                 JACK Audio Connection Kit ... Yes       |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                                                         |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;| Audio Codecs:                                           |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|            FLAC Encoding/Decoding Support ... Yes       |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                     MPEG Decoding Support ... Yes       |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|             MPEG Layer 2 Encoding Support ... Yes       |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|             MPEG Layer 3 Encoding Support ... Yes       |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|       OggVorbis Encoding/Decoding Support ... Yes       |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                      M4A Decoding Support ... No        |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|---------------------------------------------------------|&amp;quot;&lt;br /&gt;
 configure: &lt;br /&gt;
 configure: &lt;br /&gt;
 configure: Now enter 'make' to build the software.&lt;br /&gt;
&lt;br /&gt;
Now, simply enter the single word 'make' and hit &amp;lt;enter&amp;gt; to start the build. Depending upon your hardware, this step could take awhile to complete.&lt;br /&gt;
&lt;br /&gt;
==Installing the Code==&lt;br /&gt;
To install and run the newly built code, run the following:&lt;br /&gt;
&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
and then check for and apply any needed database updates by doing:&lt;br /&gt;
&lt;br /&gt;
 sudo rddbmgr --modify&lt;br /&gt;
&lt;br /&gt;
And finally, start the Rivendell service by doing:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl restart apache2&lt;br /&gt;
 sudo systemctl restart rivendell&lt;br /&gt;
&lt;br /&gt;
And that's it.&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=Building_Rivendell_from_source&amp;diff=653</id>
		<title>Building Rivendell from source</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=Building_Rivendell_from_source&amp;diff=653"/>
				<updated>2023-06-23T20:08:36Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
In most cases, the preferred way to run Rivendell is to use the pre-built packages provided by Paravel Systems. However, it can sometimes be desireable to build Rivendell directly from the source code provided by the upstream developers; such as when one wishes to test a new feature or bugfix that has been committed on GitHub but not yet released in the pre-built packages. This page provides instructions on how to go about this.&lt;br /&gt;
&lt;br /&gt;
==Caveats==&lt;br /&gt;
Builds directly from source should ''always'' be considered &amp;quot;experimental&amp;quot;. They should '''never''' be attempted on systems that are in production &amp;quot;on the air&amp;quot; use! Thus, it is '''highly''' recommended that a seperate, dedicated computer be used for such builds.&lt;br /&gt;
&lt;br /&gt;
The following instructions assume the distro environment to be Ubuntu 22.04 &amp;quot;Jammy Jellyfish&amp;quot;. The fundamental princples apply to other distros as well though; with any differences mostly being confined to using '''yum''' or '''dnf''' instead of Ubuntu's '''apt''' package management tool.  &lt;br /&gt;
&lt;br /&gt;
==Preparing the Installation Environment==&lt;br /&gt;
The first step in preparing a system to do a source build of Rivendell is to install the basic Rivendell environment by running one of the [https://wiki.rivendellaudio.org/index.php/Installing_Rivendell#Appliance_Installers Rivendell appliance installers].&lt;br /&gt;
&lt;br /&gt;
Once installation is complete, the next step is to remove the pre-built Rivendell packages. Start by opening&lt;br /&gt;
a Terminal window and then entering:&lt;br /&gt;
&lt;br /&gt;
 sudo apt purge rivendell rivendell-opsguide&lt;br /&gt;
&lt;br /&gt;
Next, download the Rivendell source code from GitHub (an operation known as 'cloning'):&lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/ElvishArtisan/rivendell&lt;br /&gt;
&lt;br /&gt;
and then move into the newly-created 'rivendell/' directory:&lt;br /&gt;
&lt;br /&gt;
 cd rivendell&lt;br /&gt;
&lt;br /&gt;
next, open a second 'Terminal' window and likewise move into the 'rivendell/' directory.&lt;br /&gt;
&lt;br /&gt;
Arrange the two windows side-by-side. In the left-hand one, view the 'INSTALL' file using the 'less' file viewer:&lt;br /&gt;
&lt;br /&gt;
 less INSTALL&lt;br /&gt;
&lt;br /&gt;
then scroll down to find the 'DISTRO-SPECIFIC NOTES' section, find the subsection for your Linux distro,&lt;br /&gt;
then the block of text within that subsection that starts with 'Environmental variables:'. In the right-hand terminal window, add the 'DOCBOOK_STYLESHEETS' variable to your environment by copy-pasting the text found in the 'Environmental variables:' subsection. For example:&lt;br /&gt;
&lt;br /&gt;
 export DOCBOOK_STYLESHEETS=/usr/share/xml/docbook/stylesheet/docbook-xsl-ns&lt;br /&gt;
 echo DOCBOOK_STYLESHEETS=/usr/share/xml/docbook/stylesheet/docbook-xsl-ns &amp;gt;&amp;gt; ~/.bashrc&lt;br /&gt;
&lt;br /&gt;
Next, find the block of text that begins with 'Required build packages:'. Copy all of the remaining text in the block, then enter 'sudo apt install ' into the right-hand window, followed by the text copied above.&lt;br /&gt;
&lt;br /&gt;
The result should look something like this:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install apache2 libexpat1-dev libexpat1 libid3-dev libcurl4-gnutls-dev libcoverart-dev libdiscid-dev libmusicbrainz5-dev libcdparanoia-dev libsndfile1-dev libpam0g-dev libvorbis-dev python3 python3-pycurl python3-pymysql python3-serial python3-requests libsamplerate0-dev qtbase5-dev libqt5sql5-mysql libsoundtouch-dev libsystemd-dev libjack-jackd2-dev libasound2-dev libflac-dev libflac++-dev libmp3lame-dev libmad0-dev libtwolame-dev docbook5-xml libxml2-utils docbook-xsl-ns xsltproc fop make g++ libltdl-dev autoconf automake libssl-dev libtag1-dev qttools5-dev-tools debhelper openssh-server autoconf-archive gnupg pbuilder ubuntu-dev-tools apt-file hpklinux-dev libmagick++-dev&lt;br /&gt;
&lt;br /&gt;
The system will present a list of packages to be installed, followed by confirmation prompt. Enter 'Y'. The system will begin downloading and installing packages. Allow it to finish.&lt;br /&gt;
&lt;br /&gt;
==Building the Code==&lt;br /&gt;
Now we're ready to build the code! In the right-hand Terminal window, run the command:&lt;br /&gt;
&lt;br /&gt;
 ./configure_build.sh&lt;br /&gt;
&lt;br /&gt;
The script will now analyze your system and print a summary of what it found. It should look something like this:&lt;br /&gt;
&lt;br /&gt;
 configure: &amp;quot;|---------------------------------------------------------|&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|         *** RIVENDELL CONFIGURATION SUMMARY ***         |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|---------------------------------------------------------|&amp;quot;&lt;br /&gt;
 configure: &amp;quot;| Platform Information:                                   |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                         Distribution Name ... Linux Mint|&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                       Distribution Family ... Debian    |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                          Update I18N Data ... No        |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                                                         |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;| Configured Audio Drivers:                               |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|  Advanced Linux Sound Architecture (ALSA) ... Yes       |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                          AudioScience HPI ... Yes       |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                 JACK Audio Connection Kit ... Yes       |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                                                         |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;| Audio Codecs:                                           |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|            FLAC Encoding/Decoding Support ... Yes       |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                     MPEG Decoding Support ... Yes       |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|             MPEG Layer 2 Encoding Support ... Yes       |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|             MPEG Layer 3 Encoding Support ... Yes       |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|       OggVorbis Encoding/Decoding Support ... Yes       |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                      M4A Decoding Support ... No        |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|---------------------------------------------------------|&amp;quot;&lt;br /&gt;
 configure: &lt;br /&gt;
 configure: &lt;br /&gt;
 configure: Now enter 'make' to build the software.&lt;br /&gt;
&lt;br /&gt;
Now, simply enter the single word 'make' and hit &amp;lt;enter&amp;gt; to start the build. Depending upon your hardware, this step could take awhile to complete.&lt;br /&gt;
&lt;br /&gt;
==Installing the Code==&lt;br /&gt;
To install and run the newly built code, run the following:&lt;br /&gt;
&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
and then check for and apply any needed database updates by doing:&lt;br /&gt;
&lt;br /&gt;
 sudo rddbmgr --modify&lt;br /&gt;
&lt;br /&gt;
And finally, start the Rivendell service by doing:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl restart apache2&lt;br /&gt;
 sudo systemctl restart rivendell&lt;br /&gt;
&lt;br /&gt;
And that's it.&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=Main_Page&amp;diff=652</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=Main_Page&amp;diff=652"/>
				<updated>2023-06-22T21:21:28Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''Welcome to the Rivendell Wiki'''&amp;lt;/big&amp;gt; dedicated to [http://www.rivendellaudio.org/index.shtml Rivendell]&lt;br /&gt;
&lt;br /&gt;
Here you'll find the collected wisdom of our contributors who are involved in broadcasting facilities of all shapes and sizes. ''Please feel free to contribute from your experience as well.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;'''What is Rivendell?'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rivendell is a full-featured radio automation system targeted for use in professional broadcast and media environments. It is available under the GNU General Public License. See the [http://www.rivendellaudio.org/index.shtml Rivendell Project] for a more detailed description. Browse the source code at the official [https://github.com/ GitHub] [https://github.com/ElvishArtisan/rivendell repository]. Here&amp;amp;lsquo;s a list of [[Stations_using_Rivendell|stations using Rivendell]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;'''Where is the old Wiki?'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can find an archived copy of the old Wiki on the archive.org website [https://web.archive.org/web/20170601011211/http://rivendell.tryphon.org/wiki/Main_Page here].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Evaluating Rivendell ===&lt;br /&gt;
If you are new to Rivendell, you might want to start [[Evaluating Rivendell|here]].&lt;br /&gt;
&lt;br /&gt;
Users of Rivendell versions prior to 3.0 may want to read the list of [[Notable_Differences_Between_Version_2_And_Version_3|notable differences]] between Rivendell versions 2 and 3.&lt;br /&gt;
&lt;br /&gt;
==== Should I Upgrade? ====&lt;br /&gt;
&lt;br /&gt;
You might be considering upgrading your Rivendell system. Many people live by the adage, &amp;amp;ldquo;Don&amp;amp;rsquo;t fix it if it ain&amp;amp;rsquo;t broke.&amp;amp;rdquo; On the other hand, there are sound and sensible reasons for upgrading your Rivendell installation: operating system security patches, bug fixes, performance enhancements, and improved functionality to name just a few reasons.&lt;br /&gt;
&lt;br /&gt;
[[ChangeSummary|This]] change summary lists the notable changes between all released versions of Rivendell for the past few years. The list currently goes back to version 2.10.1 (released in 2014). The [[ChangeSummary|change summary]] also shows the database version number with each release. Some Rivendell releases include no database changes and are therefore &amp;amp;ldquo;easier&amp;amp;rdquo; to upgrade. In other words, upgrading Rivendell when there is no database version change is less intrusive; you can safely upgrade individual workstations one at a time (serially) without affecting other workstations. As always, if you&amp;amp;rsquo;re unsure about upgrading, &amp;amp;ldquo;seek professional help&amp;amp;rdquo;.&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
* [[Installing Rivendell]] - How to install Rivendell on various Linux distributions.&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
* [[Hardware Compatibility Lists]] - What Soundcards, Switchers and Touchscreen Monitors work with Rivendell?&lt;br /&gt;
* [[Computers for Rivendell]] - What machines are people using to run Rivendell?&lt;br /&gt;
&lt;br /&gt;
=== Getting Help ===&lt;br /&gt;
* [[The mailing lists]] - Probably the most active area for help and discussion on Rivendell.&lt;br /&gt;
* [[IRC]] - &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;There is an Internet Relay Chat (IRC) channel setup that various people frequent for helping others with Rivendell.  Try this if you need interactive help or troubleshooting.&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[Glossary]] - A glossary of terms you may want to be familiar with in the context of Rivendell.&lt;br /&gt;
* [https://www.facebook.com/groups/1739406449620107 Facebook] - Request to join if you are a facebook user&lt;br /&gt;
&lt;br /&gt;
=== Planning ===&lt;br /&gt;
* [[Planning The Installation|Planning your installation]] - A list of things you should consider before installing Rivendell.&lt;br /&gt;
&lt;br /&gt;
=== Rivendell Setup &amp;amp; Configuration ===&lt;br /&gt;
&lt;br /&gt;
Instructions and help with the setup and configuration of Rivendell can be found [[Setup &amp;amp; Configuration | here]]&lt;br /&gt;
&lt;br /&gt;
=== Documentation ===&lt;br /&gt;
&lt;br /&gt;
You can find User and Administrator guides within the [[Documentation]] area of the wiki.  These include &amp;quot;How To&amp;quot; guides and other training material.  This can be found [[Documentation | here]]&lt;br /&gt;
&lt;br /&gt;
=== Other Useful Resources ===&lt;br /&gt;
&lt;br /&gt;
[[Other Useful Resources]] are available.  These cover areas that go beyond Rivendell.&lt;br /&gt;
&lt;br /&gt;
=== Commercial Rivendell Support ===&lt;br /&gt;
* [[Paravel Systems - USA]]&lt;br /&gt;
* [[Broadcast Tool &amp;amp;amp; Die - USA]]&lt;br /&gt;
&lt;br /&gt;
=== Hacks ===&lt;br /&gt;
* [[Rivendell Scripts and hacks on Github]]&lt;br /&gt;
* [[How To Connect Excel And Access To Rivendell Database]]&lt;br /&gt;
* [[Using Rivendell As A Video Playout System]]&lt;br /&gt;
&lt;br /&gt;
=== Coding Rivendell ===&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/ElvishArtisan/rivendell Source Code Repository on Github]&lt;br /&gt;
* [[Building Rivendell from source]]&lt;br /&gt;
* [[Coding Guidelines for Rivendell]]&lt;br /&gt;
&lt;br /&gt;
'''Outdated?'''&lt;br /&gt;
* [[Code documentation]]&lt;br /&gt;
* [[Development direction of Rivendell]]&lt;br /&gt;
* [[Compiling Rivendell Components in Windows]]&lt;br /&gt;
* [[Changing the version number for RPMs]]&lt;br /&gt;
* [[WAVE file and meta data info]]&lt;br /&gt;
&lt;br /&gt;
=== Rivendell Project History ===&lt;br /&gt;
&lt;br /&gt;
Rivendell was created by [http://www.salemradiolabs.com Salem Radio Laboratories], a division of [http://www.salem.cc Salem Communications], a national network of Christian radio stations and program services. The main developer is now at [http://www.paravelsystems.com Paravel Systems].&lt;br /&gt;
&lt;br /&gt;
{{Languages|Main Page}}&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=Main_Page&amp;diff=651</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=Main_Page&amp;diff=651"/>
				<updated>2023-06-22T21:18:57Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''Welcome to the Rivendell Wiki'''&amp;lt;/big&amp;gt; dedicated to [http://www.rivendellaudio.org/index.shtml Rivendell]&lt;br /&gt;
&lt;br /&gt;
Here you'll find the collected wisdom of our contributors who are involved in broadcasting facilities of all shapes and sizes. ''Please feel free to contribute from your experience as well.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;'''What is Rivendell?'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rivendell is a full-featured radio automation system targeted for use in professional broadcast and media environments. It is available under the GNU General Public License. See the [http://www.rivendellaudio.org/index.shtml Rivendell Project] for a more detailed description. Browse the source code at the official [https://github.com/ GitHub] [https://github.com/ElvishArtisan/rivendell repository]. Here&amp;amp;lsquo;s a list of [[Stations_using_Rivendell|stations using Rivendell]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;'''Where is the old Wiki?'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can find an archived copy of the old Wiki on the archive.org website [https://web.archive.org/web/20170601011211/http://rivendell.tryphon.org/wiki/Main_Page here].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Evaluating Rivendell ===&lt;br /&gt;
If you are new to Rivendell, you might want to start [[Evaluating Rivendell|here]].&lt;br /&gt;
&lt;br /&gt;
Users of Rivendell versions prior to 3.0 may want to read the list of [[Notable_Differences_Between_Version_2_And_Version_3|notable differences]] between Rivendell versions 2 and 3.&lt;br /&gt;
&lt;br /&gt;
==== Should I Upgrade? ====&lt;br /&gt;
&lt;br /&gt;
You might be considering upgrading your Rivendell system. Many people live by the adage, &amp;amp;ldquo;Don&amp;amp;rsquo;t fix it if it ain&amp;amp;rsquo;t broke.&amp;amp;rdquo; On the other hand, there are sound and sensible reasons for upgrading your Rivendell installation: operating system security patches, bug fixes, performance enhancements, and improved functionality to name just a few reasons.&lt;br /&gt;
&lt;br /&gt;
[[ChangeSummary|This]] change summary lists the notable changes between all released versions of Rivendell for the past few years. The list currently goes back to version 2.10.1 (released in 2014). The [[ChangeSummary|change summary]] also shows the database version number with each release. Some Rivendell releases include no database changes and are therefore &amp;amp;ldquo;easier&amp;amp;rdquo; to upgrade. In other words, upgrading Rivendell when there is no database version change is less intrusive; you can safely upgrade individual workstations one at a time (serially) without affecting other workstations. As always, if you&amp;amp;rsquo;re unsure about upgrading, &amp;amp;ldquo;seek professional help&amp;amp;rdquo;.&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
* [[Installing Rivendell]] - How to install Rivendell on various Linux distributions (updated July, 2021).&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
* [[Hardware Compatibility Lists]] - What Soundcards, Switchers and Touchscreen Monitors work with Rivendell?&lt;br /&gt;
* [[Computers for Rivendell]] - What machines are people using to run Rivendell?&lt;br /&gt;
&lt;br /&gt;
=== Getting Help ===&lt;br /&gt;
* [[The mailing lists]] - Probably the most active area for help and discussion on Rivendell.&lt;br /&gt;
* [[IRC]] - &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;There is an Internet Relay Chat (IRC) channel setup that various people frequent for helping others with Rivendell.  Try this if you need interactive help or troubleshooting.&amp;lt;/span&amp;gt;&lt;br /&gt;
* [[Glossary]] - A glossary of terms you may want to be familiar with in the context of Rivendell.&lt;br /&gt;
* [https://www.facebook.com/groups/1739406449620107 Facebook] - Request to join if you are a facebook user&lt;br /&gt;
&lt;br /&gt;
=== Planning ===&lt;br /&gt;
* [[Planning The Installation|Planning your installation]] - A list of things you should consider before installing Rivendell.&lt;br /&gt;
&lt;br /&gt;
=== Rivendell Setup &amp;amp; Configuration ===&lt;br /&gt;
&lt;br /&gt;
Instructions and help with the setup and configuration of Rivendell can be found [[Setup &amp;amp; Configuration | here]]&lt;br /&gt;
&lt;br /&gt;
=== Documentation ===&lt;br /&gt;
&lt;br /&gt;
You can find User and Administrator guides within the [[Documentation]] area of the wiki.  These include &amp;quot;How To&amp;quot; guides and other training material.  This can be found [[Documentation | here]]&lt;br /&gt;
&lt;br /&gt;
=== Other Useful Resources ===&lt;br /&gt;
&lt;br /&gt;
[[Other Useful Resources]] are available.  These cover areas that go beyond Rivendell.&lt;br /&gt;
&lt;br /&gt;
=== Commercial Rivendell Support ===&lt;br /&gt;
* [[Paravel Systems - USA]]&lt;br /&gt;
* [[Broadcast Tool &amp;amp;amp; Die - USA]]&lt;br /&gt;
&lt;br /&gt;
=== Hacks ===&lt;br /&gt;
* [[Rivendell Scripts and hacks on Github]]&lt;br /&gt;
* [[How To Connect Excel And Access To Rivendell Database]]&lt;br /&gt;
* [[Using Rivendell As A Video Playout System]]&lt;br /&gt;
&lt;br /&gt;
=== Coding Rivendell ===&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/ElvishArtisan/rivendell Source Code Repository on Github]&lt;br /&gt;
* [[Building Rivendell from source]]&lt;br /&gt;
* [[Coding Guidelines for Rivendell]]&lt;br /&gt;
&lt;br /&gt;
'''Outdated?'''&lt;br /&gt;
* [[Code documentation]]&lt;br /&gt;
* [[Development direction of Rivendell]]&lt;br /&gt;
* [[Compiling Rivendell Components in Windows]]&lt;br /&gt;
* [[Changing the version number for RPMs]]&lt;br /&gt;
* [[WAVE file and meta data info]]&lt;br /&gt;
&lt;br /&gt;
=== Rivendell Project History ===&lt;br /&gt;
&lt;br /&gt;
Rivendell was created by [http://www.salemradiolabs.com Salem Radio Laboratories], a division of [http://www.salem.cc Salem Communications], a national network of Christian radio stations and program services. The main developer is now at [http://www.paravelsystems.com Paravel Systems].&lt;br /&gt;
&lt;br /&gt;
{{Languages|Main Page}}&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=Coding_Guidelines_for_Rivendell&amp;diff=650</id>
		<title>Coding Guidelines for Rivendell</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=Coding_Guidelines_for_Rivendell&amp;diff=650"/>
				<updated>2023-06-22T21:09:15Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: Replaced content with &amp;quot;Please see the [https://github.com/ElvishArtisan/rivendell/blob/v4/CODINGSTYLE CODINGSTYLE] file in the base directory of the Rivendell source code for information on the...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please see the [https://github.com/ElvishArtisan/rivendell/blob/v4/CODINGSTYLE CODINGSTYLE] file in the base directory of the Rivendell source code for information on the procedures and formatting for submitting changes.&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=The_mailing_lists&amp;diff=649</id>
		<title>The mailing lists</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=The_mailing_lists&amp;diff=649"/>
				<updated>2023-06-22T20:46:27Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [https://groups.io/g/Rivendell Rivendell mailing list] at [https://groups.io/ groups.io] is a good place to get help on Rivendell, with both developers and users maintaining an active presence there.&lt;br /&gt;
&lt;br /&gt;
The Rivendell google groups at [http://groups.google.com/group/rivendell-dev rivendell-dev] (covering Mar 2007 to April 2012) and [http://groups.google.com/group/rivendell-programmer rivendell-programmer] contain archives of the previous Rivendell mailing lists (covering Mar 2007 to September 2022.&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=Building_Rivendell_from_source&amp;diff=648</id>
		<title>Building Rivendell from source</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=Building_Rivendell_from_source&amp;diff=648"/>
				<updated>2023-06-22T20:36:15Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
In most cases, the preferred way to run Rivendell is to use the pre-built packages provided by Paravel Systems. However, it can sometimes be desireable to build Rivendell directly from the source code provided by the upstream developers; such as when one wishes to test a new feature or bugfix that has been committed on GitHub but not yet released in the pre-built packages. This page provides instructions on how to go about this.&lt;br /&gt;
&lt;br /&gt;
==Caveats==&lt;br /&gt;
Builds directly from source should ''always'' be considered &amp;quot;experimental&amp;quot;. They should '''never''' be attempted on systems that are in production &amp;quot;on the air&amp;quot; use! Thus, it is '''highly''' recommended that a seperate, dedicated computer be used for such builds.&lt;br /&gt;
&lt;br /&gt;
The following instructions assume the distro environment to be Ubuntu 22.04 &amp;quot;Jammy Jellyfish&amp;quot;. The fundamental princples apply to other distros as well though; with any differences mostly being confined to using '''yum''' or '''dnf''' instead of Ubuntu's '''apt''' package management tool.  &lt;br /&gt;
&lt;br /&gt;
==Preparing the Installation Environment==&lt;br /&gt;
The first step in preparing a system to do a source build of Rivendell is to install the basic Rivendell environment by running one of the [https://wiki.rivendellaudio.org/index.php/Installing_Rivendell#Appliance_Installers Rivendell appliance installers].&lt;br /&gt;
&lt;br /&gt;
Once installation is complete, the next step is to remove the pre-built Rivendell packages. Start by opening&lt;br /&gt;
a Terminal window and then entering:&lt;br /&gt;
&lt;br /&gt;
 sudo apt purge rivendell rivendell-opsguide&lt;br /&gt;
&lt;br /&gt;
Next, download the Rivendell source code from GitHub (an operation known as 'cloning'):&lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/ElvishArtisan/rivendell&lt;br /&gt;
&lt;br /&gt;
and then move into the newly-created 'rivendell/' directory:&lt;br /&gt;
&lt;br /&gt;
 cd rivendell&lt;br /&gt;
&lt;br /&gt;
next, open a second 'Terminal' window and likewise move into the 'rivendell/' directory.&lt;br /&gt;
&lt;br /&gt;
Arrange the two windows side-by-side. In the left-hand one, view the 'INSTALL' file using the 'less' file viewer:&lt;br /&gt;
&lt;br /&gt;
 less INSTALL&lt;br /&gt;
&lt;br /&gt;
then scroll down to find the 'DISTRO-SPECIFIC NOTES' section, find the subsection for your Linux distro,&lt;br /&gt;
then the block of text within that subsection that starts with 'Environmental variables:'. In the right-hand terminal window, add the 'DOCBOOK_STYLESHEETS' variable to your environment by copy-pasting the text found in the 'Environmental variables:' subsection. For example:&lt;br /&gt;
&lt;br /&gt;
 export DOCBOOK_STYLESHEETS=/usr/share/xml/docbook/stylesheet/docbook-xsl-ns&lt;br /&gt;
 echo DOCBOOK_STYLESHEETS=/usr/share/xml/docbook/stylesheet/docbook-xsl-ns &amp;gt;&amp;gt; ~/.bashrc&lt;br /&gt;
&lt;br /&gt;
Next, find the block of text that begins with 'Required build packages:'. Copy all of the remaining text in the block, then enter 'sudo apt install ' into the right-hand window, followed by the text copied above.&lt;br /&gt;
&lt;br /&gt;
The result should look something like this:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install apache2 libexpat1-dev libexpat1 libid3-dev libcurl4-gnutls-dev libcoverart-dev libdiscid-dev libmusicbrainz5-dev libcdparanoia-dev libsndfile1-dev libpam0g-dev libvorbis-dev python3 python3-pycurl python3-pymysql python3-serial python3-requests libsamplerate0-dev qtbase5-dev libqt5sql5-mysql libsoundtouch-dev libsystemd-dev libjack-jackd2-dev libasound2-dev libflac-dev libflac++-dev libmp3lame-dev libmad0-dev libtwolame-dev docbook5-xml libxml2-utils docbook-xsl-ns xsltproc fop make g++ libltdl-dev autoconf automake libssl-dev libtag1-dev qttools5-dev-tools debhelper openssh-server autoconf-archive gnupg pbuilder ubuntu-dev-tools apt-file hpklinux-dev libmagick++-dev&lt;br /&gt;
&lt;br /&gt;
The system will present a list of packages to be installed, followed by confirmation prompt. Enter 'Y'. The system will begin downloading and installing packages. Allow it to finish.&lt;br /&gt;
&lt;br /&gt;
==Building the Code==&lt;br /&gt;
Now we're ready to build the code! In the right-hand Terminal window, run the command:&lt;br /&gt;
&lt;br /&gt;
 ./autogen.sh&lt;br /&gt;
&lt;br /&gt;
Next, find the block of text in the 'INSTALL' file that begins with 'Configure script invocation:'. Copy the remainder of that line and paste that into the other Terminal window. It should look something like this:&lt;br /&gt;
&lt;br /&gt;
 ./configure --prefix=/usr --libdir=/usr/lib --libexecdir=/var/www/rd-bin --sysconfdir=/etc/apache2/conf-enabled --enable-rdxport-debug MUSICBRAINZ_LIBS=&amp;quot;-ldiscid -lmusicbrainz5cc -lcoverartcc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The script will now analyze your system and print a summary of what it found. It should look something like this:&lt;br /&gt;
&lt;br /&gt;
 configure: &amp;quot;|---------------------------------------------------------|&amp;quot;&lt;br /&gt;
 configure: &amp;quot;| Platform Information:                                   |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                         Distribution Name ... Linux Mint|&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                       Distribution Family ... Debian    |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                          Update I18N Data ... No        |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                                                         |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;| Configured Audio Drivers:                               |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|  Advanced Linux Sound Architecture (ALSA) ... Yes       |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                          AudioScience HPI ... Yes       |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                 JACK Audio Connection Kit ... Yes       |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                                                         |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;| Audio Codecs:                                           |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|            FLAC Encoding/Decoding Support ... Yes       |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                     MPEG Decoding Support ... Yes       |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|             MPEG Layer 2 Encoding Support ... Yes       |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|             MPEG Layer 3 Encoding Support ... Yes       |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|       OggVorbis Encoding/Decoding Support ... Yes       |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                      M4A Decoding Support ... No        |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|---------------------------------------------------------|&amp;quot;&lt;br /&gt;
 configure: &lt;br /&gt;
 configure: &lt;br /&gt;
 configure: Now enter 'make' to build the software.&lt;br /&gt;
&lt;br /&gt;
Now, simply enter the single word 'make' and hit &amp;lt;enter&amp;gt; to start the build. Depending upon your hardware, this step could take awhile to complete.&lt;br /&gt;
&lt;br /&gt;
==Installing the Code==&lt;br /&gt;
To install and run the newly built code, run the following:&lt;br /&gt;
&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
and then check for and apply any needed database updates by doing:&lt;br /&gt;
&lt;br /&gt;
 sudo rddbmgr --modify&lt;br /&gt;
&lt;br /&gt;
And finally, start the Rivendell service by doing:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl restart apache2&lt;br /&gt;
 sudo systemctl restart rivendell&lt;br /&gt;
&lt;br /&gt;
And that's it.&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=Building_Rivendell_from_source&amp;diff=647</id>
		<title>Building Rivendell from source</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=Building_Rivendell_from_source&amp;diff=647"/>
				<updated>2023-06-22T20:29:38Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
In most cases, the preferred way to run Rivendell is to use the pre-built packages provided by Paravel Systems. However, it can sometimes be desireable to build Rivendell directly from the source code provided by the upstream developers; such as when one wishes to test a new feature or bugfix that has been committed on GitHub but not yet released in the pre-built packages. This page provides instructions on how to go about this.&lt;br /&gt;
&lt;br /&gt;
==Caveats==&lt;br /&gt;
Builds directly from source should ''always'' be considered &amp;quot;experimental&amp;quot;. They should '''never''' be attempted on systems that are in production &amp;quot;on the air&amp;quot; use! Thus, it is '''highly''' recommended that a seperate, dedicated computer be used for such builds.&lt;br /&gt;
&lt;br /&gt;
==Preparing the Installation Environment==&lt;br /&gt;
The first step in preparing a system to do a source build of Rivendell is to install the basic Rivendell environment by running one of the [https://wiki.rivendellaudio.org/index.php/Installing_Rivendell#Appliance_Installers Rivendell appliance installers].&lt;br /&gt;
&lt;br /&gt;
Once installation is complete, the next step is to remove the pre-built Rivendell packages. Start by opening&lt;br /&gt;
a Terminal window and then entering:&lt;br /&gt;
&lt;br /&gt;
 sudo apt purge rivendell rivendell-opsguide&lt;br /&gt;
&lt;br /&gt;
Next, download the Rivendell source code from GitHub (an operation known as 'cloning'):&lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/ElvishArtisan/rivendell&lt;br /&gt;
&lt;br /&gt;
and then move into the newly-created 'rivendell/' directory:&lt;br /&gt;
&lt;br /&gt;
 cd rivendell&lt;br /&gt;
&lt;br /&gt;
next, open a second 'Terminal' window and likewise move into the 'rivendell/' directory.&lt;br /&gt;
&lt;br /&gt;
Arrange the two windows side-by-side. In the left-hand one, view the 'INSTALL' file using the 'less' file viewer:&lt;br /&gt;
&lt;br /&gt;
 less INSTALL&lt;br /&gt;
&lt;br /&gt;
then scroll down to find the 'DISTRO-SPECIFIC NOTES' section, find the subsection for your Linux distro,&lt;br /&gt;
then the block of text within that subsection that starts with 'Environmental variables:'. In the right-hand terminal window, add the 'DOCBOOK_STYLESHEETS' variable to your environment by copy-pasting the text found in the 'Environmental variables:' subsection. For example:&lt;br /&gt;
&lt;br /&gt;
 export DOCBOOK_STYLESHEETS=/usr/share/xml/docbook/stylesheet/docbook-xsl-ns&lt;br /&gt;
 echo DOCBOOK_STYLESHEETS=/usr/share/xml/docbook/stylesheet/docbook-xsl-ns &amp;gt;&amp;gt; ~/.bashrc&lt;br /&gt;
&lt;br /&gt;
Next, find the block of text that begins with 'Required build packages:'. Copy all of the remaining text in the block, then enter 'sudo apt install ' into the right-hand window, followed by the text copied above.&lt;br /&gt;
&lt;br /&gt;
The result should look something like this:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install apache2 libexpat1-dev libexpat1 libid3-dev libcurl4-gnutls-dev libcoverart-dev libdiscid-dev libmusicbrainz5-dev libcdparanoia-dev libsndfile1-dev libpam0g-dev libvorbis-dev python3 python3-pycurl python3-pymysql python3-serial python3-requests libsamplerate0-dev qtbase5-dev libqt5sql5-mysql libsoundtouch-dev libsystemd-dev libjack-jackd2-dev libasound2-dev libflac-dev libflac++-dev libmp3lame-dev libmad0-dev libtwolame-dev docbook5-xml libxml2-utils docbook-xsl-ns xsltproc fop make g++ libltdl-dev autoconf automake libssl-dev libtag1-dev qttools5-dev-tools debhelper openssh-server autoconf-archive gnupg pbuilder ubuntu-dev-tools apt-file hpklinux-dev libmagick++-dev&lt;br /&gt;
&lt;br /&gt;
The system will present a list of packages to be installed, followed by confirmation prompt. Enter 'Y'. The system will begin downloading and installing packages. Allow it to finish.&lt;br /&gt;
&lt;br /&gt;
==Building the Code==&lt;br /&gt;
Now we're ready to build the code! In the right-hand Terminal window, run the command:&lt;br /&gt;
&lt;br /&gt;
 ./autogen.sh&lt;br /&gt;
&lt;br /&gt;
Next, find the block of text in the 'INSTALL' file that begins with 'Configure script invocation:'. Copy the remainder of that line and paste that into the other Terminal window. It should look something like this:&lt;br /&gt;
&lt;br /&gt;
 ./configure --prefix=/usr --libdir=/usr/lib --libexecdir=/var/www/rd-bin --sysconfdir=/etc/apache2/conf-enabled --enable-rdxport-debug MUSICBRAINZ_LIBS=&amp;quot;-ldiscid -lmusicbrainz5cc -lcoverartcc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The script will now analyze your system and print a summary of what it found. It should look something like this:&lt;br /&gt;
&lt;br /&gt;
 configure: &amp;quot;|---------------------------------------------------------|&amp;quot;&lt;br /&gt;
 configure: &amp;quot;| Platform Information:                                   |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                         Distribution Name ... Linux Mint|&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                       Distribution Family ... Debian    |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                          Update I18N Data ... No        |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                                                         |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;| Configured Audio Drivers:                               |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|  Advanced Linux Sound Architecture (ALSA) ... Yes       |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                          AudioScience HPI ... Yes       |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                 JACK Audio Connection Kit ... Yes       |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                                                         |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;| Audio Codecs:                                           |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|            FLAC Encoding/Decoding Support ... Yes       |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                     MPEG Decoding Support ... Yes       |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|             MPEG Layer 2 Encoding Support ... Yes       |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|             MPEG Layer 3 Encoding Support ... Yes       |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|       OggVorbis Encoding/Decoding Support ... Yes       |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                      M4A Decoding Support ... No        |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|---------------------------------------------------------|&amp;quot;&lt;br /&gt;
 configure: &lt;br /&gt;
 configure: &lt;br /&gt;
 configure: Now enter 'make' to build the software.&lt;br /&gt;
&lt;br /&gt;
Now, simply enter the single word 'make' and hit &amp;lt;enter&amp;gt; to start the build. Depending upon your hardware, this step could take awhile to complete.&lt;br /&gt;
&lt;br /&gt;
==Installing the Code==&lt;br /&gt;
To install and run the newly built code, run the following:&lt;br /&gt;
&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
and then check for and apply any needed database updates by doing:&lt;br /&gt;
&lt;br /&gt;
 sudo rddbmgr --modify&lt;br /&gt;
&lt;br /&gt;
And finally, start the Rivendell service by doing:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl restart apache2&lt;br /&gt;
 sudo systemctl restart rivendell&lt;br /&gt;
&lt;br /&gt;
And that's it.&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	<entry>
		<id>http://wiki.rivendellaudio.org/index.php?title=Building_Rivendell_from_source&amp;diff=646</id>
		<title>Building Rivendell from source</title>
		<link rel="alternate" type="text/html" href="http://wiki.rivendellaudio.org/index.php?title=Building_Rivendell_from_source&amp;diff=646"/>
				<updated>2023-06-22T20:29:01Z</updated>
		
		<summary type="html">&lt;p&gt;ElvishArtisan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
In most cases, the preferred way to run Rivendell is to use the pre-built packages provided by Paravel Systems. However, it can sometimes be desireable to build Rivendell directly from the source code provided by the upstream developers; such as when one wishes to test a new feature or bugfix that has been committed on GitHub but not yet released in the pre-built packages. This page provides instructions on how to go about this.&lt;br /&gt;
&lt;br /&gt;
==Caveats==&lt;br /&gt;
Builds directly from source should ''always'' be considered &amp;quot;experimental&amp;quot;. They should '''never''' be attempted on systems that are in production &amp;quot;on the air&amp;quot; use! Thus, it is '''highly''' recommended that a seperate, dedicated computer be used for such builds.&lt;br /&gt;
&lt;br /&gt;
==Preparing the Installation Environment==&lt;br /&gt;
The first step in preparing a system to do a source build of Rivendell is to install the basic Rivendell environment by running one of the [https://wiki.rivendellaudio.org/index.php/Installing_Rivendell#Appliance_Installers Rivendell appliance installers].&lt;br /&gt;
&lt;br /&gt;
Once installation is complete, the next step is to remove the pre-built Rivendell packages. Start by opening&lt;br /&gt;
a 'Terminal window and then entering:&lt;br /&gt;
&lt;br /&gt;
 sudo apt purge rivendell rivendell-opsguide&lt;br /&gt;
&lt;br /&gt;
Next, download the Rivendell source code from GitHub (an operation known as 'cloning'):&lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/ElvishArtisan/rivendell&lt;br /&gt;
&lt;br /&gt;
and then move into the newly-created 'rivendell/' directory:&lt;br /&gt;
&lt;br /&gt;
 cd rivendell&lt;br /&gt;
&lt;br /&gt;
next, open a second 'Terminal' window and likewise move into the 'rivendell/' directory.&lt;br /&gt;
&lt;br /&gt;
Arrange the two windows side-by-side. In the left-hand one, view the 'INSTALL' file using the 'less' file viewer:&lt;br /&gt;
&lt;br /&gt;
 less INSTALL&lt;br /&gt;
&lt;br /&gt;
then scroll down to find the 'DISTRO-SPECIFIC NOTES' section, find the subsection for your Linux distro,&lt;br /&gt;
then the block of text within that subsection that starts with 'Environmental variables:'. In the right-hand terminal window, add the 'DOCBOOK_STYLESHEETS' variable to your environment by copy-pasting the text found in the 'Environmental variables:' subsection. For example:&lt;br /&gt;
&lt;br /&gt;
 export DOCBOOK_STYLESHEETS=/usr/share/xml/docbook/stylesheet/docbook-xsl-ns&lt;br /&gt;
 echo DOCBOOK_STYLESHEETS=/usr/share/xml/docbook/stylesheet/docbook-xsl-ns &amp;gt;&amp;gt; ~/.bashrc&lt;br /&gt;
&lt;br /&gt;
Next, find the block of text that begins with 'Required build packages:'. Copy all of the remaining text in the block, then enter 'sudo apt install ' into the right-hand window, followed by the text copied above.&lt;br /&gt;
&lt;br /&gt;
The result should look something like this:&lt;br /&gt;
&lt;br /&gt;
 sudo apt install apache2 libexpat1-dev libexpat1 libid3-dev libcurl4-gnutls-dev libcoverart-dev libdiscid-dev libmusicbrainz5-dev libcdparanoia-dev libsndfile1-dev libpam0g-dev libvorbis-dev python3 python3-pycurl python3-pymysql python3-serial python3-requests libsamplerate0-dev qtbase5-dev libqt5sql5-mysql libsoundtouch-dev libsystemd-dev libjack-jackd2-dev libasound2-dev libflac-dev libflac++-dev libmp3lame-dev libmad0-dev libtwolame-dev docbook5-xml libxml2-utils docbook-xsl-ns xsltproc fop make g++ libltdl-dev autoconf automake libssl-dev libtag1-dev qttools5-dev-tools debhelper openssh-server autoconf-archive gnupg pbuilder ubuntu-dev-tools apt-file hpklinux-dev libmagick++-dev&lt;br /&gt;
&lt;br /&gt;
The system will present a list of packages to be installed, followed by confirmation prompt. Enter 'Y'. The system will begin downloading and installing packages. Allow it to finish.&lt;br /&gt;
&lt;br /&gt;
==Building the Code==&lt;br /&gt;
Now we're ready to build the code! In the right-hand Terminal window, run the command:&lt;br /&gt;
&lt;br /&gt;
 ./autogen.sh&lt;br /&gt;
&lt;br /&gt;
Next, find the block of text in the 'INSTALL' file that begins with 'Configure script invocation:'. Copy the remainder of that line and paste that into the other Terminal window. It should look something like this:&lt;br /&gt;
&lt;br /&gt;
 ./configure --prefix=/usr --libdir=/usr/lib --libexecdir=/var/www/rd-bin --sysconfdir=/etc/apache2/conf-enabled --enable-rdxport-debug MUSICBRAINZ_LIBS=&amp;quot;-ldiscid -lmusicbrainz5cc -lcoverartcc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The script will now analyze your system and print a summary of what it found. It should look something like this:&lt;br /&gt;
&lt;br /&gt;
 configure: &amp;quot;|---------------------------------------------------------|&amp;quot;&lt;br /&gt;
 configure: &amp;quot;| Platform Information:                                   |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                         Distribution Name ... Linux Mint|&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                       Distribution Family ... Debian    |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                          Update I18N Data ... No        |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                                                         |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;| Configured Audio Drivers:                               |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|  Advanced Linux Sound Architecture (ALSA) ... Yes       |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                          AudioScience HPI ... Yes       |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                 JACK Audio Connection Kit ... Yes       |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                                                         |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;| Audio Codecs:                                           |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|            FLAC Encoding/Decoding Support ... Yes       |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                     MPEG Decoding Support ... Yes       |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|             MPEG Layer 2 Encoding Support ... Yes       |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|             MPEG Layer 3 Encoding Support ... Yes       |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|       OggVorbis Encoding/Decoding Support ... Yes       |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|                      M4A Decoding Support ... No        |&amp;quot;&lt;br /&gt;
 configure: &amp;quot;|---------------------------------------------------------|&amp;quot;&lt;br /&gt;
 configure: &lt;br /&gt;
 configure: &lt;br /&gt;
 configure: Now enter 'make' to build the software.&lt;br /&gt;
&lt;br /&gt;
Now, simply enter the single word 'make' and hit &amp;lt;enter&amp;gt; to start the build. Depending upon your hardware, this step could take awhile to complete.&lt;br /&gt;
&lt;br /&gt;
==Installing the Code==&lt;br /&gt;
To install and run the newly built code, run the following:&lt;br /&gt;
&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
and then check for and apply any needed database updates by doing:&lt;br /&gt;
&lt;br /&gt;
 sudo rddbmgr --modify&lt;br /&gt;
&lt;br /&gt;
And finally, start the Rivendell service by doing:&lt;br /&gt;
&lt;br /&gt;
 sudo systemctl restart apache2&lt;br /&gt;
 sudo systemctl restart rivendell&lt;br /&gt;
&lt;br /&gt;
And that's it.&lt;/div&gt;</summary>
		<author><name>ElvishArtisan</name></author>	</entry>

	</feed>