Translate

Indice

1) Configurazione e assemblaggio componenti hardware;

2) Installazione del sistema operativo Linux "Voyage MPD";

3) Configurazione del programma lettore audio MPD: "Music Player Daemon";

4) Configurazione programmi client per comandare il music server MPD con un qualsiasi PC provvisto di collegamento LAN o wi-fi: GMPC per Linux, Microsoft Windows, Apple MacOs e il browser web Mozilla Firefox con il componente aggiuntivo Music Player Minion per Linux, Apple MacOs e Microsoft Windows;

5) Configurazione programmi client per comandare il music server MPD con un cellulare/smartphone provvisto di collegamento bluetooth: Remuco per Android (Samsung etc etc) e Remuco, Anyremote e Bemused-mpc per Symbian (Nokia  etc etc); 

6) Configurazione programmi client per comandare il music server MPD con un cellulare/smartphone o un tablet provvisto di collegamento wi-fi: MPoD per iOS (iPod, iPad, iPhone) e MPDroid per Android (Samsung etc etc);

7) Ottimizzazioni1. Monta disco formattato in "NTFS"; 2. Monta disco formattato in "fat32", "ext2"; "ext3" o "ext4"; 3. Monta disco di rete con Samba (NAS); 4. Spengere il "music server" con un tasto e velocizzare l'avvio; 5. Creare un web server - MPoD e MPaD cover art; 6. Creare una web radio con MPD - Streaming; 7. Last Fm plugin; 8. Permettere le scritture su disco all'avvio e sulle directory; 9. Modificare le directory di default; 10. File di configurazione "/etc/mpd.conf"; 11. Kernel RT Realtime; 12. Kernel per processori Intel atom; 13. Installare una versione aggiornata di MPD e abilitare streaming MP3 "--enable-lame-encoder"; 14. Bit Perfect; 15. Indirizzi radio web.

9. Progetti futuri

AGGIORNAMENTO 18 MAGGIO 2013

