Switch to unified view

a/doc/scmulti.html b/doc/scmulti.html
...
...
743
<div id="preamble">
743
<div id="preamble">
744
<div class="sectionbody">
744
<div class="sectionbody">
745
<div class="paragraph"><p>General information about <strong>upmpdcli</strong> support for <strong>Songcast</strong> can be found
745
<div class="paragraph"><p>General information about <strong>upmpdcli</strong> support for <strong>Songcast</strong> can be found
746
<a href="sc2mpd.html">here</a>. This page explains how to set up a multiroom
746
<a href="sc2mpd.html">here</a>. This page explains how to set up a multiroom
747
synchronized audio system using <strong>upmpdcli</strong> and <strong>Songcast</strong>.</p></div>
747
synchronized audio system using <strong>upmpdcli</strong> and <strong>Songcast</strong>.</p></div>
748
<div class="admonitionblock">
749
<table><tr>
750
<td class="icon">
751
<div class="title">Note</div>
752
</td>
753
<td class="content">multicast and WIFI don&#8217;t mix well in many cases. If you have
754
wireless Receivers experiencing sound drop issues, try selecting unicast in
755
the Songcast advanced configuration panel on the desktop.</td>
756
</tr></table>
757
</div>
748
</div>
758
</div>
749
</div>
759
</div>
750
<div class="sect1">
760
<div class="sect1">
751
<h2 id="_multiple_receivers">Multiple Receivers</h2>
761
<h2 id="_multiple_receivers">Multiple Receivers</h2>
752
<div class="sectionbody">
762
<div class="sectionbody">
753
<div class="paragraph"><p>Multiple <strong>Songcast</strong> <em>Receiver</em> hosts can connect to the same <em>Sender</em>, so
763
<div class="paragraph"><p>Multiple <strong>Songcast</strong> <em>Receiver</em> hosts can connect to the same <em>Sender</em>, so
754
that they will all be playing the same audio.</p></div>
764
that they will all be playing the same audio. They form a group only in the
765
sense that they play from the same URI, and are not otherwise linked.</p></div>
755
<div class="paragraph"><p>The Mac and Windows <strong>Songcast</strong> apps only let you activate one
766
<div class="paragraph"><p>The Mac and Windows <strong>Songcast</strong> apps only let you activate one
756
<em>Receiver</em> though.</p></div>
767
<em>Receiver</em> though.</p></div>
757
<div class="paragraph"><p><strong>upmpdcli</strong> now includes a small application which can list the state of
768
<div class="paragraph"><p>The <strong>upmpdcli</strong> package now includes the <strong>scctl</strong> command line utility, which
758
the local <strong>Songcast</strong> Receivers, make a Receiver play from the same URI as
769
can list the state of the local <strong>Songcast</strong> <em>Receivers</em>, make a <em>Receiver</em>
759
another one (for building multiroom groups), or return a Media Renderer
770
play from the same URI as another one (for building multi-room groups), or
760
from Receiver to normal operation.</p></div>
771
return a <em>Media Renderer</em> from <em>Receiver</em> to normal operation.</p></div>
761
<div class="paragraph"><p>The functions can be accessed either from the <strong>scctl</strong> command line utility,
772
<div class="paragraph"><p>As the Songcast application is only available on Windows or Mac desktops,
762
or from a local Web application (as Songcast is mostly used from a Windows
763
or Mac PC, it would be inconvenient to have to access the Linux command
773
it would be inconvenient to have to access the Linux command line to
774
control the multi-room groups, and the <strong>upmpdcli</strong> package also includes a
775
small Web application which can be accessed from a desktop web browser to
764
line to control the multiroom groups).</p></div>
776
control the groups.</p></div>
765
<div class="paragraph"><p>This has only be tested with <strong>upmpdcli</strong> and its <a href="sc2mpd.html">sc2mpd</a>
777
<div class="paragraph"><p>This has only be tested with <strong>upmpdcli</strong> and its <a href="sc2mpd.html">sc2mpd</a>
766
<strong>Songcast</strong> auxiliary process as Receiver implementation, but I&#8217;d guess that
778
<strong>Songcast</strong> auxiliary process as Receiver implementation, but I&#8217;d guess that
767
there is a good chance it would work with others.</p></div>
779
there is a good chance it would work with others.</p></div>
768
</div>
780
</div>
769
</div>
781
</div>
770
<div class="sect1">
782
<div class="sect1">
771
<h2 id="_synchronisation_issues">Synchronisation issues</h2>
783
<h2 id="_synchronisation_issues">Synchronisation issues</h2>
772
<div class="sectionbody">
784
<div class="sectionbody">
773
<div class="paragraph"><p>The short version is: all sc2mpd instances must be configured to play
785
<div class="paragraph"><p>The short version is: all <strong>sc2mpd</strong> instances must be configured to play
774
directly to Alsa. See the <a href="sc2mpd.html#Configuration">configuration
786
directly to Alsa. See the <a href="sc2mpd.html#Configuration">configuration
775
section</a>.</p></div>
787
section</a>.</p></div>
776
<div class="paragraph"><p>Longer version: Songcast is a real-time audio stream. As the Sender and
788
<div class="paragraph"><p>Longer version: <strong>Songcast</strong> is a real-time audio stream. As the <em>Sender</em> and
777
Receiver sample clocks (the 44.1 or 48 KHz clocks) are independant, audio
789
<em>Receiver</em> sample clocks (the 44.1 or 48 KHz clocks) are independant, audio
778
reproduction on the two systems will slowly drift. If nothing is done,
790
reproduction on the two systems will slowly drift. If nothing is done,
779
after a time, the Receiver will have to skip samples or add a period of
791
after a time, the <em>Receiver</em> will have to skip samples or add a period of
780
silence (depending if its clock is slower or faster), which is quite
792
silence (depending if its clock is slower or faster), which is quite
781
audible and ennoying, and will happen "from time to time", depending of how
793
audible and ennoying, and will happen "from time to time", depending of how
782
much the clocks differ.</p></div>
794
much the clocks differ.</p></div>
783
<div class="paragraph"><p>The only way to control this is to adjust the rate of reproduction on the
795
<div class="paragraph"><p>The only way to control this is to adjust the rate of reproduction on the
784
Receiver, which can be done in two ways:</p></div>
796
<em>Receiver</em>, which can be done in two ways:</p></div>
785
<div class="ulist"><ul>
797
<div class="ulist"><ul>
786
<li>
798
<li>
787
<p>
799
<p>
788
Linn hardware uses timestamps embedded in the audio stream to adjust
800
<strong>Linn</strong> hardware uses timestamps embedded in the audio stream to adjust
789
   their hardware sample clock.
