====== MPD Audio Server ====== {{tag>project software infrastructure tools}} 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: ===== - apt-get install vim less mpd libasound2-plugins screen - apt-get remove nano ===== Configuration of music user / mpd: ===== - adduser shack - chmod g+s /home/shack - chmod g+w /home/shack/music/ /home/shack/playlists/ - mkdir /home/shack/playlists - mkdir /home/shack/music - edit [[infrastruktur:mpd:mpd-config|/etc/mpd.conf]] ===== 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/|http://code.google.com/p/client175/]]. Die Konfiguration für die Lounge gibts im Wiki unter [[infrastruktur:mpd:client175-config|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 [[infrastruktur:mpd:apache_config|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 [[friedhof:shack_wie_tut_der_mpd:fstab|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 klo ... 6607 ===== MPD Audio Out ===== Lounge ... 8000 Seminarraum ... 8001 Elab ... 8002 kueche ... 8003 crafting ... 8004 fablab ... 8005 workshop ... 8006 klo ... 8007 ====== 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: - Verstärkerdings ausschalten - Chemotherapie ausschalten - Chemotherapie einschalten - warten - noch so lange warten, bis Chemotherapie gepiepst hat - Verstärkerdings einschalten Vergisst man, das Verstärkerdings auszuschalten bevor man Chemotherapie einschaltet, DANN STERBEN LEUTE!