<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Stream of Consciousness &#187; Dreamland Blues Radio</title>
	<atom:link href="http://www.streamingmeemee.com/index.php/category/dreamland-blues-radio/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.streamingmeemee.com</link>
	<description>Digital Media and whatever else flows through my head...</description>
	<lastBuildDate>Mon, 06 Feb 2012 14:23:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Normalizing audio levels (or, what happens when you assume&#8230;)</title>
		<link>http://www.dreamlandblues.com/normalizing-audio-levels-or-what-happens-when-you-assume</link>
		<comments>http://www.dreamlandblues.com/normalizing-audio-levels-or-what-happens-when-you-assume#comments</comments>
		<pubDate>Fri, 01 Jan 2010 22:20:54 +0000</pubDate>
		<dc:creator><span property="dc:creator" resource="http://www.dreamlandblues.com/normalizing-audio-levels-or-what-happens-when-you-assume">TimC</span></dc:creator>
				<category><![CDATA[Digital Media]]></category>
		<category><![CDATA[Dreamland Blues Radio]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[A long time ago...  in a digital media file library far away...  I was SURE that I had gone through my entire library and performed level 'normalization'.
read more]]></description>
			<content:encoded><![CDATA[<p>A long time ago...  in a digital media file library far away...  I was SURE that I had gone through my entire library and performed level 'normalization'.</p>
<p><a href="http://www.dreamlandblues.com/normalizing-audio-levels-or-what-happens-when-you-assume">read more</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.streamingmeemee.com/index.php/2010/01/01/normalizing-audio-levels-or-what-happens-when-you-assume/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Build a Live365 station using Linux – Part 2 (Song Data)</title>
		<link>http://www.streamingmeemee.com/index.php/2009/12/26/build-a-live365-station-using-linux-%e2%80%93-part-2-song-data/</link>
		<comments>http://www.streamingmeemee.com/index.php/2009/12/26/build-a-live365-station-using-linux-%e2%80%93-part-2-song-data/#comments</comments>
		<pubDate>Sat, 26 Dec 2009 19:34:12 +0000</pubDate>
		<dc:creator><span property="dc:creator" resource="http://www.streamingmeemee.com/index.php/2009/12/26/build-a-live365-station-using-linux-%e2%80%93-part-2-song-data/">streamingmeemee</span></dc:creator>
				<category><![CDATA[Digital Media]]></category>
		<category><![CDATA[Dreamland Blues Radio]]></category>

		<guid isPermaLink="false">http://www.streamingmeemee.com/?p=434</guid>
		<description><![CDATA[In the first part of this series I explained how to build and configure the Music Player Daemon (MPD) for use with Live365. In this installment I&#8217;ll describe how to send the song metadata (Title, Artist, Album). This is a requirement for &#8216;live&#8217; mode broadcasters; if you do not send this data your station will&#8230;]]></description>
			<content:encoded><![CDATA[<div class="fbconnect_head_share" style=""><fb:like layout="box_count" font="arial" href="http://www.streamingmeemee.com/index.php/2009/12/26/build-a-live365-station-using-linux-%e2%80%93-part-2-song-data/"></fb:like><br/><br/><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.streamingmeemee.com/index.php/2009/12/26/build-a-live365-station-using-linux-%e2%80%93-part-2-song-data/" data-text="Build a Live365 station using Linux – Part 2 (Song Data)" data-count="vertical" data-via="streamingmeemee" data-lang="en"></a><br/><br/><fb:share-button class="url" type="box_count" href="http://www.streamingmeemee.com/index.php/2009/12/26/build-a-live365-station-using-linux-%e2%80%93-part-2-song-data/" /></div>
<p>In the <a href="http://www.streamingmeemee.com/index.php/2009/12/25/build-a-live365-station-using-linux-part-1/" target="_blank">first part of this series</a> I explained how to build and configure the <a href="http://mpd.wikia.com/wiki/Music_Player_Daemon_Wiki" target="_blank">Music Player Daemon</a> (MPD) for use with <a href="http://www.live365.com" target="_blank">Live365</a>.  In this installment I&#8217;ll describe how to send the song metadata (Title, Artist, Album).  This is a requirement for &#8216;live&#8217; mode broadcasters; if you do not send this data your station will not be listed in the directory.</p>
<p>When you run a Live365 station in &#8216;basic&#8217; mode they pull the song metadata directly from the ID3 tags in your MP3 files.  Most MP3 streams include this info. within the stream itself so that it can be displayed by the player software.  Live365 does not extract this data from the stream you feed to them.  Live365 provides an API (application program interface) that allows you to feed the data to them separate from the music stream.<br />
<span id="more-434"></span></p>
<h3>Feeding the Metadata</h3>
<p>The tricky bit is synchronizing the metadata feed with the music feed.  Ideally, this would be done from within the music player directly but unfortunately MPD has no ability to do this; we&#8217;ll have to write something ourselves.  The process will involve extracting the current track information from MPD and then relaying that to Live365 via the &#8216;add-song&#8217; API.  I&#8217;ve written a PERL script to handle this; you can find the complete script <a href="http://www.streamingmeemee.com/files/mpdfeed-latest.zip">here</a>.</p>
<p>You&#8217;ll need a few PERL modules to accomplish the task at hand (all are available via <a href="http://www.cpan.org" target="_blank">CPAN</a>):</p>
<p><a href="http://search.cpan.org/~jquelin/Audio-MPD-1.093170/lib/Audio/MPD.pm" target="_blank">Audio::MPD</a> &#8211; This is the interface to the MPD player<br />
<a href="http://search.cpan.org/~gaas/URI-1.51/URI/Escape.pm" target="_blank">URI::Escape</a> &#8211; Encodes text suitable for inclusion in a URL<br />
<a href="http://search.cpan.org/~smueller/Data-Dumper-2.125/Dumper.pm" target="_blank">Data::Dumper</a> &#8211; Useful for debugging</p>
<h3>Dissect the Code (please, be kind)</h3>
<p>First off, let&#8217;s get the necessary modules called in:</p>
<pre class="brush: perl; first-line: 1; title: ; notranslate">
#!/usr/bin/perl -w
#----------------------------------------------
# MPDFeed - Update Live365 with track info as it is
#           played by MPD.
#
# 2009-dec-6 - TimC v0.1
#       First Go
#       TODO: Need to check return values from Login and AddSong and act appropriately.
#----------------------------------------------
use Audio::MPD;
use LWP;

use URI::Escape;

use Data::Dumper;

use strict;
</pre>
<p>Next, we&#8217;ll define some global variables and constants:</p>
<pre class="brush: perl; first-line: 18; title: ; notranslate">
#-------------------
# G L O B A L S
#-------------------
my $MPDHOST = 'localhost';	# hostname or IP of machine running MPD
my $VOLUME = 90;        # Playback volume
my $REPEAT = 1;         # repeat is ACTIVE
my $RANDOM = 1;         # random is ACTIVE
my $XFADE = 5;          # crossfade time is 5s

my $mpd;

my $L365_LOGIN_URI = 'http://www.live365.com/cgi-bin/api_login.cgi';
my $L365_NP_URI = 'http://www.live365.com/cgi-bin/add_song.cgi';
my $L365_USER = 'YOUR_LIVE365_USERNAME';
my $L365_PW = 'YOUR_LIVE365_PASSWORD';

my $DEBUG = 0;

my $browser;            # LWP::UserAgent;
my $session_id;         # Live365 API login session ID
</pre>
<p>You&#8217;ll need to update $L365_USER and $L365_PW appropriatly for your Live365 account.  These are the same values you use when you login directly to the Live365 website.</p>
<p>If you wish to see the nitty-gritty details of the scripts operation you can enable the DEBUG flag by setting it to 1;</p>
<p>Let&#8217;s look at the song info. update routine:</p>
<pre class="brush: perl; first-line: 39; title: ; notranslate">
#---------------------
sub Live365NowPlaying($$$$$)
#---------------------
{
my $title = shift;
my $artist = shift;
my $album = shift;
my $duration = shift;
my $filename = shift;

my $url = '';
my $resp = '';

  unless ($browser) {
   $browser = LWP::UserAgent-&gt;new;
   $browser-&gt;agent(&quot;MPDFeed/0.1 &quot;);
  }

  if ($DEBUG) {
    print 'Tit: [' . $title . ']  Art:[' . $artist . ']  Alb:[' . $album . ']  Dur:[' . $duration . ']  FN:[' . $filename . &quot;]\n&quot;;
  }

  $url = $L365_NP_URI . '?version=2&amp;charset=UTF-8'. '&amp;member_name=' . $L365_USER . '&amp;password=' . $L365_PW;
  if ($title) { $url .= '&amp;title=' . uri_escape($title); }
  if ($artist) { $url .= '&amp;artist=' . uri_escape($artist); }
  if ($album) { $url .= '&amp;album=' . uri_escape($album); }
  if ($filename) { $url .= '&amp;fileName=' . uri_escape($filename); }
  if ($duration) { $url .= '&amp;seconds=' . $duration; } else { $url .= '&amp;seconds=120'; }

  if ($DEBUG) { print 'L365: [' . $url . &quot;]\n&quot;; }

  $resp = $browser-&gt;get($url);
  if ($DEBUG) { print 'L365 resp:[' . $resp-&gt;content . &quot;]\n&quot;; }
  die &quot;Couldn't get $url&quot;. ':' . $resp-&gt;status_line . &quot;\n&quot; unless $resp-&gt;is_success;

  if ($DEBUG) { print 'Headers:[ ' . $resp-&gt;headers_as_string() . &quot;]\n&quot;; }

  return 1;
}
</pre>
<p>First, it creates $browser object if necessary.  It then assembles the API URL from the available info.  It starts with the basic API URL and then adds on the track title, artist, album, filename and duration.  The duration data is important as it is provided to the Live365 listener&#8217;s player to tell it when to update the current song display (album art, title, etc.).  If the duration data isn&#8217;t available I send along a default of 2 minutes so that the player will check back for the next track.</p>
<h3>The importance of being Ernest (who the heck is &#8216;Ernest&#8217; anyway?)</h3>
<p>It is important to supply track title, artist and album info to Live365 as this is what they use to determine if your stream is DMCA compliant.  If any of these fields are missing or incorrect the result may be the dreaded &#8216;de-listing&#8217; notice.  We get this data from MPD a bit later in the script, but MPD gets it from the ID3 tags within the audio files so it is vitally important that you review and correct these tags before you begin streaming.</p>
<p>I&#8217;m going to skip describing the DisplayStatus() routine &#8212; it&#8217;s operation is obvious.</p>
<p>Let&#8217;s jump down to the mainline of the script:</p>
<pre class="brush: perl; first-line: 102; title: ; notranslate">
#-------------------
# M A I N
#-------------------
my $ver = '';
my $mpd_status;
my $mpd_time;
my $mpd_song;
my $time_remain;
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst);

  $mpd = Audio::MPD-&gt;new(host=&gt;$MPDHOST);
  unless ($mpd) { die &quot;*E* Unable to connect to MPD running on $MPDHOST.\n&quot;; }

  $ver = $mpd-&gt;version();

  print &quot;MPD Version is: [$ver]\n&quot;;

# - set the correct volume
  $mpd-&gt;volume($VOLUME);

# - set the playback parms
  $mpd-&gt;repeat($REPEAT);

# - set the 'shuffle' mode
  $mpd-&gt;random($RANDOM);

# - set the crossfade parms
  $mpd-&gt;fade($XFADE);

# - Get the current status
  $mpd_status = $mpd-&gt;status();

  DisplayStatus($mpd_status);
</pre>
<h3>Loopty-Loop</h3>
<p>We connect to the MPD daemon and then set several playback options.  The &#8216;volume&#8217; doesn&#8217;t impact the stream but it does set the level for local playback.  We then grab the current status and display it on the console.  We then enter into an endless loop:</p>
<pre class="brush: perl; first-line: 135; title: ; notranslate">
# - Loop forever
  while (1) {
    $mpd_status = $mpd-&gt;status();
    $mpd_song = $mpd-&gt;song();
    ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
    printf &quot;%4d-%02d-%02d %02d:%02d:%02d: &quot;,$year+1900,$mon+1,$mday,$hour,$min,$sec;

    if ($mpd_status-&gt;state() eq 'play') {
      print &quot;Playing: [&quot; . $mpd_song-&gt;title() . &quot;]:[&quot; . $mpd_song-&gt;artist() . &quot;]:[&quot; . $mpd_song-&gt;album() . &quot;]:[&quot; . $mpd_song-&gt;file()
 . &quot;]:[&quot; . $mpd_status-&gt;audio() . &quot;]\n&quot;;

      $mpd_time = $mpd_status-&gt;time();
      $time_remain = abs( $mpd_time-&gt;seconds_left() );          # abs() to avoid negative values
      if ($DEBUG) { print &quot;time remaining: [&quot; . $time_remain . &quot;] seconds]\n&quot;; }

      Live365NowPlaying($mpd_song-&gt;title(), $mpd_song-&gt;artist(), $mpd_song-&gt;album(), $time_remain, $mpd_song-&gt;file());

    } else {
      print &quot;Player Stopped: Waiting 2 minutes...\n&quot;;
      $time_remain = 120;
    }

    sleep ($time_remain + 1);

    $mpd = Audio::MPD-&gt;new(host=&gt;$MPDHOST);     # the damn thing doesn't maintain a connection -- DOH!
  }
</pre>
<p>Within the loop we grab the current player status and currently playing song data.  If the stream is active (the daemon is in &#8216;play&#8217; state) the current song, along with a timestamp is displayed on the console.  We then pass the song data to the update routine for posting to Live365.  The script then sleeps for the remainder of the current song.  </p>
<p>If the stream is not active, the script simply waits 2 minutes before trying again.</p>
<p>Using this method we can run the script independently of the MPD daemon and it will automatically synchronize itself with the playback.</p>
<p>In the next installment I&#8217;ll describe the setup of your live station on Live365.</p>
<p>As always, you can drop questions into the comments or directly to me at dreamlandblues at frontierdigital dot com.</p>
<p><b>UPDATED 10-jan-10:</b> Fixed the code line numbering.
<div class="fbconnect_share" style="">
<div id="fblikefooter"><fb:like href="http://www.streamingmeemee.com/index.php/2009/12/26/build-a-live365-station-using-linux-%e2%80%93-part-2-song-data/" ></fb:like></div>
<div id="twittersharefooter"><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.streamingmeemee.com/index.php/2009/12/26/build-a-live365-station-using-linux-%e2%80%93-part-2-song-data/" data-text="Build a Live365 station using Linux – Part 2 (Song Data)" data-count="horizontal" data-via="streamingmeemee" data-lang="en"></a></div>
<div id="fbsendfooter"><fb:send href="http://www.streamingmeemee.com/index.php/2009/12/26/build-a-live365-station-using-linux-%e2%80%93-part-2-song-data/"></fb:send></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.streamingmeemee.com/index.php/2009/12/26/build-a-live365-station-using-linux-%e2%80%93-part-2-song-data/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Follow us on Twitter!</title>
		<link>http://www.dreamlandblues.com/follow-us-twitter</link>
		<comments>http://www.dreamlandblues.com/follow-us-twitter#comments</comments>
		<pubDate>Fri, 25 Dec 2009 20:43:15 +0000</pubDate>
		<dc:creator><span property="dc:creator" resource="http://www.dreamlandblues.com/follow-us-twitter">TimC</span></dc:creator>
				<category><![CDATA[Digital Media]]></category>
		<category><![CDATA[Dreamland Blues Radio]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[You can now follow updates to the Dreamland Blues Radio blog on Twitter.  Our twitter ID is 'dreamlandblues'.
I have other ideas about what to include in the Twitter stream but I'd love to hear your ideas.  Drop a comment or an email to dreamlandblues ...]]></description>
			<content:encoded><![CDATA[<p>You can now follow updates to the Dreamland Blues Radio blog on Twitter.  Our twitter ID is <a href='http://twitter.com/dreamlandblues'>'dreamlandblues'</a>.</p>
<p>I have other ideas about what to include in the Twitter stream but I'd love to hear your ideas.  Drop a comment or an email to dreamlandblues at frontierdigital dot com.</p>
<p>C U on the bitstream.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.streamingmeemee.com/index.php/2009/12/25/follow-us-on-twitter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Build a Live365 station using Linux &#8211; Part 1</title>
		<link>http://www.streamingmeemee.com/index.php/2009/12/25/build-a-live365-station-using-linux-part-1/</link>
		<comments>http://www.streamingmeemee.com/index.php/2009/12/25/build-a-live365-station-using-linux-part-1/#comments</comments>
		<pubDate>Fri, 25 Dec 2009 04:15:37 +0000</pubDate>
		<dc:creator><span property="dc:creator" resource="http://www.streamingmeemee.com/index.php/2009/12/25/build-a-live365-station-using-linux-part-1/">streamingmeemee</span></dc:creator>
				<category><![CDATA[Digital Media]]></category>
		<category><![CDATA[Dreamland Blues Radio]]></category>

		<guid isPermaLink="false">http://www.streamingmeemee.com/index.php/2009/12/25/build-a-live365-station-using-linux-part-1/</guid>
		<description><![CDATA[I’ve run Dreamland Blues Radio, a streaming internet radio station, since 1997. In the beginning I used WinAmp + Shoutcast streaming server on a Windows 95 machine. As the station grew in popularity and my then boss began to notice the bandwidth utilization of the R&#38;D lab outside business hours (rats!) I came to the&#8230;]]></description>
			<content:encoded><![CDATA[<div class="fbconnect_head_share" style=""><fb:like layout="box_count" font="arial" href="http://www.streamingmeemee.com/index.php/2009/12/25/build-a-live365-station-using-linux-part-1/"></fb:like><br/><br/><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.streamingmeemee.com/index.php/2009/12/25/build-a-live365-station-using-linux-part-1/" data-text="Build a Live365 station using Linux - Part 1" data-count="vertical" data-via="streamingmeemee" data-lang="en"></a><br/><br/><fb:share-button class="url" type="box_count" href="http://www.streamingmeemee.com/index.php/2009/12/25/build-a-live365-station-using-linux-part-1/" /></div>
<p>I’ve run <a href="http://www.dreamlandblues.com">Dreamland Blues Radio</a>, a streaming internet radio station, since 1997.  In the beginning I used WinAmp + Shoutcast streaming server on a Windows 95 machine.  As the station grew in popularity and my then boss began to notice the bandwidth utilization of the R&amp;D lab outside business hours (rats!) I came to the realization that I needed a more stable and scalable platform; enter <a href="http://www.live365.com">Live365</a>.</p>
<p>Of course, back then it wasn’t called Live365 (bonus points for anyone who can tell me the original name) but I was invited to preview the beta of the service – I jumped at it.  The original setup continued to use WinAmp with the Shoutcast plug-in but the feed was then sent to Live365 for audience distribution; what is now called a ‘Live’ stream.</p>
<p><span id="more-408"></span></p>
<h3>Backgound &amp; Design Goals</h3>
<p>I’ll spare you the remainder of the history lesson but suffice to say that several years ago I abandoned the ‘Live’ approach and switched to a Basic stream.  I was not happy about it but the situation at the time left little alternative.  I’ve always wanted to return to Live ‘casting.  Cross-fade to today…</p>
<p>While Windows does make for a decent enough end-user experience I consistently turn to Linux based system for automating tasks that do not require ‘carbon based processing’.<span> </span>Dreamland Blues is not a ‘live’ station in the sense that a human DJ does voice-overs, in fact my voice has never appeared on the station; the station’s goal has always been to maximize the music.<span> </span>This is a perfect fit for an automated solution.</p>
<p>My design goal for the new system was to match the functionality of my original Windows based station:</p>
<ul>
<li>Ability to feed Live365 including song metadata (Artist, Title, Album) updates.</li>
<li>Freshly generated playlist daily.  Drawn from a catalog of thousands of tracks the playlist generation system considered many factors; my rating of the track, popular rating of the track, how long it had been in the catalog, etc..  It must maintain DMCA compliance.</li>
<li>Ability to create and schedule ‘special event’ playlists.  Good examples of this are Holiday music or Artist specials.  (Sadly, in my genre this usually means memorials for a recently passed artist)</li>
<li>‘Hands off’ operation.  The entire system must be capable of running without human interaction for extended periods (weeks).</li>
</ul>
<p>I’m going to cover only the first requirement in this post; the others will follow later.</p>
<h3>Music Player Daemon (MPD)</h3>
<p>I’ve chosen to use <a href="http://mpd.wikia.com/wiki/Music_Player_Daemon_Wiki" target="_blank">MPD (Music Player Daemon</a> as the core media player for my station.<span> </span>It includes a network based control interface and a rich set of commands to control playback functions and playlist operation.  Version 0.15 of MPD supports HTTP based streaming that is necessary to feed Live365’s Nanocaster.  The one missing bit is the song metadata; MPD can feed it along with the stream in Shoutcast format but Live365 does not parse it.  I have another solution for metadata that I’ll cover later.</p>
<p>MPD is included with many Linux distributions but being the geek that I am I choose to build it from source.  As of this writing the current version is 0.15.6 and is <a href="http://sourceforge.net/projects/musicpd/files/mpd/0.15.6" target="_blank">available on SourceForge</a>.  You will find a list of dependencies <a href="http://mpd.wikia.com/wiki/Dependencies" target="_blank">here</a>.  For our purposes you need the ‘httpd’ Audio Output requirements.  You’ll also need the items from the Audio Decoding / Encoding section that match the format of your existing audio files (flac, AAC, MP3, wav, etc.).  One of the main benefits of using MPD is it&#8217;s ability to <a href="http://en.wikipedia.org/wiki/Transcode" target="_blank">transcode</a> (e.g. convert formats from FLAC to MP3) and convert <a href="http://en.wikipedia.org/wiki/Sample_rate" target="_blank">sample rates</a>.  This eliminates the need to re-encode your existing library to match the bitrate, format and sample rate of your station stream.  EPIC WIN!</p>
<pre class="brush: bash; title: ; notranslate">
mpdserver:~ # cd /usr/src/
mpdserver:/usr/src/ # wget http://downloads.sourceforge.net/project/musicpd/mpd/0.15.6/mpd-0.15.6.tar.gz
mpdserver:/usr/src/ # tar -zxvf mpd-0.15.6.tar.gz
mpdserver:/usr/src/ # cd /mpd-0.15.6
mpdserver:/usr/src/mpd-0.15.6/ # configure –enable-http
mpdserver:/usr/src/mpd-0.15.6/ # make
mpdserver:/usr/src/mpd-0.15.6/ # make install
</pre>
<h3>MPD Configuration</h3>
<p>Next, you’ll need to edit the MPD configuration file, /etc/mpd.conf.  Change the ‘music_directory’ and ‘playlist_directory’ options to point to the directories where you store you music files and your playlists respectively.</p>
<p>The key change in the config. file is to add an ‘httpd’ entry in the audio_output section.  Here is a sample:</p>
<pre class="brush: plain; title: ; notranslate">
audio_output {
    type        &quot;httpd&quot;
    name        &quot;My Awesome Station&quot;
    encoder     &quot;lame&quot;            # This is the MP3 encoder
    port        &quot;8000&quot;            # listen on this TCP port for connections
    bitrate     &quot;56&quot;              # in kbps
    format      &quot;22050:16:2&quot;      # sample rate:sample size:channels
}
</pre>
<p>You can also add a section for an ALSA or OSS device so that you may listen to the feed locally.</p>
<p>I also enabled the ReplayGain feature by these settings:</p>
<pre class="brush: plain; title: ; notranslate">
replaygain           &quot;track&quot;   # track|album
replaygain_preamp    &quot;0&quot;       # in dB
volume_normalization &quot;yes&quot;
</pre>
<h3>MPD Startup and Testing</h3>
<p>Once you’ve saved the changes you start MPD with this command:</p>
<pre class="brush: bash; title: ; notranslate">
mpdserver:/usr/src/mpd-0.15.6/ # mpd /etc/mpd.conf
</pre>
<p>MPD will automatically daemonize (move to the background) and open the control port to listen for commands.  To stop the MPD daemon:</p>
<pre class="brush: bash; title: ; notranslate">
mpdserver:/usr/src/mpd-0.15.6/ # mpd –kill
</pre>
<p>MPD will automatically start playing the playlist that was active when it was last shutdown.  If this is your first time starting MPD then it will sit idle until you load a playlist and start playback. You access these controls using one of the many MPD clients or simply telnet’ing to the control port:</p>
<pre class="brush: bash; title: ; notranslate">
mpdserver:/usr/src/mpd-0.15.6/ # telnet localhost 6600
OK MPD 0.15.0
</pre>
<p>For some reason, it identifies itself as v0.15.0 when in fact is running the v0.15.6 version.  The documentation for the various commands is available <a href="http://mpd.wikia.com/wiki/Protocol_Reference" target="_blank">here </a>.  We are interested in loading a playlist and starting playback.</p>
<pre class="brush: bash; title: ; notranslate">
mpdserver:/usr/src/mpd-0.15.6/ # telnet localhost 6600
OK MPD 0.15.0
load myplaylist
play
currentsong
</pre>
<p>The ‘currentsong’ command will display the details of the currently playing track (big surprise, eh?).</p>
<p>Now that your stream has started you can fire up your favorite stream player (VLC, iTunes, WinAmp) and listen to your stream from any computer on your network.<span> </span>The URL of the stream is: <span style="font-family: monospace;"><a href="http://ip_address_of_mpd_machine:TCP_PORT">http://ip_address_of_mpd_machine:TCP_PORT</a></span>.  Using my example above on a machine with IP address 192.168.0.12 the URL would be:</p>
<pre class="brush: plain; title: ; notranslate">

http://192.168.0.12:8000
</pre>
<p>After a few seconds of buffering you should hear you stream – hurray!</p>
<p>This is only the start; to complete your Live365 feed you’ll need to send along the metadata for the songs as they are played.  I’ll cover that in the next post.</p>
<p>If you have any questions just drop them in the comments below and I’ll address them inline.</p>
<div class="fbconnect_share" style="">
<div id="fblikefooter"><fb:like href="http://www.streamingmeemee.com/index.php/2009/12/25/build-a-live365-station-using-linux-part-1/" ></fb:like></div>
<div id="twittersharefooter"><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.streamingmeemee.com/index.php/2009/12/25/build-a-live365-station-using-linux-part-1/" data-text="Build a Live365 station using Linux - Part 1" data-count="horizontal" data-via="streamingmeemee" data-lang="en"></a></div>
<div id="fbsendfooter"><fb:send href="http://www.streamingmeemee.com/index.php/2009/12/25/build-a-live365-station-using-linux-part-1/"></fb:send></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.streamingmeemee.com/index.php/2009/12/25/build-a-live365-station-using-linux-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New site template</title>
		<link>http://www.dreamlandblues.com/new-site-template</link>
		<comments>http://www.dreamlandblues.com/new-site-template#comments</comments>
		<pubDate>Mon, 21 Dec 2009 00:40:22 +0000</pubDate>
		<dc:creator><span property="dc:creator" resource="http://www.dreamlandblues.com/new-site-template">TimC</span></dc:creator>
				<category><![CDATA[Digital Media]]></category>
		<category><![CDATA[Dreamland Blues Radio]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[I've change a few things about the site layout today.

New site template - This one is called 'Music' and is available here.
Added Live365 'now playing' badge. - I've done away with the 'now playing' widget I was using and replaced it with an o-fish-al...]]></description>
			<content:encoded><![CDATA[<p>I've change a few things about the site layout today.</p>
<ul>
<li><strong>New site template</strong> - This one is called 'Music' and is available <a href='http://prowebcreative.com/free-drupal-themes/113-music-drupal-theme'>here</a>.</li>
<li><strong>Added Live365 'now playing' badge.</strong> - I've done away with the 'now playing' widget I was using and replaced it with an o-fish-al badge widget from Live365.  It includes cover art for the currently playing track, track title and artist as well as links to play the stream.</li>
</ul>
<p><a href="http://www.dreamlandblues.com/new-site-template">read more</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.streamingmeemee.com/index.php/2009/12/20/new-site-template/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Happy Christmas!</title>
		<link>http://www.dreamlandblues.com/happy-christmas</link>
		<comments>http://www.dreamlandblues.com/happy-christmas#comments</comments>
		<pubDate>Sun, 20 Dec 2009 22:09:33 +0000</pubDate>
		<dc:creator><span property="dc:creator" resource="http://www.dreamlandblues.com/happy-christmas">TimC</span></dc:creator>
				<category><![CDATA[Digital Media]]></category>
		<category><![CDATA[Dreamland Blues Radio]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[It has been far too long since I last posted -- Life gets in the way of your hobbies sometimes. ;-)
Lots to talk about so let's get to it.
read more]]></description>
			<content:encoded><![CDATA[<p>It has been far too long since I last posted -- Life gets in the way of your hobbies sometimes. ;-)</p>
<p>Lots to talk about so let's get to it.</p>
<p><a href="http://www.dreamlandblues.com/happy-christmas">read more</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.streamingmeemee.com/index.php/2009/12/20/happy-christmas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Koko &#8216;Queen of the Blues&#8217; Taylor dies</title>
		<link>http://www.streamingmeemee.com/index.php/2009/06/03/koko-queen-of-the-blues-taylor-dies/</link>
		<comments>http://www.streamingmeemee.com/index.php/2009/06/03/koko-queen-of-the-blues-taylor-dies/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 00:16:50 +0000</pubDate>
		<dc:creator><span property="dc:creator" resource="http://www.streamingmeemee.com/index.php/2009/06/03/koko-queen-of-the-blues-taylor-dies/">streamingmeemee</span></dc:creator>
				<category><![CDATA[Dreamland Blues Radio]]></category>
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://www.streamingmeemee.com/index.php/2009/06/03/koko-queen-of-the-blues-taylor-dies/</guid>
		<description><![CDATA[No snappy headline this time&#8230; I&#8217;ve got a list&#8230;&#160; a list of legends that I want to see perform before they pass from this reality.&#160; I&#8217;ve recently taken inventor of the electric guitar and modern recording techniques Les Paul &#8212; it was in a word, amazing.&#160; I think I&#8217;m still grinning from that show. In&#8230;]]></description>
			<content:encoded><![CDATA[<div class="fbconnect_head_share" style=""><fb:like layout="box_count" font="arial" href="http://www.streamingmeemee.com/index.php/2009/06/03/koko-queen-of-the-blues-taylor-dies/"></fb:like><br/><br/><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.streamingmeemee.com/index.php/2009/06/03/koko-queen-of-the-blues-taylor-dies/" data-text="Koko 'Queen of the Blues' Taylor dies" data-count="vertical" data-via="streamingmeemee" data-lang="en"></a><br/><br/><fb:share-button class="url" type="box_count" href="http://www.streamingmeemee.com/index.php/2009/06/03/koko-queen-of-the-blues-taylor-dies/" /></div>
<p><a href="http://www.flickr.com/photos/65966179@N00/1222435833"><img style="float: left; margin-top: 10px; margin-bottom: 10px; margin-right: 10px;" src="http://farm2.static.flickr.com/1036/1222435833_8eeee05aef.jpg" width="255" height="270" /></a>No snappy headline this time&#8230;</p>
<p>I&#8217;ve got a list&#8230;&nbsp; a list of legends that I want to see perform before they pass from this reality.&nbsp; I&#8217;ve recently taken inventor of the electric guitar and modern recording techniques <a target="_blank" href="http://en.wikipedia.org/wiki/Les_Paul">Les Paul</a> &#8212; it was in a word, amazing.&nbsp; I think I&#8217;m still grinning from that show.</p>
<p>In the summer of 2007 I saw <a target="_blank" href="http://en.wikipedia.org/wiki/Koko_Taylor">Koko Taylor</a> perform at the <a target="_blank" href="http://www.lowellsummermusic.org">Lowell Summer Music Series</a>.&nbsp; Even at the ripe old age of 78 she could still belt out a tune.&nbsp; Her band was tight and the lead guitar even managed to take the term &#8216;lick&#8217; literally as he managed to <a target="_blank" href="http://www.flickr.com/photos/streamingmeemee/1348267336/sizes/l/in/set-72157601629145138/">&#8216;play&#8217; his axe with his tongue</a>!</p>
<p>I don&#8217;t think there is any doubt that Koko qualifies as a legend; her trademark song <i>Wang Dang Doodle</i> (written by Willie Dixion &#8212; yet another legend) has been covered by a diverse array of artists from Ted Nugent to Grateful Dead and PJ Harvey.</p>
<p>Her gravelly voice and powerful style were unmistakeable.&nbsp; I&#8217;m very glad to have seen her before she shuffled off her mortal coil.</p>
<p>Time to update the list&#8230;</p>
<p>You can see my <a target="_blank" href="http://www.flickr.com/photos/streamingmeemee/sets/72157601629145138/show/">photos from this show</a> on Flickr.</p>
<div class="fbconnect_share" style="">
<div id="fblikefooter"><fb:like href="http://www.streamingmeemee.com/index.php/2009/06/03/koko-queen-of-the-blues-taylor-dies/" ></fb:like></div>
<div id="twittersharefooter"><a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.streamingmeemee.com/index.php/2009/06/03/koko-queen-of-the-blues-taylor-dies/" data-text="Koko 'Queen of the Blues' Taylor dies" data-count="horizontal" data-via="streamingmeemee" data-lang="en"></a></div>
<div id="fbsendfooter"><fb:send href="http://www.streamingmeemee.com/index.php/2009/06/03/koko-queen-of-the-blues-taylor-dies/"></fb:send></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.streamingmeemee.com/index.php/2009/06/03/koko-queen-of-the-blues-taylor-dies/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Changes, they are a comin&#8217;</title>
		<link>http://www.dreamlandblues.com/changes-they-are-comin</link>
		<comments>http://www.dreamlandblues.com/changes-they-are-comin#comments</comments>
		<pubDate>Fri, 06 Feb 2009 17:39:40 +0000</pubDate>
		<dc:creator><span property="dc:creator" resource="http://www.dreamlandblues.com/changes-they-are-comin">TimC</span></dc:creator>
				<category><![CDATA[Digital Media]]></category>
		<category><![CDATA[Dreamland Blues Radio]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[These days 'Change' is all the buzz and Dreamland Blues is no exception.  Over the next few days I'll be making some significant changes to the station; I hope you'll all approve.
- Increase the bitrate to 128kbps.  This will result in a dramatic incre...]]></description>
			<content:encoded><![CDATA[<p>These days 'Change' is all the buzz and Dreamland Blues is no exception.  Over the next few days I'll be making some significant changes to the station; I hope you'll all approve.</p>
<p>- Increase the bitrate to 128kbps.  This will result in a dramatic increase in the sound quality of the station at the cost of increased internet bandwidth.  The majority of you that have 'broadband' (cable modems, FiOS, etc.) connections should have nothing to worry about.  If this renders the stream unlistenable for you please let me know.</p>
<p><a href="http://www.dreamlandblues.com/changes-they-are-comin">read more</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.streamingmeemee.com/index.php/2009/02/06/changes-they-are-a-comin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dreamland Blues back on the air</title>
		<link>http://www.dreamlandblues.com/dreamland-blues-back-air</link>
		<comments>http://www.dreamlandblues.com/dreamland-blues-back-air#comments</comments>
		<pubDate>Sun, 17 Aug 2008 15:21:12 +0000</pubDate>
		<dc:creator><span property="dc:creator" resource="http://www.dreamlandblues.com/dreamland-blues-back-air">TimC</span></dc:creator>
				<category><![CDATA[Digital Media]]></category>
		<category><![CDATA[Dreamland Blues Radio]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Sorry about that folks --  Live365 did a bit of system maintenance and it brought down my stream.
All better now!
]]></description>
			<content:encoded><![CDATA[<p>Sorry about that folks --  <a href='http://www.live365.com'>Live365</a> did a bit of system maintenance and it brought down my stream.</p>
<p>All better now!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.streamingmeemee.com/index.php/2008/08/17/dreamland-blues-back-on-the-air/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sweet Suzi &amp; The Blues Experience / Unbroken</title>
		<link>http://www.dreamlandblues.com/sweet-suzi-blues-experience-unbroken</link>
		<comments>http://www.dreamlandblues.com/sweet-suzi-blues-experience-unbroken#comments</comments>
		<pubDate>Tue, 08 Jul 2008 16:44:32 +0000</pubDate>
		<dc:creator><span property="dc:creator" resource="http://www.dreamlandblues.com/sweet-suzi-blues-experience-unbroken">TimC</span></dc:creator>
				<category><![CDATA[Digital Media]]></category>
		<category><![CDATA[Dreamland Blues Radio]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Wow! (Yes, I do say that a lot)  This is another of those wonderful surprises I get now-and-then.  The latest from NYC based Sweet Suzi Smith, Unbroken, came across my email inbox today.
read more]]></description>
			<content:encoded><![CDATA[<p><span class="inline left"><img src="http://www.dreamlandblues.com/system/files/images/sweet-suzi-unbrokenr.thumbnail.jpg" alt="Sweet Suzi &amp; The Blues Experience/Unbroken" class="image thumbnail" height="98" width="100"></span>Wow! (Yes, I do say that a lot)  This is another of those wonderful surprises I get now-and-then.  The latest from NYC based Sweet Suzi Smith, <em>Unbroken</em>, came across my email inbox today.</p>
<p><a href="http://www.dreamlandblues.com/sweet-suzi-blues-experience-unbroken">read more</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.streamingmeemee.com/index.php/2008/07/08/sweet-suzi-the-blues-experience-unbroken/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New playlist!</title>
		<link>http://www.dreamlandblues.com/new-playlist</link>
		<comments>http://www.dreamlandblues.com/new-playlist#comments</comments>
		<pubDate>Wed, 18 Jun 2008 18:05:25 +0000</pubDate>
		<dc:creator><span property="dc:creator" resource="http://www.dreamlandblues.com/new-playlist">TimC</span></dc:creator>
				<category><![CDATA[Digital Media]]></category>
		<category><![CDATA[Dreamland Blues Radio]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[I've just finished uploading the last of 584 new tracks into the Dreamland Blues Radio playlist.  This is a complete rebuild of the playlist from scratch.
I've re-encoded all the tracks and 'normalized' the levels.  What this means to you, dear listene...]]></description>
			<content:encoded><![CDATA[<p>I've just finished uploading the last of 584 new tracks into the Dreamland Blues Radio playlist.  This is a complete rebuild of the playlist from scratch.</p>
<p>I've re-encoded all the tracks and 'normalized' the levels.  What this means to you, dear listener, is a consistent volume level of all the music tracks.  I can't speak for the 'ads' because I don't control those.</p>
<p>Take a second and let me know what you think!  I value your input!</p>
<p>Thanks for listening!</p>
<p>T.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.streamingmeemee.com/index.php/2008/06/18/new-playlist/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8216;Now Playing&#8217; list in reverse order</title>
		<link>http://www.dreamlandblues.com/now-playing-list-reverse-order</link>
		<comments>http://www.dreamlandblues.com/now-playing-list-reverse-order#comments</comments>
		<pubDate>Sat, 14 Jun 2008 16:40:18 +0000</pubDate>
		<dc:creator><span property="dc:creator" resource="http://www.dreamlandblues.com/now-playing-list-reverse-order">TimC</span></dc:creator>
				<category><![CDATA[Digital Media]]></category>
		<category><![CDATA[Dreamland Blues Radio]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Yes, I know the Now Playing list is in reverse order. ;-)
I've just been too busy to have a look at fixing it.  This 'serial startup artist' stuff is really time-consuming, sleep-depriving work!
T.
]]></description>
			<content:encoded><![CDATA[<p>Yes, I know the <em>Now Playing</em> list is in reverse order. ;-)</p>
<p>I've just been too busy to have a look at fixing it.  This 'serial startup artist' stuff is really time-consuming, sleep-depriving work!</p>
<p>T.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.streamingmeemee.com/index.php/2008/06/14/now-playing-list-in-reverse-order/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Atomic Fireballs / Torch This Place</title>
		<link>http://www.dreamlandblues.com/atomic-fireballs-torch-place-0</link>
		<comments>http://www.dreamlandblues.com/atomic-fireballs-torch-place-0#comments</comments>
		<pubDate>Tue, 10 Jun 2008 14:47:48 +0000</pubDate>
		<dc:creator><span property="dc:creator" resource="http://www.dreamlandblues.com/atomic-fireballs-torch-place-0">TimC</span></dc:creator>
				<category><![CDATA[Digital Media]]></category>
		<category><![CDATA[Dreamland Blues Radio]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[WOW! I was lead to the Detroit group Atomic Fireballs by a post on one of the 'geek news' sites I frequent. I thought it odd that they would post something like this so it must be impressive. Wow.
read more]]></description>
			<content:encoded><![CDATA[<p><span class="inline left"><img src="http://www.dreamlandblues.com/system/files/images/folder.thumbnail.jpg" alt="Atomic Fireballs/Torch This Place" class="image thumbnail" height="98" width="100"></span>WOW! I was lead to the Detroit group <a href='http://www.allmusic.com/cg/amg.dll?p=amg&amp;sql=11:acfoxqejldte'>Atomic Fireballs</a> by a post on one of the <a href="http://www.boingboing.net/2008/06/09/atomic-fireballs-jum.html">'geek news'</a> sites I frequent. I thought it odd that they would post something like this so it must be impressive. Wow.</p>
<p><a href="http://www.dreamlandblues.com/atomic-fireballs-torch-place-0">read more</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.streamingmeemee.com/index.php/2008/06/10/atomic-fireballs-torch-this-place/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

