Outils pour utilisateurs

Outils du site


serveur-son

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

serveur-son [2015/12/28 11:25] (Version actuelle)
Ligne 1: Ligne 1:
 +====== Installer un serveur de son sur RaspberryPi2 ======
 +
 +Ce tuto a pour but de garder en mémoire l'​installation d'un serveur de son sur
 +RaspberryPi2 doté d'un DAC branché sur le GPIO, modèle [[http://​www.audiophonics.fr/​fr/​dac-diy/​audiophonics-i-sabre-dac-es9023-raspberry-pi-a-b-20-i2s-p-9341.html|ISabre Dac ES9023]].
 +On activera les drivers nécessaires au fonctionnement du DAC, le serveur de
 +musique MPD, le serveur de son PulseAudio et on essayera de faire marcher avec
 +ça le déport des sorties son d'​autres ordis du réseau local vers le Raspi2
 +(ceci permet en effet de profiter du son sur l'​ampli depuis n'​importe quel
 +autre ordinateur, le Raspi2 reccupérant le flux depuis le réseau).
 +
 +
 +===== Installation de Debian Jessie sur le Rasp =====
 +
 +J'ai choisi d'​installer une debian minimale sur le Rasp. Ceci se fait avec ce petit script bien pratique : [[https://​github.com/​debian-pi/​raspbian-ua-netinst|raspbian-ua-netinstall]].
 +
 +Il faut d'​abord télécharger la dernière version en ''​.img.xz''​ sur [[https://​github.com/​debian-pi/​raspbian-ua-netinst/​releases/​tag/​v1.0.7|cette page]]. Ensuite on va suivre [[https://​github.com/​debian-pi/​raspbian-ua-netinst|ces instructions]] :
 +
 +<code bash>
 +xzcat /​path/​to/​raspbian-ua-netinst-<​latest-version-number>​.img.xz > /dev/sdX
 +sync
 +</​code>​
 +
 +Ensuite on peut ajouter les paquets que l'on veut installer au départ en éditant le fichier ''​installer-config.txt''​.
 +
 +<code bash>
 +preset=server
 +packages=vim,​alsa-base,​bash-completion,​htop,​keyboard-configuration,​raspi-config,​nfs-common,​pulseaudio,​pulseaudio-esound-compat,​pulseaudio-module-lirc,​pulseaudio-module-zeroconf,​lame,​faad,​gstreamer1.0-alsa,​gstreamer1.0-pulseaudio,​gstreamer1.0-plugins-base,​gstreamer1.0-plugins-bad,​gstreamer1.0-plugins-good,​gstreamer1.0-plugins-ugly,​rng-tools,​mpd,​mpc,​psmisc,​bzip2,​unzip,​gzip
 +mirror=http://​mirrordirector.raspbian.org/​raspbian/​
 +release=jessie
 +hostname=cynips
 +domainname=
 +rootpw=xxxxxxxxxx
 +cdebootstrap_cmdline=
 +bootsize=+128M # /boot partition size in megabytes, provide it in the form '​+<​number>​M'​ (without quotes)
 +rootsize= ​    # / partition size in megabytes, provide it in the form '​+<​number>​M'​ (without quotes), leave empty to use all free space
 +timeserver=time.nist.gov
 +cmdline="​dwc_otg.lpm_enable=0 console=ttyAMA0,​115200 kgdboc=ttyAMA0,​115200 console=tty1 elevator=deadline"​
 +rootfstype=ext4
 +rootfs_mkfs_options=
 +rootfs_install_mount_options='​noatime,​data=writeback,​nobarrier,​noinit_itable'​
 +rootfs_mount_options='​errors=remount-ro,​noatime'​
 +</​code>​
 +
 +On insère la carte flashée dans le Rasp et tout est automatique par la suite.
 +
 +Après l'​install et le reboot on se connecte en ssh en utilisant le compte ''​root''​ et le mot de passe ''​raspbian''​. On change ce mot de passe après la première connection avec la commande ''​passwd''​ puis on configure la langue et le clavier avec ''​dpkg-reconfigure locales'',​ ''​dpkg-reconfigure tzdata'',​ ''​dpkg-reconfigure keyboard-configuration''​. On peut ensuite lancer ces commandes pour configurer les utilisateurs,​ le son et le client web pour mpd :
 +
 +<code bash>
 +echo -e "​arm_freq=1000\ncore_freq=500\nsdram_freq=500\nover_voltage=2\ngpu_mem=16\ndtoverlay=hifiberry-dac\ndtoverlay=lirc-rpi\ndtparam=i2c_arm=on\ndtparam=i2s=on\ndtparam=spi=on"​ >> /​boot/​config.txt
 +sed -i '​s/​snd-bcm2835//​g'​ /​etc/​modules
 +echo "​bcm2708-rng"​ >> /​etc/​modules
 +adduser salon
 +addgroup -gid 1010 maison
 +adduser salon audio
 +adduser salon pulse
 +adduser salon pulse-access
 +adduser salon maison
 +mkdir -p /​home/​salon/​.mpd/​playlists
 +chown -R /​home/​salon/​.mpd
 +chmod -R 755 /​home/​salon/​.mpd
 +mkdir /​home/​salon/​musique
 +mkdir /​home/​salon/​data
 +echo "​sirex:/​media/​musique /​home/​salon/​musique ​ nfs defaults ​  ​0 ​  ​0"​ >> /etc/fstab
 +echo "​sirex:/​media/​data /​home/​salon/​data ​ nfs defaults ​  ​0 ​  ​0"​ >> /etc/fstab
 +wget www.ympd.org/​downloads/​ympd-1.2.3-armhf.tar.bz2 -O /​home/​salon/​ympd.tar.bz2
 +tar -xvf /​home/​salon/​ympd.tar.bz2
 +rm /​home/​salon/​ympd.tar.bz2
 +reboot
 +</​code>​
 +
 +===== Configuration de MPD =====
 +
 +MPD utilise un fichier de conf qu'il faut modifier pour que MPD s'​execute en temps que l'​utilisateur que l'on désire et qu'il utilise les bonnes sources d'​entrée et de sortie pour le son. Il faut aussi lui donner les bons chemins vers les répertoires de musique et des configurations.
 +
 +Voici le fichier de conf utilisé (''/​etc/​mpd.conf''​) :
 +
 +<code bash mpd.conf>​
 +music_directory ​        "/​home/​salon/​musique/"​
 +playlist_directory ​             "/​home/​salon/​.mpd/​playlists"​
 +db_file ​                "/​home/​salon/​.mpd/​tag_cache"​
 +log_file ​                       "/​home/​salon/​.mpd/​mpd.log"​
 +pid_file ​                       "/​home/​salon/​.mpd/​pid"​
 +state_file ​                     "/​home/​salon/​.mpd/​state"​
 +sticker_file ​                  "/​home/​salon/​.mpd/​sticker.sql"​
 +user                            "​salon"​
 +bind_to_address ​        "​127.0.0.1"​
 +bind_to_address ​        "​192.168.2.3"​
 +port                            "​6600"​
 +auto_update ​   "​yes"​
 +follow_outside_symlinks "​yes"​
 +follow_inside_symlinks ​         "​yes"​
 +zeroconf_enabled ​               "​yes"​
 +zeroconf_name ​                  "​Musique Cynips"​
 +
 +#input {
 +#    plugin "​cdio_paranoia"​
 +##​cdda://​sr0
 +#}
 +
 +#input {
 +#        plugin "​curl"​
 +##       proxy "​http://​192.168.178.3:​8080"​
 +##       proxy "​proxy.isp.com:​8080"​
 +##       ​proxy_user "​user"​
 +##       ​proxy_password "​password"​
 +#}
 +
 +audio_output {
 +       ​type ​           "​alsa"​
 +       ​name ​           "Dac project"​
 +       ​device ​         "​hw:​0,​0" ​       # optional
 +#      format ​         "​44100:​16:​2" ​   # optional
 +#      mixer_device ​   "​default" ​      # optional
 +#      mixer_control ​  "​PCM" ​          # optional
 +#      mixer_index ​    "​0" ​            # optional
 +#      dop     "​no"​
 +}
 +
 +#​audio_output {
 +#        type            "​pulse"​
 +#        name            "My Pulse Output"​
 +##       ​server ​         "​localhost" ​            # optional
 +#}
 +
 +mixer_type ​                     "​software"​
 +volume_normalization ​           "​yes"​
 +audio_buffer_size ​             "​8192"​
 +filesystem_charset ​             "​UTF-8"​
 +id3v1_encoding ​                 "​UTF-8"​
 +</​code>​
 +
 +
 +===== Mise à jour de la base de donnée de MPD avec nautilus =====
 +
 +Le navigateur de fichier Nautilus permet d'​utiliser des scripts sur les fichiers et répertoires sélectionnés. Pour cela, il faut mettre les scripts dans ''/​home/​user/​.local/​share/​nautilus/​scripts''​. Lorsque l'on ajoute un nouveau répertoire avec de la musique ou qu'on modifie les fichiers à l'​interieur d'un répertoire,​ la base de donnée de MPD n'est pas à jour et on ne peut pas écouter de suite ces fichiers. Il faut donc mettre à jour la base et pour éviter de tout mettre à jour via le client (car ça peut être long), on crée un script nautilus pour y mettre :
 +
 +<code bash update-mpd.sh>​
 +#!/bin/bash
 +rootdirectories="/​home/​pec/​Musique/​ /​media/​data/"​
 +OLDIFS=$IFS
 +IFS=$'​\n'​
 +
 +for file in `echo "​$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"​`;​ do
 +  IFS=$OLDIFS
 +  parent=`dirname "​${file}"​`
 +
 +  for dir in $(echo $rootdirectories);​ do
 +    file=`echo "​${file}"​ | sed "​s|$dir||"​`
 +    parent=`echo "​${parent}"​ | sed "​s|$dir||"​`
 +  done
 +
 +  if [[ -n $(ssh pec@cynips -C "mpc ls \"​$file\""​ 2>&1 | grep "​error:​ Not found"​) ]]; then
 +    nom=$parent
 +  else
 +    nom=$file
 +  fi
 +
 +  ssh pec@cynips -C "mpc update \"​${nom}\""​
 +  zenity --notification --text "Mise à jour de $nom sur MPD" &
 +done
 +</​code>​
 +
  
serveur-son.txt · Dernière modification: 2015/12/28 11:25 (modification externe)