|
a/doc/sc2mpd.html |
|
b/doc/sc2mpd.html |
1 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
|
1 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
|
2 |
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
2 |
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
3 |
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
|
3 |
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
|
4 |
<head>
|
4 |
<head>
|
5 |
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
|
5 |
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
|
6 |
<meta name="generator" content="AsciiDoc 8.6.7" />
|
6 |
<meta name="generator" content="AsciiDoc 8.6.9" />
|
7 |
<title>sc2mpd: helper for upmpdcli Songcast support</title>
|
7 |
<title>sc2mpd: helper for upmpdcli Songcast support</title>
|
8 |
<style type="text/css">
|
8 |
<style type="text/css">
|
9 |
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */
|
9 |
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */
|
10 |
|
10 |
|
11 |
/* Default font. */
|
11 |
/* Default font. */
|
|
... |
|
... |
85 |
margin-top: 0;
|
85 |
margin-top: 0;
|
86 |
}
|
86 |
}
|
87 |
ul > li { color: #aaa; }
|
87 |
ul > li { color: #aaa; }
|
88 |
ul > li > * { color: black; }
|
88 |
ul > li > * { color: black; }
|
89 |
|
89 |
|
90 |
pre {
|
90 |
.monospaced, code, pre {
|
|
|
91 |
font-family: "Courier New", Courier, monospace;
|
|
|
92 |
font-size: inherit;
|
|
|
93 |
color: navy;
|
91 |
padding: 0;
|
94 |
padding: 0;
|
92 |
margin: 0;
|
95 |
margin: 0;
|
|
|
96 |
}
|
|
|
97 |
pre {
|
|
|
98 |
white-space: pre-wrap;
|
93 |
}
|
99 |
}
|
94 |
|
100 |
|
95 |
#author {
|
101 |
#author {
|
96 |
color: #527bbd;
|
102 |
color: #527bbd;
|
97 |
font-weight: bold;
|
103 |
font-weight: bold;
|
|
... |
|
... |
217 |
border-left: 3px solid #dddddd;
|
223 |
border-left: 3px solid #dddddd;
|
218 |
padding-left: 0.5em;
|
224 |
padding-left: 0.5em;
|
219 |
}
|
225 |
}
|
220 |
|
226 |
|
221 |
div.imageblock div.content { padding-left: 0; }
|
227 |
div.imageblock div.content { padding-left: 0; }
|
222 |
span.image img { border-style: none; }
|
228 |
span.image img { border-style: none; vertical-align: text-bottom; }
|
223 |
a.image:visited { color: white; }
|
229 |
a.image:visited { color: white; }
|
224 |
|
230 |
|
225 |
dl {
|
231 |
dl {
|
226 |
margin-top: 0.8em;
|
232 |
margin-top: 0.8em;
|
227 |
margin-bottom: 0.8em;
|
233 |
margin-bottom: 0.8em;
|
|
... |
|
... |
413 |
/*
|
419 |
/*
|
414 |
* xhtml11 specific
|
420 |
* xhtml11 specific
|
415 |
*
|
421 |
*
|
416 |
* */
|
422 |
* */
|
417 |
|
423 |
|
418 |
tt {
|
|
|
419 |
font-family: "Courier New", Courier, monospace;
|
|
|
420 |
font-size: inherit;
|
|
|
421 |
color: navy;
|
|
|
422 |
}
|
|
|
423 |
|
|
|
424 |
div.tableblock {
|
424 |
div.tableblock {
|
425 |
margin-top: 1.0em;
|
425 |
margin-top: 1.0em;
|
426 |
margin-bottom: 1.5em;
|
426 |
margin-bottom: 1.5em;
|
427 |
}
|
427 |
}
|
428 |
div.tableblock > table {
|
428 |
div.tableblock > table {
|
|
... |
|
... |
451 |
|
451 |
|
452 |
/*
|
452 |
/*
|
453 |
* html5 specific
|
453 |
* html5 specific
|
454 |
*
|
454 |
*
|
455 |
* */
|
455 |
* */
|
456 |
|
|
|
457 |
.monospaced {
|
|
|
458 |
font-family: "Courier New", Courier, monospace;
|
|
|
459 |
font-size: inherit;
|
|
|
460 |
color: navy;
|
|
|
461 |
}
|
|
|
462 |
|
456 |
|
463 |
table.tableblock {
|
457 |
table.tableblock {
|
464 |
margin-top: 1.0em;
|
458 |
margin-top: 1.0em;
|
465 |
margin-bottom: 1.5em;
|
459 |
margin-bottom: 1.5em;
|
466 |
}
|
460 |
}
|
|
... |
|
... |
537 |
}
|
531 |
}
|
538 |
|
532 |
|
539 |
@media print {
|
533 |
@media print {
|
540 |
body.manpage div#toc { display: none; }
|
534 |
body.manpage div#toc { display: none; }
|
541 |
}
|
535 |
}
|
|
|
536 |
|
|
|
537 |
|
542 |
</style>
|
538 |
</style>
|
543 |
<script type="text/javascript">
|
539 |
<script type="text/javascript">
|
544 |
/*<![CDATA[*/
|
540 |
/*<![CDATA[*/
|
545 |
var asciidoc = { // Namespace.
|
541 |
var asciidoc = { // Namespace.
|
546 |
|
542 |
|
|
... |
|
... |
743 |
<div id="preamble">
|
739 |
<div id="preamble">
|
744 |
<div class="sectionbody">
|
740 |
<div class="sectionbody">
|
745 |
<div class="paragraph"><p>The <strong>sc2mpd</strong> auxiliary process implements part of Linn <strong>Songcast</strong> support
|
741 |
<div class="paragraph"><p>The <strong>sc2mpd</strong> auxiliary process implements part of Linn <strong>Songcast</strong> support
|
746 |
for the <strong>upmdcli</strong> UPnP MPD front-end. Specifically, it implements a
|
742 |
for the <strong>upmdcli</strong> UPnP MPD front-end. Specifically, it implements a
|
747 |
<strong>Songcast</strong> <em>Receiver</em> service, managed by <strong>upmpdcli</strong>.</p></div>
|
743 |
<strong>Songcast</strong> <em>Receiver</em> service, managed by <strong>upmpdcli</strong>.</p></div>
|
|
|
744 |
<div class="paragraph"><p>To use it, you need the
|
|
|
745 |
<a href="http://www.linn.co.uk/software#songcast">Linn Songcast application</a>
|
|
|
746 |
installed on a Microsoft Windows or Apple Mac OS X PC. See
|
|
|
747 |
<a href="#whatis_songcast">further</a> for more explanations about what this does.</p></div>
|
748 |
<div class="paragraph"><p><strong><em>This has mostly been tested with 16 bits sound but a recent change seems
|
748 |
<div class="paragraph"><p><strong>sc2mpd</strong> has mostly been tested with 16 bits sound but a recent change
|
749 |
to have fixed 24 bits sound, so this should be now usable for MACs. This
|
749 |
seems to have fixed 24 bits sound, so this should be now usable for
|
750 |
needs mpd 0.19 on the renderer. Still be a bit careful as this is quite new
|
750 |
MACs. <strong><em>This needs mpd 0.19 on the renderer. Do not try 24 bits sound with
|
751 |
and there is a risk of strange noises !</em></strong></p></div>
|
751 |
mpd 0.18 !</em></strong> (or turn the volume very low…). Using Songcast from a Mac (24
|
752 |
<div class="paragraph"><p><strong><em>Do not try 24 bits sound with MPD 0.18 !</em></strong> (or turn the volume very
|
752 |
bits audio) needs <strong>mpd 0.19</strong>, configured with <code>--disable-audiofile</code>.
|
753 |
low…). Using Songcast from a Mac (24 bits audio) needs <strong>mpd 0.19</strong>,
|
|
|
754 |
configured with <tt>--disable-audiofile</tt>.</p></div>
|
|
|
755 |
<div class="paragraph"><p>As Debian and Ubuntu tend to lag quite bit on MPD progresses, I have setup
|
753 |
As Debian and Ubuntu tend to lag quite bit on MPD progresses, I have set up
|
756 |
<a href="downloads.html#mpd">backport repositories</a> for recent mpd versions
|
754 |
<a href="downloads.html#mpd">backport repositories</a> for recent mpd versions
|
757 |
(currently 0.19.9), for Ubuntu, Debian i386/amd64 and Raspbian.</p></div>
|
755 |
(currently 0.19.9), for Ubuntu, Debian i386/amd64 and Raspbian.</p></div>
|
758 |
<div class="paragraph"><p><strong>NEW: Debian packages for sc2mpd:</strong> as the procedure for building sc2mpd is
|
756 |
<div class="paragraph"><p>And to conclude the misc warnings section: <strong>there is no software volume
|
759 |
not completely obvious and automatic, I have also added <strong>sc2mpd</strong> packages
|
757 |
control</strong> of the Songcast Receivers for now: use either a local mixer or the
|
760 |
to the <strong>upmpdcli</strong> Debian repository. Packages exist for architectures i386,
|
758 |
little round things on the power amps.</p></div>
|
761 |
amd64 and Raspberry Pi. You can follow the procedure on the
|
759 |
<div class="paragraph"><p>There are Debian Wheezy <strong>sc2mpd</strong>
|
762 |
<a href="downloads.html">upmpdcli download page</a> to add the repository, then
|
760 |
packages in the <strong>upmpdcli</strong> repository for i386, amd64 and Raspberry Pi
|
763 |
just use the following to install sc2mpd:</p></div>
|
761 |
(Raspbian): see the <a href="downloads.html">upmpdcli download page</a>, so you do
|
764 |
<div class="literalblock">
|
762 |
not need to build any software if you use these systems.</p></div>
|
765 |
<div class="content">
|
|
|
766 |
<pre><tt>sudo apt-get install sc2mpd</tt></pre>
|
|
|
767 |
</div></div>
|
|
|
768 |
<div class="admonitionblock">
|
763 |
<div class="admonitionblock">
|
769 |
<table><tr>
|
764 |
<table><tr>
|
770 |
<td class="icon">
|
765 |
<td class="icon">
|
771 |
<div class="title">Note</div>
|
766 |
<div class="title">Note</div>
|
772 |
</td>
|
767 |
</td>
|
773 |
<td class="content">For rebuilding from the source package: the installed binary has a
|
768 |
<td class="content">you know what Songcast is and have a Rasberry PI which wants to play:
|
774 |
static link to the OpenHome libraries. This means that, in order to rebuild
|
769 |
<a href="#rpi_quick">quick install for the Raspberry PI</a> (also works for i386
|
775 |
from the source package, you need to follow the normal procedure to build
|
770 |
and amd64 Debian Wheezy).</td>
|
776 |
the OpenHome libs first (see the ohbuild.sh script further down). The build
|
|
|
777 |
tree should be located under /opt/openhome for the package rebuild to work.</td>
|
|
|
778 |
</tr></table>
|
771 |
</tr></table>
|
779 |
</div>
|
772 |
</div>
|
780 |
</div>
|
773 |
</div>
|
781 |
</div>
|
774 |
</div>
|
782 |
<div class="sect1">
|
775 |
<div class="sect1">
|
783 |
<h2 id="_what_is_songcast">What is Songcast</h2>
|
776 |
<h2 id="whatis_songcast">What is Linn Songcast</h2>
|
784 |
<div class="sectionbody">
|
777 |
<div class="sectionbody">
|
785 |
<div class="paragraph"><p>Songcast is a protocol for transporting audio streams across the
|
778 |
<div class="paragraph"><p><strong>Songcast</strong> is a protocol for transporting audio streams across the network,
|
786 |
network. This is independant from the UPnP framework which mostly deals
|
779 |
developped by <a href="http://oss.linn.co.uk/trac/wiki/Songcast">Linn</a> as a
|
787 |
with URLs and audio files (usually, but not necessarily, compressed).</p></div>
|
780 |
series of open-source libraries and applications.</p></div>
|
788 |
<div class="paragraph"><p>The streams transported by Songcast are actual real-time audio data, which
|
781 |
<div class="paragraph"><p>The protocol links two types of entities:</p></div>
|
|
|
782 |
<div class="ulist"><ul>
|
|
|
783 |
<li>
|
|
|
784 |
<p>
|
|
|
785 |
A <strong>Songcast</strong> <em>Sender</em> generates an audio stream (Windows or Mac).
|
|
|
786 |
</p>
|
|
|
787 |
</li>
|
|
|
788 |
<li>
|
|
|
789 |
<p>
|
|
|
790 |
<strong>Songcast</strong> <em>Receivers</em> receive and play the stream.
|
|
|
791 |
</p>
|
|
|
792 |
</li>
|
|
|
793 |
</ul></div>
|
|
|
794 |
<div class="paragraph"><p>There are <strong>Songcast</strong> applications (<em>Senders</em>) for Windows and Mac OS X
|
|
|
795 |
(nothing for Linux, iOS or Android for now). The <strong>Songcast</strong> application
|
|
|
796 |
captures and forward the system audio stream to a remote <strong>Songcast</strong>
|
|
|
797 |
<em>Receiver</em>.</p></div>
|
|
|
798 |
<div class="paragraph"><p><strong>Any</strong> application on the desktop (Windows Media Player, Spotify, Tidal,
|
|
|
799 |
etc.) will transparently play to the remote device, without any need to
|
|
|
800 |
know about <strong>Songcast</strong>. <strong><em>Any</em></strong> audio service available on Windows or the
|
|
|
801 |
Mac can be forwarded to one or <a href="scmulti.html">many</a> audio players around
|
|
|
802 |
the house.</p></div>
|
|
|
803 |
<div class="paragraph"><p>The <strong>Songcast</strong> streams are real-time audio data, which can go straight
|
789 |
can go straight to an audio card for playing.</p></div>
|
804 |
to an audio card for playing.</p></div>
|
790 |
<div class="paragraph"><p>Controlling the streams on the renderer (connecting, starting, stopping) is
|
805 |
<div class="paragraph"><p>Controlling the streams (connecting, starting, stopping) is
|
791 |
done through an UPnP service named OpenHome <em>Receiver</em>.</p></div>
|
806 |
done through an UPnP service named OpenHome <em>Receiver</em>, which runs on an
|
792 |
<div class="paragraph"><p>The typical use of Songcast is to have an audio driver on a Windows or OS X
|
807 |
UPnP Media Renderer implementing the OpenHome services (e.g. <strong>upmpdcli</strong>).</p></div>
|
793 |
desktop capture and forward the audio stream to a remote Songcast device.</p></div>
|
|
|
794 |
<div class="paragraph"><p>Any application on the desktop will (be compelled to) transparently play to
|
|
|
795 |
the remote device, without need to know anything about Songcast.</p></div>
|
|
|
796 |
</div>
|
808 |
</div>
|
797 |
</div>
|
809 |
</div>
|
798 |
<div class="sect1">
|
810 |
<div class="sect1">
|
799 |
<h2 id="_implementation_of_songcast_support_in_upmpdcli">Implementation of Songcast support in upmpdcli</h2>
|
811 |
<h2 id="_implementation_of_songcast_support_in_upmpdcli">Implementation of Songcast support in upmpdcli</h2>
|
800 |
<div class="sectionbody">
|
812 |
<div class="sectionbody">
|
801 |
<div class="paragraph"><p><strong>upmpdcli</strong> implements the <em>Receiver</em> service, and uses an auxiliary process
|
813 |
<div class="paragraph"><p><strong>upmpdcli</strong> implements the <em>Receiver</em> service, and uses an auxiliary process
|
802 |
(<strong>sc2mpd</strong>) for transporting the audio data. <strong>sc2mpd</strong> is a slight
|
814 |
(<strong>sc2mpd</strong>) for transporting the audio data. <strong>sc2mpd</strong> is a slight
|
803 |
modification of the sample program which comes with the Linn Songcast
|
815 |
modification of the sample program which comes with the Linn Songcast
|
804 |
open-source implementation, with the addition of an HTTP interface (based
|
816 |
open-source implementation</p></div>
|
805 |
on <em>libmicrohttpd</em>) to forward the data to <strong>mpd</strong>.</p></div>
|
817 |
<div class="paragraph"><p><strong>sc2mpd</strong> can play the audio stream in two modes:</p></div>
|
806 |
<div class="paragraph"><p>Setting up a connection happens as follows:</p></div>
|
|
|
807 |
<div class="ulist"><ul>
|
818 |
<div class="ulist"><ul>
|
808 |
<li>
|
819 |
<li>
|
809 |
<p>
|
820 |
<p>
|
810 |
If it finds an executable <strong>sc2mpd</strong> command in the PATH when starting up,
|
821 |
By offering a local HTTP interface (based on <em>libmicrohttpd</em>) from which
|
811 |
<strong>upmpdcli</strong> advertises a <em>Receiver</em> service.
|
822 |
<strong>mpd</strong> will play the stream.
|
812 |
</p>
|
|
|
813 |
</li>
|
823 |
</p>
|
814 |
<li>
|
824 |
</li>
|
|
|
825 |
<li>
|
|
|
826 |
<p>
|
|
|
827 |
By directly using the <strong>alsa</strong> audio driver. <strong><em>This only works with 16
|
|
|
828 |
bits sound for now (so only with a Windows sender, no Macs allowed)</em></strong>
|
815 |
<p>
|
829 |
</p>
|
|
|
830 |
</li>
|
|
|
831 |
</ul></div>
|
|
|
832 |
<div class="paragraph"><p>What approach is used is decided by a parameter in the upmpdcli
|
|
|
833 |
configuration file: <code>scplaymethod</code> (see <a href="#Configuration">[Configuration]</a> further)</p></div>
|
|
|
834 |
<div class="paragraph"><p>Control:</p></div>
|
|
|
835 |
<div class="ulist"><ul>
|
|
|
836 |
<li>
|
|
|
837 |
<p>
|
|
|
838 |
If <strong>upmpdcli</strong> finds an executable <strong>sc2mpd</strong> command in the PATH when
|
|
|
839 |
starting up, it advertises a <em>Receiver</em> service.
|
|
|
840 |
</p>
|
|
|
841 |
</li>
|
|
|
842 |
<li>
|
|
|
843 |
<p>
|
816 |
The Songcast implementation from the desktop finds out about the
|
844 |
The <strong>Songcast</strong> application on the desktop finds out about the
|
817 |
<em>Receiver</em> through the normal UPnP mechanisms and can be instructed to
|
845 |
<em>Receiver</em> through the normal UPnP mechanisms and can be instructed to
|
818 |
use it. It then tells the <em>Receiver</em> in <strong>upmpdcli</strong> to start playing.
|
846 |
use it. It then tells the <em>Receiver</em> in <strong>upmpdcli</strong> to start playing.
|
819 |
</p>
|
847 |
</p>
|
820 |
</li>
|
848 |
</li>
|
821 |
<li>
|
849 |
<li>
|
822 |
<p>
|
850 |
<p>
|
823 |
<strong>upmdpcli</strong> starts the <strong>sc2mpd</strong> process, which gets ready to receive data
|
851 |
<strong>upmdpcli</strong> starts the <strong>sc2mpd</strong> process, which gets ready to receive data
|
824 |
through Songcast, and make it available through HTTP.
|
852 |
through Songcast, and either play it directly or make it available
|
825 |
</p>
|
853 |
through HTTP.
|
826 |
</li>
|
854 |
</p>
|
827 |
<li>
|
855 |
</li>
|
|
|
856 |
<li>
|
828 |
<p>
|
857 |
<p>
|
829 |
<strong>upmpdcli</strong> instructs <strong>mpd</strong> to play the URL for the <strong>sc2mpd</strong> output.
|
858 |
If the <em><code>mpd</code></em> method is in use, <strong>upmpdcli</strong> instructs <strong>mpd</strong> to play the
|
|
|
859 |
URL for the <strong>sc2mpd</strong> output.
|
830 |
</p>
|
860 |
</p>
|
831 |
</li>
|
861 |
</li>
|
832 |
</ul></div>
|
862 |
</ul></div>
|
833 |
<div class="paragraph"><p>There is currently a 10-12 S delay between the connection request and the
|
863 |
<div class="paragraph"><p>When using <em><code>mpd</code></em> more bufferisation occurs and there may be a significant
|
834 |
moment the audio starts playing. This is not normal, but I could not find
|
864 |
delay (up to around 10S) between the time when Songcast is activated and
|
835 |
the reason for it, so it’s an unavoidable inconvenience at the moment.</p></div>
|
865 |
the time sound appears.</p></div>
|
|
|
866 |
<div class="paragraph"><p>Given the bufferisation and delay control issues when going through MPD,
|
|
|
867 |
only the <em><code>alsa</code></em> method is usable in multi-room configurations. Even with a
|
|
|
868 |
single player, the <em><code>mpd</code></em> method will experience skips from time to
|
|
|
869 |
time. The reasons are explained in the <a href="scmulti.html">multi-room</a>
|
|
|
870 |
page.</p></div>
|
836 |
</div>
|
871 |
</div>
|
837 |
</div>
|
872 |
</div>
|
838 |
<div class="sect1">
|
873 |
<div class="sect1">
|
839 |
<h2 id="_configuration">Configuration</h2>
|
874 |
<h2 id="rpi_quick">Quick install for Debian Wheezy systems</h2>
|
840 |
<div class="sectionbody">
|
875 |
<div class="sectionbody">
|
|
|
876 |
<div class="paragraph"><p>There are packages available for Raspbian and Debian Wheezy i386 and amd64.</p></div>
|
|
|
877 |
<div class="paragraph"><p>So add the repositories:</p></div>
|
|
|
878 |
<div class="literalblock">
|
|
|
879 |
<div class="content">
|
|
|
880 |
<pre><code>echo deb http://www.lesbonscomptes.com/upmpdcli/downloads/debian/ unstable main | sudo tee /etc/apt/sources.list.d/upmpdcli.list
|
|
|
881 |
echo deb-src http://www.lesbonscomptes.com/upmpdcli/downloads/debian/ unstable main | sudo tee -a /etc/apt/sources.list.d/upmpdcli.list
|
|
|
882 |
echo deb http://www.lesbonscomptes.com/upmpdcli/downloads/mpd-debian/ unstable main | sudo tee -a /etc/apt/sources.list.d/upmpdcli.list
|
|
|
883 |
echo deb-src http://www.lesbonscomptes.com/upmpdcli/downloads/mpd-debian/ unstable main | sudo tee -a /etc/apt/sources.list.d/upmpdcli.list</code></pre>
|
|
|
884 |
</div></div>
|
|
|
885 |
<div class="paragraph"><p>Install (the mpd and libupnp versions in the repo have bug fixes):</p></div>
|
|
|
886 |
<div class="literalblock">
|
|
|
887 |
<div class="content">
|
|
|
888 |
<pre><code>sudo apt-get update
|
|
|
889 |
sudo apt-get install upmpdcli sc2mpd mpd libupnp6</code></pre>
|
|
|
890 |
</div></div>
|
|
|
891 |
<div class="paragraph"><p>And seed the next section for configuring.</p></div>
|
|
|
892 |
</div>
|
|
|
893 |
</div>
|
|
|
894 |
<div class="sect1">
|
|
|
895 |
<h2 id="Configuration">Configuration</h2>
|
|
|
896 |
<div class="sectionbody">
|
|
|
897 |
<div class="sect2">
|
|
|
898 |
<h3 id="_on_the_receiver_side">On the Receiver side</h3>
|
841 |
<div class="paragraph"><p>No configuration is necessary by default: if <strong>sc2mpd</strong> is present,
|
899 |
<div class="paragraph"><p>No configuration is necessary by default: if <strong>sc2mpd</strong> is present,
|
842 |
<strong>upmpdcli</strong> will advertise the Songcast capability, and any host with a
|
900 |
<strong>upmpdcli</strong> will advertise the Songcast capability, and any host with a
|
843 |
Songcast sender installed should be able to use it.</p></div>
|
901 |
Songcast sender installed should be able to use it.</p></div>
|
844 |
<div class="paragraph"><p>However, you can set a number of values in the upmpdcli configuration file
|
902 |
<div class="paragraph"><p>However, you can set a number of values in the upmpdcli configuration file
|
845 |
(you <strong>must</strong> set the <strong>upmpdcli</strong> <tt>-c</tt> option for <strong>sc2mpd</strong> to see them, the
|
903 |
(you <strong>must</strong> set the <strong>upmpdcli</strong> <code>-c</code> option for <strong>sc2mpd</strong> to see them, the
|
846 |
environment variable will not work):</p></div>
|
904 |
environment variable will not work):</p></div>
|
847 |
<div class="dlist"><dl>
|
905 |
<div class="dlist"><dl>
|
|
|
906 |
<dt class="hdlist1">
|
|
|
907 |
scplaymethod
|
|
|
908 |
</dt>
|
|
|
909 |
<dd>
|
|
|
910 |
<p>
|
|
|
911 |
This decides how audio is played, with 2 possible
|
|
|
912 |
values, <em><code>alsa</code></em> or <em><code>mpd</code></em>. Using <em><code>mpd</code></em> is somewhat easier, but
|
|
|
913 |
unusable in <a href="scmulti.html">multi-room</a> configurations, and you risk
|
|
|
914 |
small drops even in single-player settings.
|
|
|
915 |
</p>
|
|
|
916 |
</dd>
|
|
|
917 |
<dt class="hdlist1">
|
|
|
918 |
scalsadevice
|
|
|
919 |
</dt>
|
|
|
920 |
<dd>
|
|
|
921 |
<p>
|
|
|
922 |
If the <em><code>alsa</code></em> method is set, the <code>scalsadevice</code>
|
|
|
923 |
parameter defines the interface name. Use <code>aplay -L</code> to find the
|
|
|
924 |
appropriate name. Also check that user <em><code>upmpdcli</code></em> belongs to the
|
|
|
925 |
<em><code>audio</code></em> group.
|
|
|
926 |
</p>
|
|
|
927 |
</dd>
|
848 |
<dt class="hdlist1">
|
928 |
<dt class="hdlist1">
|
849 |
sclogfilename
|
929 |
sclogfilename
|
850 |
</dt>
|
930 |
</dt>
|
851 |
<dd>
|
931 |
<dd>
|
852 |
<p>
|
932 |
<p>
|
853 |
Name of the file which will receive <strong>sc2mpd</strong> log messages. <tt>stderr</tt> by
|
933 |
Name of the file which will receive <strong>sc2mpd</strong> log messages. <code>stderr</code> by
|
854 |
default. This <em>can’t be</em> the same file used by <strong>upmpdcli</strong>.
|
934 |
default. This <em>can’t be</em> the same file used by <strong>upmpdcli</strong>.
|
855 |
</p>
|
935 |
</p>
|
856 |
</dd>
|
936 |
</dd>
|
857 |
<dt class="hdlist1">
|
937 |
<dt class="hdlist1">
|
858 |
scloglevel
|
938 |
scloglevel
|
|
... |
|
... |
865 |
<dt class="hdlist1">
|
945 |
<dt class="hdlist1">
|
866 |
schttpport
|
946 |
schttpport
|
867 |
</dt>
|
947 |
</dt>
|
868 |
<dd>
|
948 |
<dd>
|
869 |
<p>
|
949 |
<p>
|
870 |
HTTP port used by <strong>mpd</strong> to connect to <strong>sc2mpd</strong>. 8888 by default. This must
|
950 |
If the <em><code>mpd</code></em> method is set, this defines the HTTP port used by <strong>mpd</strong> to
|
871 |
be an available port on <tt>localhost</tt>, and it will only accept connections from
|
951 |
connect to <strong>sc2mpd</strong>. 8768 by default. This must be an available port on
|
872 |
<tt>localhost</tt>.
|
952 |
<code>localhost</code>, and it will only accept connections from <code>localhost</code>.
|
873 |
</p>
|
953 |
</p>
|
874 |
</dd>
|
954 |
</dd>
|
875 |
<dt class="hdlist1">
|
955 |
<dt class="hdlist1">
|
876 |
sc2mpd
|
956 |
sc2mpd
|
877 |
</dt>
|
957 |
</dt>
|
878 |
<dd>
|
958 |
<dd>
|
879 |
<p>
|
959 |
<p>
|
880 |
Path for the <strong>sc2mpd</strong> executable file (e.g. <tt>/usr/local/bin/sc2mpd</tt>). Only
|
960 |
Path for the <strong>sc2mpd</strong> executable file (e.g. <code>/usr/local/bin/sc2mpd</code>). Only
|
881 |
useful if <strong>sc2mpd</strong> was not installed to a location in the executable $PATH
|
961 |
useful if <strong>sc2mpd</strong> was not installed to a location in the executable $PATH
|
882 |
set for the init scripts. Typically only <tt>/bin</tt> and <tt>/usr/bin</tt> are in
|
962 |
set for the init scripts. Typically only <code>/bin</code> and <code>/usr/bin</code> are in
|
883 |
there.
|
963 |
there. This allows <strong>upmpdcli</strong> to find <strong>sc2mpd</strong> if it is not in the standard
|
|
|
964 |
location.
|
884 |
</p>
|
965 |
</p>
|
885 |
</dd>
|
966 |
</dd>
|
886 |
</dl></div>
|
967 |
</dl></div>
|
|
|
968 |
</div>
|
|
|
969 |
<div class="sect2">
|
|
|
970 |
<h3 id="_on_the_sender_windows_mac_side">On the Sender (Windows/Mac) side</h3>
|
|
|
971 |
<div class="paragraph"><p>I could not get IP multicast to work with WIFI Receivers (the sound drops
|
|
|
972 |
constantly).</p></div>
|
|
|
973 |
<div class="paragraph"><p>There are well-known problems with multicast and WIFI (see for example
|
|
|
974 |
<a href="http://superuser.com/questions/730288/why-do-some-wifi-routers-block-multicast-packets-going-from-wired-to-wireless">this
|
|
|
975 |
superuser.com question</a>
|
|
|
976 |
for detailed explanations). This seems to be dependant on the WIFI hardware
|
|
|
977 |
(router/access points) used, so maybe you will have more luck than me.</p></div>
|
|
|
978 |
<div class="paragraph"><p>If some of your Receivers use WIFI, and you experience sound issues, check
|
|
|
979 |
that "Unicast" is selected in the Songcast configuration "advanced" panel
|
|
|
980 |
on the desktop.</p></div>
|
|
|
981 |
<div class="paragraph"><p>Under most conditions, WIFI data rates should be more than sufficient to
|
|
|
982 |
transport Songcast streams (a bit over 1 Mbit/S for 48k/24bits, 700 Kbits/S
|
|
|
983 |
for 44.1k/16 bits).</p></div>
|
|
|
984 |
</div>
|
887 |
</div>
|
985 |
</div>
|
888 |
</div>
|
986 |
</div>
|
889 |
<div class="sect1">
|
987 |
<div class="sect1">
|
890 |
<h2 id="_building_sc2mpd">Building sc2mpd</h2>
|
988 |
<h2 id="_building_sc2mpd">Building sc2mpd</h2>
|
891 |
<div class="sectionbody">
|
989 |
<div class="sectionbody">
|
|
... |
|
... |
900 |
<p>
|
998 |
<p>
|
901 |
Building <strong>sc2mpd</strong> proper
|
999 |
Building <strong>sc2mpd</strong> proper
|
902 |
</p>
|
1000 |
</p>
|
903 |
</li>
|
1001 |
</li>
|
904 |
</ul></div>
|
1002 |
</ul></div>
|
905 |
<div class="paragraph"><p>First clone the <strong>sc2mpd</strong> Github repository:
|
1003 |
<div class="paragraph"><p>First download a
|
|
|
1004 |
<a href="http://www.lesbonscomptes.com/upmpdcli/downloads.html"><strong>sc2mpd</strong>
|
|
|
1005 |
release</a> or clone the <strong>sc2mpd</strong>
|
906 |
<a href="http://www.github.com/medoc92/sc2mpd">http://www.github.com/medoc92/sc2mpd</a>.</p></div>
|
1006 |
<a href="http://www.github.com/medoc92/sc2mpd">Github repository</a>.</p></div>
|
907 |
<div class="paragraph"><p><strong>sc2mpd</strong> depends on the microhttpd library. Install the development and
|
1007 |
<div class="paragraph"><p><strong>sc2mpd</strong> depends on a number of libraries:</p></div>
|
908 |
runtime packages which are currently named <em>libmicrohttpd-dev</em> and
|
1008 |
<div class="ulist"><ul>
|
909 |
<em>libmicrohttpd10</em> on Debian-derived systems (use <em>libmicrohttpd</em> and
|
1009 |
<li>
|
910 |
<em>libmicrohttpd-devel</em> for Fedora).</p></div>
|
1010 |
<p>
|
|
|
1011 |
The <a href="http://www.gnu.org/software/libmicrohttpd/">microhttpd</a>
|
|
|
1012 |
library. Install the development and runtime packages which are currently
|
|
|
1013 |
named <em>libmicrohttpd-dev</em> and <em>libmicrohttpd10</em> on Debian-derived systems
|
|
|
1014 |
(use <em>libmicrohttpd</em> and <em>libmicrohttpd-devel</em> for Fedora).
|
|
|
1015 |
</p>
|
|
|
1016 |
</li>
|
|
|
1017 |
<li>
|
|
|
1018 |
<p>
|
|
|
1019 |
The <a href="http://www.mega-nerd.com/SRC/">libsamplerate</a>
|
|
|
1020 |
library. <em>libsamplerate0</em> on debian-derived systems.
|
|
|
1021 |
</p>
|
|
|
1022 |
</li>
|
|
|
1023 |
<li>
|
|
|
1024 |
<p>
|
|
|
1025 |
The <strong>libasound</strong> Alsa interface library (<em>libasound2</em>).
|
|
|
1026 |
</p>
|
|
|
1027 |
</li>
|
|
|
1028 |
</ul></div>
|
911 |
<div class="paragraph"><p>Building the Openhome libraries is a bit of a black art, and the <strong>sc2mpd</strong>
|
1029 |
<div class="paragraph"><p>Building the Openhome libraries is a bit of a black art, and the <strong>sc2mpd</strong>
|
912 |
source comes with an <em>ohbuild.sh</em> script which will try to clone the
|
1030 |
source comes with an <em>ohbuild.sh</em> script which will try to clone the
|
913 |
Openhome Git repositories and build the libs:</p></div>
|
1031 |
Openhome Git repositories and build the libs:</p></div>
|
914 |
<div class="literalblock">
|
1032 |
<div class="literalblock">
|
915 |
<div class="content">
|
1033 |
<div class="content">
|
916 |
<pre><tt>cd sc2mpd
|
1034 |
<pre><code>cd sc2mpd
|
917 |
mkdir /my/place/for/openhome
|
1035 |
mkdir /my/place/for/openhome
|
918 |
sh ohbuild.sh /my/place/for/openhome</tt></pre>
|
1036 |
sh ohbuild.sh /my/place/for/openhome</code></pre>
|
919 |
</div></div>
|
1037 |
</div></div>
|
920 |
<div class="paragraph"><p>Miscellaneous error messages will be displayed during the build. Hope for
|
1038 |
<div class="paragraph"><p>Miscellaneous error messages will be displayed during the build. Hope for
|
921 |
the best…</p></div>
|
1039 |
the best…</p></div>
|
922 |
<div class="paragraph"><p>When this is done, build <strong>sc2mpd</strong>, using the following commands inside the
|
1040 |
<div class="paragraph"><p>When this is done, build <strong>sc2mpd</strong>, using the following commands inside the
|
923 |
<em>sc2mpd</em> directory:</p></div>
|
1041 |
<em>sc2mpd</em> directory:</p></div>
|
924 |
<div class="literalblock">
|
1042 |
<div class="literalblock">
|
925 |
<div class="content">
|
1043 |
<div class="content">
|
926 |
<pre><tt>sh autogen.sh
|
1044 |
<pre><code>sh autogen.sh
|
927 |
./configure --prefix=/usr --with-openhome=/my/place/for/openhome
|
1045 |
./configure --prefix=/usr --with-openhome=/my/place/for/openhome
|
928 |
make
|
1046 |
make
|
929 |
sudo make install</tt></pre>
|
1047 |
sudo make install</code></pre>
|
930 |
</div></div>
|
1048 |
</div></div>
|
931 |
<div class="paragraph"><p>The build uses static Openhome libraries, so you can move the executable to
|
1049 |
<div class="paragraph"><p>The build uses static Openhome libraries, so you can move the executable to
|
932 |
another machine without needing the Openhome directory (don’t forget to
|
1050 |
another machine without needing the Openhome directory (don’t forget to
|
933 |
install the <em>libmicrohttpd</em> runtime though).</p></div>
|
1051 |
install the <em>libmicrohttpd</em>, <em>libsamplerate</em> and <em>libasound</em> runtimes
|
|
|
1052 |
though).</p></div>
|
934 |
<div class="paragraph"><p>After restarting <strong>upmpdcli</strong>, it should advertise the <em>Receiver</em> service and
|
1053 |
<div class="paragraph"><p>After restarting <strong>upmpdcli</strong>, it should advertise the <em>Receiver</em> service and
|
935 |
appear in the Songcast Sender menus.</p></div>
|
1054 |
appear in the Songcast Sender menus.</p></div>
|
936 |
</div>
|
1055 |
</div>
|
937 |
</div>
|
1056 |
</div>
|
938 |
<div class="sect1">
|
1057 |
<div class="sect1">
|
|
... |
|
... |
945 |
</div>
|
1064 |
</div>
|
946 |
</div>
|
1065 |
</div>
|
947 |
<div id="footnotes"><hr /></div>
|
1066 |
<div id="footnotes"><hr /></div>
|
948 |
<div id="footer">
|
1067 |
<div id="footer">
|
949 |
<div id="footer-text">
|
1068 |
<div id="footer-text">
|
950 |
Last updated 2015-04-07 16:20:40 CEST
|
1069 |
Last updated 2015-07-19 18:32:36 CEST
|
951 |
</div>
|
1070 |
</div>
|
952 |
</div>
|
1071 |
</div>
|
953 |
</body>
|
1072 |
</body>
|
954 |
</html>
|
1073 |
</html>
|