Grazie al lavoro di Michelangelo di "RaspyFi" (v. http://www.raspyfi.com/raspberry-pi-usb-audio-fix/) è stato risolto il problema che affliggeva il piccolo "raspberry PI" ovvero la compatibilità con i DAC USB asincroni o più in generale con le interfacce "USB Audio Class 2".
In questo momento, sto ascoltando "L.A. Woman" 24/96. Nessun interruzione, nessun "pop" neanche durante la riproduzione di file 24/192. Sto usando senza problemi sia l'Arcam rPAC che l'Arcam rDAC.
Ottimo lavoro Michelangelo!!! Grazie per aver messo a disposizione di tutti la tua esperienza.

P.S.: grazie a quest'ultimo aggiornamento di RaspyFi ed alle recensioni del dott. Cadeddu, Direttore di TNT-Audio, oggi ho completato il mio impianto B ultra economico che si presenta così:

SORGENTE: Raspberry PI (35€) + Arcam rPAC (100€ usato)

AMPLIFICATORE: Dayton DTA-100a (100€)

DIFFUSORI: Pure Acoustic PRO838 (179€)

TOTALE: 400€ circa (escluso l'HD sul quale è archiviata la musica)

Ho provato il "raspi" anche nell'impianto A. Non ho parole. OTTIMI RISULTATI :-))






AGGIORNAMENTO (15 OTTOBRE 2012):


Sono tornato in possesso dell'Arcam rDAC. Ho effettuato delle prove con il Raspberry PI. Esito negativo. Suono inascoltabile dovuto a continue interruzioni che si presentano sotto forma di "crack". Secondo gli sviluppatori della Fondazione, si tratta di un problema software dovuto all'utilizzo di driver USB non adeguati alla scheda in questione. Mi auguro che sia così e che non si tratti di un problema hardware della piccola scheda. Rimango comunque in attesa di novità circa lo sviluppo dei driver in questione perché l'idea di questa economica e minuscola scheda come sorgente digitale Hi-Fi mi appassiona.


P.S.: L'Arcam rDAC funziona egregiamente con il mio music server "Voyage MPD". Ho confrontato durante gli ultimi mesi l'uscita analogica della scheda audio installata all'interno del music server e l'uscita analogica dell'Arcam rDac collegato tramite USB allo stesso music server. Non ha vinto nessuno. Il suono di entrambi è fantastico e la sostituzione della scheda audio Asus con il DAC dell'Arcam al momento risulterebbe un "sidegrade" relativamente al mio attuale sistema.

AGGIORNAMENTO (31 LUGLIO 2012):


Finalmente è arrivata la scheda Raspberry Pi. Ho già testato il piccolo sistema operativo (109 MB) basato su Debian senza interfaccia grafica e con il supporto per l'"hard float" che garantisce ottime prestazioni. MPD gira alla grande. L'uscita audio integrata non è adatta ad un'ascolto Hi-Fi. Sono in attesa di rientrare in possesso del DAC "Arcam rDAC" (e provare anche l' rPAC!) per provare l'unica uscita digitale audio di questa scheda: l'uscita USB. Questo DAC dovrebbe garantire un buon isolamento e la tecnologia dCS dovrebbe fare il resto. A presto.

----------------------------------------------------------------------------------------------------------------------------------

Nel prossimo progetto, ho intenzione di provare questa scheda madre basata sul sistema ARM.
E' grande quanto un pacchetto di sigarette, una carta di credito, e dispone, come ogni normale PC moderno, di tutto il necessario per i nostri propositi audiofil-informatici (!):

 - alimentazione tramite ingresso microUSB;

 - processore "Broadcom" integrato da 700 Mhz;

 - memoria RAM integrata da 256 MB;

 - disco/scheda SD da 1 GB (boot con sistema operativo Linux "Debian");

 - LAN Ethernet 10/100 (da usare, per esempio, come ingresso dati audio provenienti dal disco di rete, anche detto NAS, dove è archiviata la nostra musica);

 - USB 2.0 (compatibile con il recente protocollo USB Audio Class 2, anche detto UAC2, adottato nei più recenti DAC con risoluzione fino a 24bit/192 Khz).

Potrebbero sorgere problemi per l'installazione del sistema operativo "Voyage MPD" in quanto, al momento (luglio 2012), non mi risulta che lo sviluppatore abbia intenzione di riscrivere "Voyage MPD" per sistemi ARM. In ogni modo, è disponibile una versione di Linux "Debian" pensata per sistemi ARM da installare sulla scheda SD che verrà, poi, inserita nello slot della piccola scheda madre per il boot.

In riferimento alla libreria musicale, grazie all'utilizzo dell'ingresso LAN per il collegamento con il NAS e non della porta USB per il collegamento con un ordinario hard disk esterno USB, sarà possibile, in teoria, non influire sul delicato collegamento col DAC USB esterno. 
A tal proposito, è d'uopo avere in mente sin d'ora che la bontà del progetto, in termini Hi-Fi, dipenderà quasi esclusivamente dalla qualità del collegamento USB tra il mini PC e il DAC USB; bisognerà verificare, infatti, la qualità della trasmissione dei dati digitali audio attraverso la porta USB spesso soggetta ad importanti interferenze elettriche che degradano inevitabilmente il segnale, come ho potuto constatare su altri sistemi. 
Allo stesso tempo, però, è anche opportuno ricordare che la scheda in questione verrà alimentata attraverso un piccolo alimentatore (senza messa a terra) per cellulari/smartphone con bassissimo voltaggio (5 V e non 12 V come accade con le altre schede madri mini-ITX) e che l'unico "bus" USB disponibile, grazie all'utilizzo di un NAS come sopra chiarito, dovrà gestire esclusivamente la trasmissione dei dati digitali audio in uscita verso il DAC.
In ogni modo, in presenza di interferenze elettriche causate dal collegamento USB, potrebbe essere una soluzione quella di eliminare i conduttori del cavo USB che trasmettono l'elettricità avendo cura di non fare altrettanto con i conduttori del cavo che trasportano i dati. Questa soluzione, però, potrà essere adottata solo da coloro che utilizzano un DAC che non necessita dell'ulteriore alimentazione proveniente dalla porta USB del PC.
Altra alternativa più efficiente per eliminare le interferenze elettriche nei collegamenti audio USB ma non praticabile sulla piccola scheda madre per via dell'assenza di un ingresso PCI è quella di inserire un "host" PCI-USB tipo "SOtM tX-USB".

Per chi non è dotato di DAC USB e non ha intenzioni audiofile, è disponibile un'uscita audio analogica stereo tramite il solito connettore "jack" da 3,5 mm presente, solitamente, in tutti gli attuali PC portatili; la scheda, inoltre, dispone di un' uscita video ad alta risoluzione (1080p).
La "schedina" costa attualmente 27,43 € ed è distribuita da una società con sede in Italia.

8.14 Streaming e web radio

Piuttosto semplice anche per un neofita che è arrivato a leggere questo post.
Dobbiamo configurare MPD nella parte del file di configurazione che riguarda l'output audio. Apriamo il terminale e digitiamo

nano /etc/mpd.conf
 
dopodichè modifichiamo il file in questo modo


# An example of a httpd output (built-in HTTP streaming server):
#
audio_output {
        type             "httpd"
        name            "cb"
        encoder       "vorbis"
        port             "8000"
        quality         "4"
#     bitrate         "320"                  
#     format          "44100:16:2"
}
#
#


Per rendere effettive le modifiche riavviate MPD col comando

/etc/init.d/mpd restart

In questo modo diciamo a MPD di tramettere un segnale stereo in formato ogg-vorbis, un formato audio digitale con perdita di qualità (lossy). Ad un primo ascolto, il formato con estensione .ogg risulta a me migliore rispetto all'mp3 che ha un bitrate fisso.
E' inoltre possibile inviare i files audio nel mondo web anche in .flac; ovvio che, in questo caso, la vostra banda di rete domestica dovrà gestire flussi di dati maggiori (fino a 1411 kbps per un CD ordinario) da inviare via http:// e che i vostri ascoltatori dovranno avere una banda sufficiente in casa o fuori per riuscire ad ascoltare senza problemi di interruzione dovuti al buffer pieno del lettore. Nel mio caso sono riuscito ad ascoltare tranquillamente file .flac senza alcun problema ma, in altre case con altre reti ho incontrato problemi di buffer dovuti alla poca banda disponibile o alla lontananza dell'access point. E' per questo che consiglio ".ogg" con "quality 4". In questo modo possiamo trasmettere, senza saturare la rete di casa, ad una media di 128 kbps/s, ottimo rapporto qualità-funzionalità se pensiamo alla banda di upload assegnataci dal nostro gestore ADSL che si aggira di solito intorno agli 0,4 - 0,5 MB al secondo quindi 400 - 500 kbps al secondo. Fate le vostre prove in ogni modo.

(nella foto GMPC che riproduce lo streaming trasmesso dal server con decodifica "mp3" on-the-fly, qualità 0.5)

Con le altre modifiche ho indicato il nome della radio che potete cambiare a vostro piacere e la porta che useranno i nostri ascoltatori per ascoltare. Ricordatevi di aprire la stessa porta sul router ovvero se usate quella di default come nell'esempio dovete aprire la porta 8000 del vostro router (v. istruzioni router).
A questo punto non ci resta che salvare il file e riavviare MPD. Al suo riavvio basterà aprire un lettore multimediale come VLC che consiglio sia su Apple sia su Microsoft che, ovviamente, su GNU/Linux per ascoltare la nostra radio in giro per il mondo (se la crisi permette!).
Potete ascoltare ovunque da remoto la vostra radio anche con un PC con Linux usando sempre GMPC o "Audacious" in quanto garanzia di bit-perfect se configurati. L'indirizzo URL della radio da inserire, per esempio, in VLC - Menù - Media - Apri flusso di rete dovrà essere simile a questo:

http://xxx.xx.xx.xxx.xx:8000/mpd.ogg

dove al posto delle "x" dovrete inserire il vostro indirizzo IP pubblico di casa che potete reperire tramite vari siti che troverete digitando su Google "Indirizzo IP".
Per ovviare al problema piuttosto noto del cambio automatico degli indirizzi IP praticamente ogni giorno, sarà necessario avere un IP statico gratutito o a pagamento. 
Esistono vari tipi di servizi gratuiti. Grazie a questi servizi di host tipo "NoIP" o "dyndns" possiamo dare un nome al nostro indirizzo URL in modo che gli ascoltatori possano collegarsi sempre attraverso il nome prescelto. Spetterà a noi reindirizzarli verso l'attuale nostro indirizzo IP andando ad aggiornare il server col nuovo indirizzo IP pubblico che ha preso.
Per evitare di dover aggiornare manualmente l'indirizzo IP pubblico del nostro server ogni giorno, esistono alcuni router, tipo KRAUN, che offrono gratuitamente il servizio di aggiornamento automatico se, come nel caso di KRAUN, stiamo usufruendo del servizio gratuito di host di "dyndns". Basterà configurare il router nella parte che riguarda "DDNS". Altri router offrono lo stesso servizio ma con altri gestori di host tipo "NoIP". Informatevi!
Oltre che ascoltare la vostra radio in streaming ovunque voi siate, potete allo stesso tempo comandarla usando il browser web Mozilla Firefox col componete aggiuntivo "Music Player Minion" o il solito GMPC. Basterà inserire nella configurazione del client l'indirizzo IP pubblico, non quello privato con cui accedete dentro casa, del nostro server e seguire le istruzioni nel post dedicato a GMPC.

Inoltre se volete accendere il vostro music server da remoto attraverso internet e grazie al servizio WOL Wake On Lan dovete installare "ethtool"

apt-get install ethtool

dopodichè create un file col comando

nano /etc/init.d/wakeonlanconfig

ed inserite queste righe


#!/bin/bash

### BEGIN INIT INFO
# Provides:          example
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Example initscript
# Description:       This file should be used to construct scripts to be
#                    placed in /etc/init.d.

ethtool -s eth0 wol g

exit


Poi

update-rc.d -f wakeonlanconfig defaults

e

/etc/init.d/wakeonlanconfig

Andate sul PC client Ubuntu e scaricate "gwakeonlan" versione 5.1  per accendere il server seguendo le istruzioni.

Per chi avesse intenzione di rendere pubblica la propria radio, ricordo che in Italia in materia di radiodiffusione via etere o web vige ex multis la legge c.d. Mammì n. 223 del 6 agosto 1990 e, in materia di diritto d'autore, la recente legge n. 633 del 22 aprile 1941 (v. s.i.a.e.).

Di seguito alcuni indirizzi URL di radio che trasmettono musica stereo (16 bit - 44100 hz) attraverso la rete internet (in parentesi il formato ed il "bit-rate" ovvero la qualità audio dello streaming del file audio trasmesso dalla radio):

LifeGate Radio  (MPEG-4 / HE-AAC+@64 kbps)  [Peccato non ci sia un canale streaming - con bitrate uguale o maggiore ai 128 kbps "sindacal-audiofili" (!) - riservato a chi ascolta non solo con le cuffie dello smartphone questa interessante Radio e realtà italiana.]
http://onair11.xdevel.com:8024/

LifeGate Music  (MPEG-4 / HE-AAC+@64 kbps) [Vale, a fortiori, quanto sopra :-)]
http://onair18.xdevel.com:8184/