801
   their hardware sample clock.
790
</p>
802
</p>
791
</li>
803
</li>
792
<li>
804
<li>
793
<p>
805
<p>
794
sc2mpd in Alsa mode uses sample rate conversion to adjust the stream.
806
<strong>sc2mpd</strong> in <em><tt>alsa</tt></em> mode uses sample rate conversion to adjust the stream.
795
</p>
807
</p>
796
</li>
808
</li>
797
</ul></div>
809
</ul></div>
798
<div class="paragraph"><p>This is not specific to Songcast of course, all real time audio network
810
<div class="paragraph"><p>This is not specific to <strong>Songcast</strong> of course, all real time audio network
799
transports have to do something similar.</p></div>
811
transports have to do something similar.</p></div>
800
<div class="paragraph"><p>Independantly of the clock issue, all Receivers should use approximately
812
<div class="paragraph"><p>Independantly of the clock issue, all <em>Receivers</em> should use approximately
801
the same amount of buffering for the audio to be reasonably synchronous
813
the same amount of buffering for the audio to be reasonably synchronous
802
(with no more shifts than moving around would produce anyway). This is
814
(with no more shifts than moving around would produce anyway). This is
803
impossible to achieve when going through mpd, and the second reason why
815
impossible to achieve when going through mpd, and the second reason why
804
sc2mpd must be set in Alsa mode for multiroom setups. In mpd mode, the
816
<strong>sc2mpd</strong> must be set in <em><tt>alsa</tt></em> mode for multiroom setups. In <em><tt>mpd</tt></em>
805
receivers can be out of sync by several seconds.</p></div>
817
mode, the <em>Receivers</em> can be out of sync by several seconds.</p></div>
806
</div>
818
</div>
807
</div>
819
</div>
808
<div class="sect1">
820
<div class="sect1">
809
<h2 id="_setting_things_up">Setting things up</h2>
821
<h2 id="_setting_things_up">Setting things up</h2>
810
<div class="sectionbody">
822
<div class="sectionbody">
...
...
820
<tt>friendlyname</tt>, this is quite useful when managing several systems.
832
<tt>friendlyname</tt>, this is quite useful when managing several systems.
821
</p>
833
</p>
822
</li>
834
</li>
823
<li>
835
<li>
824
<p>
836
<p>
825
<tt>scplaymethod</tt> = alsa
837
<tt>scplaymethod</tt> = <em><tt>alsa</tt></em>
826
</p>
838
</p>
827
</li>
839
</li>
828
<li>
840
<li>
829
<p>
841
<p>
830
<tt>scalsadevice</tt>: use <tt>aplay -L</tt> to chose an appropriate device.
842
<tt>scalsadevice</tt>: use <tt>aplay -L</tt> to chose an appropriate device.
...
...
832
</li>
844
</li>
833
</ul></div>
845
</ul></div>
834
</li>
846
</li>
835
<li>
847
<li>
836
<p>
848
<p>
837
Activate the web interface on one of the Receivers (or on any machine
849
Activate the web interface on one of the <em>Receivers</em> (or on any machine
838
   with upmpdcli installed actually). Edit <tt>/etc/default/scweb</tt> to
850
   with upmpdcli installed actually). Edit <tt>/etc/default/scweb</tt> to
839
   configure the interface (see comments in there) and start it with
851
   configure the interface (see comments in there) and start it with
