MPD Audio Server

Der mpd ist eine Software, die im shack mit mindestens diesen Komponenten benutzt wird:

  • mpd
  • webinterface
  • soundserver (http stream und pulseaudio)
  • client

Dank recht guter Erfahrungen mit dem MPD wird es gerade wiederaufleben gelassen. Auf dieser Seite entsteht die neue Dokumentation.

Projektziel

Es soll einen Server geben, auf dem die Musik und Streams eingerichtet werden. Es soll möglich sein, dass pro Raum ein Gerät stehen kann, das vom MPD angestreamt wird, sodass man Musik pro Raum regulieren kann. Es soll mindestens eine anstreambare Box in der Lounge stehen. Dazu läuft eine Instanz des Webinterfaces und des MPD pro Raum, in dem einer gebraucht wird. Im Folgenden wird grob zusammengefasst, wie es für die Louge aufgesetzt wurde, sodass man sich daran orientieren kann, das beginnt ab dem „Konfiguration anpassen für die Lounge“ - Abschnitt.

Installation des Servers

Der Server ist eine VM. Ausgehend von einer standard Debian installation:

Installation of Server:

  1. apt-get install vim less mpd libasound2-plugins screen
  2. apt-get remove nano

Configuration of music user / mpd:

  1. adduser shack
  2. chmod g+s /home/shack
  3. chmod g+w /home/shack/music/ /home/shack/playlists/
  4. mkdir /home/shack/playlists
  5. mkdir /home/shack/music

Konfiguration anpassen für die Lounge

Configuration of Webinterface

Die Entscheidung fiel (mangelns besseren Wissens und mal rumprobiert haben) auf ein Webinterface namens „client175“. Dieses

Der Client kann heruntergeladen werden auf http://code.google.com/p/client175/. Die Konfiguration für die Lounge gibts im Wiki unter shack_wie_tut_der_mpd:client175-config.

Testen ob alles tut via

python server.py 

Proxy aufsetzen und die MPD-Webinterface-Instanzen mit /raumname zugänglich machen

apt-get install apache2

Aktivieren des mod proxy:

a2enmod proxy
a2enmod proxy_http
/etc/init.d/apache2 restart

Dann die Apache Config der Seite einspielen und fertig.

Auf http://lounge.mpd.shack/ läuft der MPD für die lounge.

Die Client Konfiguration

Für den Client wird ein NFS-Root vorbereitet. Auf dem Server:

apt-get install nfs-kernel-server
echo "/nfs/wyseterm/ 10.42.0.0/16(ro,sync,no_subtree_check)" > /etc/exports
exportfs -a
mkdir /nfs
mkdir /nfs/wyseterm
debootstrap --arch=i386 squeeze /nfs/wyseterm
chroot /nfs/wyseterm
apt-get install debian-keyring vim less linux-image-2.6.32-5-686
apt-get remove nano

Als näcshtes wird die FSTAB eingeschoben.

Dann die Config für den TFTP boot unter der mac-adresse ablegen.

DEFAULT boot/mpd/vmlinuz
append vga=normal initrd=boot/mpd/initrd.img root=/dev/nfs nfsroot=10.42.0.114:/nfs/wyseterm http://lounge.mpd.shack:8000/mpd.ogg

Konfiguration der Installation

Der MPD-Client kriegt per Kernel Commandline sein Stream target mit. (anhängen von mpdstream=http://lounge.mpd.shack:8000/mpd.ogg für die lounge).

Auswertung durch 2 Skripte:

/root/bin/music.pl

#!/usr/bin/perl
use strict;

my $CMDLINE = '/proc/cmdline';

open(my $fh, "<$CMDLINE") or die("cannot open cmdline $CMDLINE\n");

my $line = <$fh>;
close($fh);

my @params = split / /,$line;

for(my $i=0; $i<$#params; ++$i)
{
        my ($k,$v) = split /=/,$params[$i];
        print $v if($k eq "mpdstream");
}

und /root/bin/enterpriseloop.pl

#!/usr/bin/perl

use strict;

my $CMD='ogg123 -b 64 $(/root/bin/music.pl)';

while(1)
{
      system($CMD);
      print("stream died, waiting for a bit before trying again\n");
      sleep(3);
}

und dann der Eintrag in der inittab:

6:23:respawn:perl /root/bin/enterpriseloop.pl 38400 tty6

sowie die alsa Einstellungen so machen, dass alsa auf so 80% Lautstärke steht.

Die Clients erkennen via COmmandline ihren targetstream. Daher können alle vom gleichen nfs readonly booten.

Client updated db

in die crontab von root eintragen:

0 * * * * mpc –port 66000 update

MPD Controlports

Lounge ... 6600
Seminarraum ... 6601
Elab ... 6602
kueche ... 6603
crafting ... 6604
fablab ... 6605
workshop ... 6606

MPD Audio Out

Lounge ... 8000
Seminarraum ... 8001
Elab ... 8002
kueche ... 8003
crafting ... 8004
fablab ... 8005
workshop ... 8006

Testen: einen Stream adden

URL zum Merken für Content (einen stream) http://de.scenemusic.net/necta192.mp3

Trouble Shooting

Lounge: MPD läuft, aber in der Lounge kommt keine Musik

Falls der MPD läuft, in der Lounge aber trotz eingeschaltetem Verstärkerdings und ausreichend gepegelter Lautstärke keine Musik zu hören ist, empfiehlt der bronsen folgende Schritte:

  1. Verstärkerdings ausschalten
  2. Chemotherapie ausschalten
  3. Chemotherapie einschalten
  4. warten
  5. noch so lange warten, bis Chemotherapie gepiepst hat
  6. Verstärkerdings einschalten

Vergisst man, das Verstärkerdings auszuschalten bevor man Chemotherapie einschaltet, DANN STERBEN LEUTE!

shack_wie_tut_der_mpd.txt · Zuletzt geändert: 2014/01/11 00:04 von 93.193.96.167