Sky FM - Roots Reggae DJ Bahilman   (MPEG-4 / HE-AAC+@40 kbps)
http://listen.sky.fm/public1/rootsreggae.pls

RMC2  (MPEG-2 / MP3@128 kbps)
http://shoutcast.unitedradio.it:1107/

Soma FM - Lush   (MPEG-4 / AAC@128 kbps)
http://mp1.somafm.com:8808

Soma FM - Dronezone  (MPEG-4 / AAC@128 kbps)
http://mp4.somafm.com:8100

Soma FM - Groove salad  (MPEG-4 / AAC@128 kbps)
http://sfstream1.somafm.com:3000

Soma FM - Digitalis  (MPEG-4 / AAC@128 kbps)
http://mp2.somafm.com:8906

Linn Radio   (MPEG-2 / MP3@320 kbps)
http://89.16.185.174:8003/stream

Linn Jazz   (MPEG-2 / MP3@320 kbps)
http://89.16.185.174:8000/stream

Linn Classic   (MPEG-2 / MP3@320 kbps)
http://89.16.185.174:8004/stream

KEXP Radio  (FLAC)
mms://media-wm.cac.washington.edu/KEXP-Uncompressed

Czeck Radio  (FLAC [48000 hz])
http://radio.cesnet.cz:8000/cro-d-dur.flac

8.13 "mpdrandomd"

Grazie a questo "script", sarà possibile permettere ad MPD di aggiungere automaticamente in modo casuale una canzone alla volta in playlist terminata la riproduzione della traccia precedente senza dover inserire l'intera libreria in playlist.
Questo "tweak" risulterà utile soprattutto a chi dispone di una vasta libreria musicale e vuole evitare problemi di collegamento o crash di sistema tra il client ed il server quando viene aggiunta l'intera libreria musicale in playlist (ho notato soprattutto con dispositivi android utilizzati come client molti problemi di collegamento quando inserivo in playlist l'intera libreria mentre con l'ottimo client "MPoD" l'unico problema era che dovevo aspettare una trentina di secondi per avere tutte le informazioni della traccia in ascolto).
Per far funzionare questo "script" sarà prima necessario installare una dipendenza

apt-get install python-mpdclient

Poi bisognerà creare uno "script" col comando

touch daemon.py

Copiare il contenuto dello "script" che trovate qui, editando il file appena creato col comando

nano daemon.py

Rendere lo script eseguibile col comando

chmod +x daemon.py

Adesso bisognerà creare un altro "script" col comando

touch mpdrandomd.py

Copiare il contenuto dello "script" che trovate qui, editando il file appena creato col comando

nano mpdrandomd.py

Rendere lo script eseguibile col comando

chmod +x mpdrandomd.py

e farlo partire in automatico all'avvio editando il file "crontab" col comando

crontab -e

e aggiungendo all'interno del file questa stringa

