+<p><b>IMPORTANT</b>: you should read <a
+href="README.upgrades.html">README.upgrades</a> before upgrading.</p>
+
+<h2>Changes up to version 5.2</h2>
+
+<div class=section>
+
+ <h3>PulseAudio Support</h3>
+
+ <div class=section>
+
+ <p>PulseAudio is now supported, if the support library is available at
+ build time. It is the default for client applications, reflecting its
+ widespread use in desktop environments.</p>
+
+ <p>Volume setting is not currently supported when PulseAudio is in
+ use.</p>
+
+ </div>
+
+ <h3>Changes To RTP Support</h3>
+
+ <div class=section>
+
+ <p>Disobedience now has a menu to select the network playback API.</p>
+
+ <p><code>disorder-playrtp</code> now selects playback API using
+ a <code>--api</code> option. The old API-selection options remain
+ available but are deprecated and will be removed in the future.</p>
+
+ <p>RTP playback can now transmit to multiple unicast destinations, added
+ and removed on demand. This is controlled by the new <code>rtp_mode</code>
+ option. The motivating use case is a bridged network with high- and
+ low-capacity components. However it is may also be useful in a routed
+ network without multicast routing support.</p>
+
+ </div>
+
+ <h3>GStreamer support</h3>
+
+ <div class=section>
+
+ <p>If it's detected at <tt>configure</tt> time, a new decoder
+ program <tt>disorder-gstdecode</tt> is built. It uses the GStreamer
+ library for audio decoding and sample-rate conversion, among other
+ features.
+
+ <p>The decoder has a number of options for controlling the sample-rate and
+ audio format conversion, allowing various tradeoffs between quality and
+ processor time. (High-quality conversion can consume more processor time
+ than decoding, so this is potentially useful on very a small device such as
+ a Raspberry Pi.</p>
+
+ <p>The GStreamer decoder can also use ReplayGain information stored in
+ audio files' metadata to adjust playback volume, so that tracks with very
+ wide dynamic range don't sound really quiet in comparison. This
+ information can be added using tools such as <tt>mp3gain</tt>,
+ <tt>vorbisgain</tt>, or <tt>metaflac</tt>. This is turned on by default if
+ you use the decoder; you can choose between per-album or per-track
+ settings, or turn it off entirely, using command-line options.</p>
+
+ <p>The GStreamer decoder is not used by default, but it can be enabled
+ easily enough by dropping something like the following into the server
+ configuration file:
+ <pre>
+ player
+ player *.flac execraw /usr/sbin/disorder-gstdecode -ralbum -f-8.0
+ player *.mp2 execraw /usr/sbin/disorder-gstdecode -ralbum -f-8.0
+ player *.mp3 execraw /usr/sbin/disorder-gstdecode -ralbum -f-8.0
+ player *.ogg execraw /usr/sbin/disorder-gstdecode -ralbum -f-8.0
+ player *.wav execraw /usr/sbin/disorder-gstdecode -ralbum -f-8.0
+ </pre>
+ </p>
+
+ <h3>Bug fixes</h3>
+
+ <div class=section>
+
+ <ul>
+ <li>The CGI program now checks user passwords even when it runs as the
+ main jukebox user(!).</li>
+
+ <li>DisObedience doesn't crash when search terms change under its
+ feet.</li>
+
+ <li>The CGI program doesn't crash on some POST requests.
+ </ul>
+
+ </div>
+
+</div>
+
+<h2>Changes up to version 5.1.1</h2>
+
+ <div class=section>
+
+ <h3>Bug fixes</h3>
+
+ <div class=section>
+
+ <ul>
+ <li><code>player</code> and <code>tracklength</code> can now be used
+ without arguments to clear the lists, as per the documentation.</li>
+
+ <li>Tracks without a player are forgotten upon rescan.</li>
+
+ <li>The speaker process avoids splitting frames.</li>
+ </ul>
+
+ <p>Thanks to Mark Wooding and Joe Birr-Pixton.</p>
+
+ </div>
+
+ </div>
+