840
   <tt>/etc/init.d/scweb-service start</tt>.
852
   <tt>service scweb start</tt>.
841
</p>
853
</p>
842
</li>
854
</li>
843
<li>
855
<li>
844
<p>
856
<p>
845
Activate a Receiver from the PC <strong>Songcast</strong> interface. Play something and
857
Activate a <em>Receiver</em> from the PC <strong>Songcast</strong> interface. Play something and
846
   leave it playing.
858
   leave it playing.
847
</p>
859
</p>
848
</li>
860
</li>
849
<li>
861
<li>
850
<p>
862
<p>
851
Connect to the Web interface (host and port chosen above) with a
863
Connect to the Web interface (host and port chosen above) with a
852
   browser, and use it to list, activate, or disconnect the Receivers.
864
   browser, and use it to list, activate, or disconnect the <em>Receivers</em>.
853
</p>
865
</p>
854
</li>
866
</li>
855
</ul></div>
867
</ul></div>
856
<div class="paragraph"><p>Once the slave Receivers are associated with the Sender, they should stay
868
<div class="paragraph"><p>Once the slave <em>Receivers</em> are associated with the <em>Sender</em>, they should stay
857
in this state until you change it. So you can stop/start Songcast on the
869
in this state until you change it. So you can stop/start <strong>Songcast</strong> on the
858
PC, and they will usually just follow.</p></div>
870
PC, and they will usually just follow.</p></div>
859
<div class="paragraph"><p>An "associated" Receiver is just one which plays from the same URI, it
871
<div class="paragraph"><p>An "associated" <em>Receiver</em> is just one which plays from the same URI, it
860
keeps no other relation to the "Master". Only one Receiver is a bit special
872
keeps no other relation to the "Master". Only one <em>Receiver</em> is a bit special
861
because it is the one known from the PC, but there is no specific reason to
873
because it is the one known from the PC, but there is no specific reason to
862
use it as Master, the Master is only used to get the URI. Avoid changing
874
use it as Master, the Master is only used to get the URI. Avoid changing
863
the state of the "PC"'s Receiver from outside the PC <strong>Songcast</strong> interface,
875
the state of the "PC"'s <em>Receiver</em> from outside the PC <strong>Songcast</strong> interface,
864
this can only confuse things.</p></div>
876
this can only confuse things.</p></div>
865
</div>
877
</div>
866
</div>
878
</div>
867
<div class="sect1">
879
<div class="sect1">
868
<h2 id="_more_detail_about_the_web_interface">More detail about the Web interface</h2>
880
<h2 id="_more_detail_about_the_web_interface">More detail about the Web interface</h2>
...
...
879
interface:</p></div>
891
interface:</p></div>
880
<div class="literalblock">
892
<div class="literalblock">
881
<div class="content">
893
<div class="content">
882
<pre><tt>python2 ./scweb-standalone.py</tt></pre>
894
<pre><tt>python2 ./scweb-standalone.py</tt></pre>
883
</div></div>
895
</div></div>
884
<div class="paragraph"><p>This will start a server on localhost, on port 8780 by default which is
896
<div class="paragraph"><p>This will start a server on localhost, on port 8680 by default which is
885
good for testing, but not very useful. Use the -a 0.0.0.0 option to let the
897
good for testing, but not very useful. Use the -a 0.0.0.0 option to let the
886
server answer on all local addresses (or specify the address to use a
898
server answer on all local addresses (or specify the address to use a
887
specific interface):</p></div>
899
specific interface):</p></div>
888
<div class="literalblock">
900
<div class="literalblock">
889
<div class="content">
901
<div class="content">
890
<pre><tt>python2 ./scweb-standalone.py -a 0.0.0.0</tt></pre>
902
<pre><tt>python2 ./scweb-standalone.py -a 0.0.0.0</tt></pre>
891
</div></div>
903
</div></div>
892
<div class="paragraph"><p>-p can be used to specify a port.</p></div>
904
<div class="paragraph"><p>-p can be used to specify a port.</p></div>
893
<div class="paragraph"><p>Once started, connecting to the server from any browser should hopefully
905
<div class="paragraph"><p>Once started, connecting to the server from any browser should hopefully
894
display a reasonably self-explanatory interface.</p></div>
906
display a reasonably self-explanatory interface.</p></div>
907
<div class="paragraph"><p>Recent <strong>upmpdcli</strong> packages install the web app as a service named
908
<strong>scweb</strong>. The service is not started by default though, you need to edit
909
<tt>/etc/default/scweb</tt>.</p></div>
895
</div>
910
</div>
896
</div>
911
</div>
897
</div>
912
</div>
898
<div id="footnotes"><hr /></div>
913
<div id="footnotes"><hr /></div>
899
<div id="footer">
914
<div id="footer">
900
<div id="footer-text">
915
<div id="footer-text">
901
Last updated 2015-05-06 10:18:31 CEST
916
Last updated 2015-05-19 16:15:38 CEST
902
</div>
917
</div>
903
</div>
918
</div>
904
</body>
919
</body>
905
</html>
920
</html>