@reboot ./mpdrandomd.py --no-update --enqueue=5 --keep=5

Per chi non usa "Voyage MPD" ma un'altra distribuzione Linux, prima di eseguire i comandi sopra esposti sarà necessario avere i permessi di "root" (amministratore) con il comando "su" come spiegato nei post precedenti.


8.12 Bit Perfect

MPD invia sempre in automatico il file audio nel formato audio che legge (bit depth e sample rate) al driver audio ALSA senza dover configurare nulla ogni volta che ascoltiamo file audio con formati diversi tra loro. Durante l'ascolto, per verificare che il file audio che sta riproducendo MPD non è affetto da upsampling o oversampling e venga quindi riprodotto in bit-perfect (solita paranoia audiofilo-informatica!!), digitate sul solito terminale questo comando (per averne la sicurezza scientifica!)

cat /proc/asound/card0/pcm0p/sub0/hw_params

(per alcuni di voi sarà necessario cambiare "card0" con "card1" o "pcm0p" con "pcm1p", dipende da come Linux chiama l'uscita analogica o digitale della vostra scheda audio, v. sopra)


Esempio n. 1
CD (16 bit - 44100 hz)


Esempio n. 2
File hi-res (24 bit - 44100 hz)


Esempio n. 3
File hi-res (24 bit - 48000 hz)


Esempio n.4
File hi-res (24 bit - 88200 hz)


Esempio n. 5
File hi-res (24 bit - 96000 hz)


Esempio n. 6
File hi-res (24 bit - 176400 hz)


Esempio n. 7
File hi-res (24 bit - 192000 hz)



Come potete notare, la mia scheda audio supporta formati ("bit depht") 16 bit e 24 bit con qualsiasi "sample rate" (Non fatevi ingannare dal valore "format=S32_LE". Tutte le schede audio con chip CMI8788 richiedono che i "sample" a 24 bit siano allineati in memoria come parole a 32 bit. Gli otto zeri così aggiunti saranno ignorati dall'hardware senza che ciò possa avere alcun effetto sul "bit-perfect"). MPD non "tocca" assolutamente nulla, invia solamente il dato audio, il file, al DAC esterno o interno alla scheda audio. Questo è bit-perfect o bit-exact, se preferite chiamarlo così. Per chi usa Ubuntu o altre distribuzioni, consiglio di disinstallare "Pulse Audio" che, invece, non è presente in "Voyage MPD". 


Per avere certezza che nessun "resample" a 48000 hz venga effettuato dal mixer (come accadrebbe se non avessimo detto ad MPD di inviare il flusso dati direttamente al DAC - DAC interno della scheda audio o DAC esterno - grazie alla stringa "hw:0,0", saltando, "bypassando" dmixer, il mixer del driver audio ALSA) controllate con il comando "top" l'uso del processore:


Come potete notare (v. foto), il mio processore da 1,6 Ghz sta usando l'1,5% delle sue risorse (qualora stessi riproducendo un file audio .wav senza compressione e quindi senza necessità di decodifica la percentuale scenderebbe a 0,3%) mantenendo in background solo pochissimi processi non in esecuzione. Qualora invece il mixer stesse facendo resample a 48000 come di default (senza specificare al driver ALSA di inviare il flusso dati audio direttamente alla scheda audio es.: "hw:0,0") la percentuale sarebbe sicuramente maggiore superando il 20% come ho potuto constatare. Notate inoltre come l'unico processo attivo ed in esecuzione sia MPD come potete notare (v. foto) e come l'intero sistema operativo stia usando quasi tutti i 2 GB di memoria RAM di cui dispone il sistema.


8.11 Installare una versione aggiornata di MPD e abilitare streaming MP3 (--enable-lame-encoder)

MPD non usa di default un "encoder" mp3 universalmente riconosciuto per effettuare lo streaming della vostra musica verso altre utenze come chiarito nel paragrafo riguardante la web radio. Per abilitare questo servizio dobbiamo ricompilare il programma e installarlo. Per ulteriori informazioni consultate http://www.symphonic-net.com/kubotayo/articles/voyagempd.html#mpd17. (Non è necessario ricompilare MPD se avete la versione 0.16.7 o successive ovvero se avete installato "Voyage MPD" 0.8.5 o successive).
Prima di iniziare, bisogna chiudere il programma MPD che avete usato fin'ora

pkill mpd

Installare i programmi per compilare

apt-get install aptitude wget git binutils gcc make subversion autoconf automake autotools-dev libtool pkg-config build-essential libncurses5-dev libncursesw5-dev linux-headers-`uname -r` libglib2.0-0 libglib2.0-dev git g++

Installare le dipendenze di MPD

apt-get install libfaad2 libfaad-dev libflac8 libflac-dev libogg0 libogg-dev libvorbis0a libvorbis-dev libid3tag0 libid3tag0-dev libmad0 libmad0-dev libcue-dev libcue1 libasound2 libasound2-dev libao-dev libwavpack-dev libwavpack1 libsamplerate0 libsamplerate0-dev libmikmod2-dev libmikmod2 libmikmod2-dev libshout3-dev  libavformat53 libavformat-dev libavcodec-dev libavcodec53 libavutil51 libavutil-dev libaudiofile1 libaudiofile-dev libcurl4-openssl-dev libmms-dev libmms0 libtwolame-dev libtwolame0

Scaricare le dipendenze per l' "encoder" MP3

wget http://debian-multimedia.org/pool/main/l/lame/libmp3lame-dev_3.98.4-0.0_i386.deb
wget http://debian-multimedia.org/pool/main/l/lame/libmp3lame0_3.98.4-0.0_i386.deb

e installiamole subito

dpkg -i libmp3lame0_3.98.4-0.0_i386.deb libmp3lame-dev_3.98.4-0.0_i386.deb

Scaricare l'ultima versione di MPD

git clone git://git.musicpd.org/master/mpd.git
 
o scaricate una versione a vostro piacere

wget http://www.musicpd.org/download/mpd/0.18/mpd-0.18.4.tar.xz

estrarre il file archivio appena scaricato col comando

tar -Jxf mpd-0.18.4.tar.xz

Dirigersi nella cartella MPD

cd mpd
 
o se avete installato una versione a vostro piacere non utilizzando "git", dovrete prima estrarre l'archivio e poi dirigervi verso la directory dove avete scaricato MPD

cd mpd-0.16.6

Fate partire lo script

./autogen.sh
 
o se avete installato una versione a vostro piacere non utilizzando "git", passate subito alla configurazione (es.: ./configure .... v. sotto)
 
Configurate a vostro piacere (per una lista delle opzioni usate il comando "./configure --help" lanciandolo dalla directory dove ora vi trovate)

./configure --enable-lame-encoder --disable-sqlite --disable-sndfile --disable-oss --disable-pulse --disable-ipv6 CFLAGS="-O2 -mtune=`uname -m`" --enable-lastfm --disable-jack --disable-recorder-output --enable-twolame-encoder --enable-wave-encoder --disable-cdio-paranoia --disable-lsr --disable-fluidsynth --disable-gme
 
Procediamo con l'installazione

make

Concludiamo l'installazione

make install

Cambiamo la directory di default

echo DAEMON=/usr/local/bin/mpd >>/etc/default/mpd

Facciamo ripartire MPD

/etc/init.d/mpd restart

Verifichiamo di aver installato la corretta versione

mpc version

root@voyage:~# mpc version
mpd version: 0.17.0

Se volete effettuare una nuova installazione ridirigetevi alla cartella/directory dove avete scaricato MPD

cd mpd

e fate una pulizia

make clean

disinstallate

make unistall

e riniziate la procedura suesposta.
Per tornare alla vecchia versione di MPD che avevate prima delle modifiche, fermate MPD

pkill mpd

Modificate il file di default col comando

nano /etc/default/mpd

e commentate "DAEMON=/usr/local/bin/mpd" in questo modo

#DAEMON=/usr/local/bin/mpd

Fate ripartire il demone audio

/etc/init.d/mpd restart
 
(febbraio 2012)


8.10 Kernel Atom

Il kernel usato da "Voyage MPD" è pensato per processori AMD e non prevede un supporto completo ai processori Intel. Se avete un processore tale, seguite le indicazioni presenti in questo paragrafo qualora abbiate intenzione di configurare alcuni servizi.
Scaricate i programmi necessari alla compilazione del kernel (v. qui la guida wiki Voyage e qui un'altra guida molto semplice)

apt-get install kernel-package ncurses-dev fakeroot wget bzip2 sharutils

Installate il programma "locales"

apt-get install locales

Configurate il programma "locales"

dpkg-reconfigure locales
 
Installate la nuova versione di "grub" col comando (rispondete "OK" alle due domande)

apt-get install grub

Dirigersi nella cartella/directory (dovete rimanere sempre sulla directory "/usr/src" per effettuare i comandi di seguito esposti)

cd /usr/src

Scaricare il sorgente del kernel Linux

wget http://www.voyage.hk/dists/0.7/linux/linux-source-2.6.38-voyage_9.0-1_all.deb

Installare il sorgente del kernel Linux

dpkg -i linux-source-2.6.38-voyage_9.0-1_all.deb

Decomprimere l'archivio

tar xjvf linux-source-2.6.38-voyage.tar.bz2

Scaricare il file di configurazione del kernel Voyage

wget http://mirror.voyage.hk/download/kernel_config/config-2.6.38-voyage_9.0-1

Copiare il file di configurazione all'interno del sorgente col comando

cp config-2.6.38-voyage_9.0-1 linux-source-2.6.38-voyage/.config

Dirigersi nella cartella del sorgente

cd linux-source-2.6.38-voyage

Configurate (compilare) il kernel col comando (v. qui per modificare la frequenza del processore e abbassarla e v. qui per le modifiche da effettuare)

make menuconfig

Creare i file .deb del kernel ("linux_image" e "linux_headers") che abbiamo appena modificato

make-kpkg --initrd --revision=voyageMPDatom0.1 kernel_image kernel_headers

Se non state compilando il kernel sulla macchina con "Voyage MPD" ma su un'altra macchina dove vi siete loggati non essendo "root" digitate

make-kpkg --revision=voyageMPDatom0.1 kernel-image kernel_headers --rootcmd fakeroot --initrd

Prima di installare i file appena creati, dobbiamo usare il comando

cd

cd /usr/src
 
Installare i file "linux_image" e "linux_headers" del kernel sulla nostra macchina Atom

dpkg -i linux-image-2.6.38_voyageMPDatom0.1_i386.deb

dpkg -i linux-headers-2.6.38_voyageMPDatom0.1_i386.deb

Aggiornare "grub" prima del riavvio

update-grub

Installare un programma per controllare il processore (CPU)

apt-get install cpufrequtils
 
Riavviando userete automaticamente il nuovo kernel senza bisogno di selezionarlo.

Per verificare la frequenza del processore usate il comando 

cpufreq-info


(Setup generale)

(Processore Intel Atom)


(CPU frequency scaling: ondemand; in questo modo è possibile dimezzare la frequenza del processore, come nel mio caso, da 1,6 Ghz a 800 Mhz)



(Configurazione driver audio ALSA sia per alcune schede PCI audio sia per DAC USB)





8.9 Kernel RT Realtime

Se avete intenzione di sfruttare al meglio il kernel realtime già installato (ma servirà? :)) dovete usare la versione di MPD 0.16.2 o 0.17.0 e i driver ALSA 1.0.24. Quindi se state usando la versione di "Voyage MPD" 0.7.0 che ha MPD 0.16.0 e i driver ALSA 1.0.23 sarà impossibile effettuare le modifiche di seguito esposte. Per effettuare la modifiche dovete avere installato "Voyage MPD" 0.7.5 che ha MPD 0.16.2 e ALSA 1.0.24. Se avete pazienza, presto uscirà un'altra versione aggiornata di "Voyage MPD" con tutto incluso e configurato.
Per quanto riguarda la modifica proposta, fate riferimento a questa guida http://kubotayo.web.fc2.com/voyagempd.html#bianries.
Prima di tutto scaricate i file binari col comando

wget http://hpcgi3.nifty.com/yo_kubota/downlog.cgi?edata/mpd0162-rtopt-build.tgz

dopodichè estraete l'archivio col comando

tar zxvf downlog.cgi?edata%2Fmpd-rtopt-110605.tgz

A questo punto non ci resta che copiare i file binari col comando

sh mpdinstall.sh

Adesso riavviate MPD e configurate a vostro piacere la priorità dei vari processi di MPD nella nuova sezione "realtime_option" di "/etc/mpd.conf". Modificate pure la priorità in "audio_output":

realtime_option {
   memlock              "yes"
    stack_reserve        "1024"
    heap_reserve         "0"

    main_priority        "OTHER:0"
    player_priority      "FIFO:49"
    decoder_priority     "FIFO:48"
    update_priority      "OTHER:0"

audio_output {
        type            "alsa"
        name            "scheda audio"
        device          "hw:0,0"
        priority        "FIFO:99"
#       format          "44100:16:2"    # optional
#       mixer_device    "default"       # optional
#       mixer_control   "PCM"           # optional
#       mixer_index     "0"             # optional
}

Come potete notare, potete modificare la priorità realtime di: main, player, decoder, update, audio_output. Io mi trovo molto bene usando i seguenti parametri:


realtime_option {
   memlock              "yes"
    stack_reserve        "1024"
    heap_reserve         "0"

    main_priority        "OTHER:0"
    player_priority      "FIFO:50"
    decoder_priority     "FIFO:70"
    update_priority      "OTHER:0"

audio_output {
        type            "alsa"
        name            "scheda audio"
        device          "hw:0,0"
        priority        "FIFO:95"
#       format          "44100:16:2"    # optional
#       mixer_device    "default"       # optional
#       mixer_control   "PCM"           # optional
#       mixer_index     "0"             # optional
}


In questo modo, differentemente dal primo esempio valido per tutti, ho aumentato la priorità del "decoder" a discapito della priorità del "player" (che si occupa solo di ricevere i comandi dal client) in quanto, usando file compressi senza perdita di qualità come i ".flac", preferisco che il processore e quindi il PC si occupi prima di tutto di decodificare i miei file compressi e solo dopo di inviarli all' "audio_output" (al quale ho abbassato di poco la priorità per velocizzare il comando del player).

Per ulteriori istruzioni sull'uso fate riferimento al sito sopra linkato. Se avete intenzione di usare la memoria RAM per riprodurre i files digitali audio fate riferimento sempre alla guida linkata, in particolare qui.


8.8 File di configurazione "/etc/mpd.conf"

Se volete un file di configurazione di "/etc/mpd.conf" più facile da consultare e da modificare fate copia di quanto segue modificando alcuni parametri in base al vostro sistema:

#######################################
#######################################
#     AUDIO

 audio_output {
type "alsa"
name "hw:0,0"
device "hw:0,0"
use_mmap "yes"
# usb_dsd   "yes"
# format "44100:16:2"
# period_time  "200000"
# mixer_device "default"
# mixer_control "PCM"
# mixer_index "0"
}

# audio_output {
# type "alsa"
# name "hw:1,0"
# device "hw:1,0"
# usb_dsd   "yes"
# use_mmap "yes"
# format "44100:16:2"
#}

# audio_output {
# type "alsa"
# name "hw:1,1"
# device "hw:1,1"
# use_mmap "yes"
# format "44100:16:2"
#}

#######################################
#     MIXER

# mixer_type   "hardware"
# mixer_type   "software"
 mixer_type   "none"

#######################################
#     BUFFER

# audio_buffer_size  "2048"
# buffer_before_play  "10%"

 audio_buffer_size  "16864"
 buffer_before_play  "0%"

#######################################
#     MUSICA

music_directory       "/var/lib/mpd/music"
db_file               "/var/lib/mpd/tag_cache"

# music_directory       "/media/cb/musica"
# db_file               "/media/cb/mpd/tag_cache"

 music_directory       "/mnt/samba/musica"
 db_file               "/mnt/samba/mpd/tag_cache"

playlist_directory       "/var/lib/mpd/playlists"
# playlist_directory       "/media/cb/mpd/playlists"
 playlist_directory       "/mnt/samba/mpd/playlists"

 log_file       "/var/log/mpd/mpd.log"
# log_file       "/media/cb/mpd/mpd.log"
# log_file       "/mnt/samba/mpd/mpd.log"

 pid_file       "/var/run/mpd/pid"
# pid_file       "/media/cb/mpd/pid"
# pid_file       "/mnt/samba/mpd/pid"

 state_file       "/var/lib/mpd/state"
# state_file       "/media/cb/mpd/state"
# state_file       "/mnt/samba/mpd/state"

#######################################
#     CONTROLLO REMOTO SERVER

 port    "6600"
 bind_to_address  "any"
# bind_to_address  "localhost"
# bind_to_address   "0.0.0.0"
# bind_to_address  "/var/run/mpd/socket"

#######################################
#     METADATA (tag)

  metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc"
  id3v1_encoding   "UTF-8"
  filesystem_charset  "UTF-8"
# id3v1_encoding   "ISO-8859-1"
# filesystem_charset  "ISO-8859-1"

#######################################
#     SICUREZZA

# user   "mpd"
# password   "password@read,add,control,admin"
# default_permissions      "read,add,control,admin"

#######################################
#     INPUT

# input {
#   plugin "curl"
# proxy "proxy.isp.com:8080"
# proxy_user "user"
# proxy_password "password"
#}

#######################################
#     ALTRO

# max_playlist_length  "16864"
# connection_timeout  "60"
# max_connections  "10"
# max_command_list_size  "2048"
# max_output_buffer_size  "8192"

# gapless_mp3_playback   "yes"
# save_absolute_paths_in_playlists "no"

 log_level   "verbose"

 follow_outside_symlinks "yes"
 follow_inside_symlinks "yes"

 zeroconf_enabled "no"
 zeroconf_name "MPD"

# auto_update    "yes"
# auto_update_depth "3"

# sticker_file    "/var/lib/mpd/sticker.sql"

#######################################
##################################FINE

#######################################
#     RESAMPLING

# audio_output_format  "192000:32:2"
# audio_output_format  "192000:24:2"
# audio_output_format  "96000:24:2"
# audio_output_format  "44100:16:2"
 samplerate_converter  "Best Sinc Interpolator"         #0  (97dB SNR, 96% BW)
# samplerate_converter  "Medium Sinc Interpolator"   #1  (97dB SNR, 90% BW)
# samplerate_converter  "Fastest Sinc Interpolator"     #2  (97dB SNR, 80% BW)
# samplerate_converter  "ZOH Interpolator"               #3  (low quality)
# samplerate_converter  "Linear Interpolator"             #4  (very low quality)
# samplerate_converter   "internal"


#######################################
#     STREAMING (.mp3, .ogg, .flac, .wav)

 audio_output {
 type  "httpd"
 name  "MP3"
 port  "9001"
 encoder  "lame"
# encoding "mp3"
# quality  "10"
 bitrate  "64"
 format  "44100:16:2"
 enabled  "no"
}

audio_output {
 type  "httpd"
 name  "OGG"
 port  "9002"
 encoder  "vorbis"
 quality  "8"
# bitrate  "64"
 format  "44100:16:2"
 enabled  "no"
}

audio_output {
 type  "httpd"
 name  "FLAC"
 port  "9003"
 encoder  "flac"
 format  "44100:16:2"
 enabled  "no"
}

audio_output {
 type  "httpd"
 name  "WAV"
 port  "9004"
 encoder  "wave"
 format  "44100:16:2"
 enabled  "no"
}
  
#######################################
#     STREAMING (southcast)

# audio_output {
# type        "shout"
# encoding    "lame"
# name        "Radio CB"
# host        "localhost"
# port        "8000"
# mount        "/mpd.mp3"
# password    "hackme"
# quality        "5.0"
# bitrate        "64"
# format        "44100:16:2"
# enabled "no"
# protocol    "icecast2"        # optional
# user        "source"        # optional
# description    "My Stream Description"    # optional
# genre        "jazz"            # optional
# public        "no"            # optional
# timeout        "2"            # optional
# }

#######################################
#     DECODER

#   decoder {
#   plugin "sndfile"
#    enabled "no"
#}

#######################################
##################################FINE2


E' possibile lasciare la "music_directory" di default. Questo è l'unico modo per dire ad MPD di prendere contemporaneamente la musica in più posti, in varie directory/cartelle a nostra scelta. Per fare ciò bisognerà dire ad MPD in quale directory sta la musica con questi due comandi:

cd /var/lib/mpd/music/

e creare un collegamento

ls -s /media/cb/musica

Naturalmente al posto di "/media/cb/musica" inserite la directory dove avete la vostra musica.

8.7 Modificare le directory di default

Agli utenti esperti consiglio di modificare la parte del file di configurazione di MPD riguardante "Files and directories" in questo modo:


# Files and directories ##################################################
# This setting controls the top directory which MPD will search to discover t$
# available audio files and add them to the daemon's online database. This
# setting defaults to the XDG directory, otherwise the music directory will be
# be disabled and audio files will only be accepted over ipc socket (using
# file:// protocol) or streaming files over an accepted protocol.
#
music_directory         "/media/cb/MUSICA"
#
# This setting sets the MPD internal playlist directory. The purpose of this
# directory is storage for playlists created by MPD. The server will use
# playlist files not created by the server but only if they are in the MPD
# format. This setting defaults to playlist saving being disabled.
#
#playlist_directory       "/var/lib/mpd/playlists"
playlist_directory        "/media/cb/MUSICA/mpd/playlists"
#
# This setting sets the location of the MPD database. This file is used to
# load the database at server start up and store the database while the
# server is not up. This setting defaults to disabled which will allow
# MPD to accept files over ipc socket (using file:// protocol) or streaming
# files over an accepted protocol.
#
#db_file                "/var/lib/mpd/tag_cache"
db_file                 "/media/cb/MUSICA/mpd/tag_cache"
# These settings are the locations for the daemon log files for the daemon.
# These logs are great for troubleshooting, depending on your log_level
# settings.
#
# The special value "syslog" makes MPD use the local syslog daemon. This
# setting defaults to logging to syslog, otherwise logging is disabled.
#
#log_file               "/var/log/mpd/mpd.log"
log_file                "/media/cb/MUSICA/mpd/mpd.log"
#
# This setting sets the location of the file which stores the process ID
# for use of mpd --kill and some init scripts. This setting is disabled by
# default and the pid file will not be stored.
#
#pid_file               "/var/run/mpd/pid"
pid_file                "/media/cb/MUSICA/mpd/pid"
#
# This setting sets the location of the file which contains information about
# most variables to get MPD back into the same general shape it was in before
# it was brought down. This setting is disabled by default and the server
# state will be reset on server start up.
#
#state_file             "/var/lib/mpd/state"
state_file            "/media/cb/MUSICA/mpd/state"


naturalmente dovete sostituire "/cb/MUSICA" nell'esempio con la directory da voi scelta, per esempio sullo stesso disco dove avete archiviato la vostra musica e quindi in Linux "/media" come nel mio esempio.

Prima delle modifiche, assicuratevi di aver creato la nuova cartella "mpd" così:

mkdir /media/cb/MUSICA/mpd

sostituite il percorso in corsivo con quello che preferite poi

mkdir /media/cb/MUSICA/mpd/playlists  e INVIO

touch /media/cb/MUSICA/mpd/tag_cache  e INVIO

touch /media/cb/MUSICA/mpd/mpd.log  e INVIO

touch /media/cb/MUSICA/mpd/pid  e INVIO

touch /media/cb/MUSICA/mpd/state  e INVIO

Modificate la cartella che ho indicato in corsivo (es. /media/cb/MUSICA/....) con quella dove voi, per esempio,  avete messo i vostri files audio.
In questo modo diciamo a MPD di scrivere sul nostro disco HDD USB più veloce dove abbiamo anche la musica evitando così di toccare la USB o la CF, non adatte a questo tipo di scritture in quanto lente. Grazie a questo accorgimento sarà possibile visualizzare più velocemente le copertine dei nostri album ed avere sempre MPD configurato anche dopo una formattazione del disco USB o CF. Inoltre, non usando directory di "root", sarà possibile usare MPD non come utente "root".

8.6 Permettere le scritture su disco all'avvio e sulle directory

Modificate questo file così

nano /etc/init.d/voyage-util

portatevi alla riga 90 circa e aggiungete il commento "#" a questa riga

#/usr/local/sbin/remountro

salvate e riavviate il sistema operativo.

Inoltre qualora aveste problemi di scrittura a causa dei permessi (cosa piuttosto anomala dal momento che quando usiamo "Voyage MPD", differentemente da Ubuntu, siamo sempre "root" e quindi abbiamo tutti i permessi sui file) individuate la directory sulla quale "Voyage MPD" e/o MPD o altri programmi che usate non hanno permessi e digitate il comando che segue seguito dal tasto INVIO

chmod 774 -R /media/cb

in questo modo ho dato tutti permessi di scrittura e lettura a tutti gli utenti sulla cartella/directory dove MPD cerca la mia musica. Voi dovete solo individuare la cartella/directory senza permessi e sostituire ciò che segue al comando "chmod" in grassetto con la vostra directory. Per sapere quale è la directory sulla quale non avete pemessi, una volta installato MPD e verificata la corretta configurazione col comando di riavvio del player "/etc/init.d/mpd restart", vi ritrovete davanti il log di MPD grazie al quale verrete a conoscenza della o delle directory senza permessi (es. MPD non ha i permessi di scrittura sul Database, sul file di log, sulla playlist etc etc).


8.5 Creare un web server (MPoD e MPaD cover art)


Per chi usa i client "MPoD" o "MPaD" può essere utile configurare "lighttpd" (programma webserver usato anche da youtube) in modo tale che invii le copertine degli album (cover art) al client quando quest'ultimo non riesce a reperirle in rete su "Amazon" o "LastFM" o semplicemente quando quest'ultimo, il client, viene configurato in modo tale da ricevere le copertine esclusivamente dal server andandole a pescare nella cartella/directory dove è archiviato l'album in riproduzione. Ciò può risultare molto utile per gli album di musica classica o dove sono presenti vari artisti.
Per chi volesse usufruire di questo servizio, sarà necessario prima assicurarsi che all'interno di ogni cartella sia presente la copertina dell'album in formato ".jpg" con nome "Folder" (MPoD e MPaD non riconosceranno per esempio "folder.jpg" ma solo ed esclusivamente "Folder.jpg" con la f maiuscola (case sensitive, attenzione).

Disinstallate "nfs-common"  e "nginx" (o disabilitate i servizi all'avvio con "rcconf") che potrebbero creare problemi di compatibilità

apt-get remove nfs-common nginx

Installate il programma "lighttpd"

apt-get install lighttpd

Prima di configurare "lighttpd", fermiamolo col comando

/etc/init.d/lighttpd stop

Configuriamo ora "lighttpd" col comando

nano /etc/lighttpd/lighttpd.conf

Modificate le seguenti righe del file di configurazione come segue, avendo cura di selezionare la cartella/directory dove tenete la vostra musica (server.document-root) e quella dell'upload (server.upload-dirs); inoltre dovete commentare (inserire "#" cancelletto ad inizio riga) "server.username" e "server.groupname"


server.document-root        = "/media/cb/musica"
server.upload-dirs          = ( "/media/cb" )

#server.username             = "www-data"
#server.groupname            = "www-data"


Mi raccomando, quando indicate al web server lighttpd la cartella "server.document-root"  dove si trova la vostra musica, accertatevi che sia esattamente identica a quella che avete indicato nel file di configurazione di MPD "/etc/mpd.conf" (music_directory).
Per chi non stesse usando il sistema operativo "Voyage MPD" ma un'altra distribuzione Linux, il file di configurazione integrale è il seguente:


server.modules = (
        "mod_access",
        "mod_alias",
        "mod_compress",
        "mod_redirect",
#       "mod_rewrite",
)

server.document-root        = "/mnt/samba/USBDisk_1/musica"
server.upload-dirs          = ( "/mnt/samba/USBDisk_1" )
#server.document-root        = "/var/www"
#server.upload-dirs          = ( "/var/cache/lighttpd/uploads" )
server.errorlog             = "/var/log/lighttpd/error.log"
server.pid-file             = "/var/run/lighttpd.pid"
#server.username             = "www-data"
#server.groupname            = "www-data"

index-file.names            = ( "index.php", "index.html",
                                "index.htm", "default.htm",
                               " index.lighttpd.html" )

url.access-deny             = ( "~", ".inc" )

static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )

include_shell "/usr/share/lighttpd/use-ipv6.pl"

dir-listing.encoding        = "utf-8"
server.dir-listing          = "enable"

compress.cache-dir          = "/var/cache/lighttpd/compress/"
compress.filetype           = ( "application/x-javascript", "text/css", "text/html", "text/plain" )

include_shell "/usr/share/lighttpd/create-mime.assign.pl"
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"


Riavviate "lighttpd" col comando

/etc/init.d/lighttpd start

e poi

/etc/init.d/lighttpd force-reload

Sul client MPoD o MPaD sarà necessario inserire l'indirizzo IP del server e la porta sulla quale lighttpd è in ascolto (se non avete cambiato nulla, quella di default è la 80) e il nome del file/cover art di cui sopra (es.: http://192.168.1.2:80 e "Folder.jpg").

(nella foto interfaccia web "lighttpd" su "Voyage MPD")

Per chi usa il client GMPC e preferisce ottenere grazie ai database online le copertine (cover art), consiglio di dare prorità "0" (priorità massima) al plugin "Last FM" per la ricerca delle copertine degli album "online". In questo modo GMPC prenderà le copertine dal sito Last Fm invece che da Discogs o altri che attualmente non forniscono le copertine corrette.
Per fare ciò aprite GMPC - Menù - Preferenze - Plugin - cambia priorità con doppio click su "Last FM".