Switch to unified view

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&#8230;). 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&#8230;). 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&#8217;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&#8217;t be</em> the same file used by <strong>upmpdcli</strong>.
934
default. This <em>can&#8217;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&#8230;</p></div>
1039
the best&#8230;</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&#8217;t forget to
1050
another machine without needing the Openhome directory (don&#8217;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>