paxb
Posts: 6
Joined: Thu Aug 23, 2012 10:41 am

Bitstream audio player con Deadbeef e HiFace

Fri Mar 01, 2013 8:42 am

Questa procedura e’ valida per l' ultima versione Raspian ufficiale 2013-02-09-wheezy-raspbian.img .

Serve a permettere il bitstream audio di files musicali anche in alta definizione attraverso il software Deadbeef e la scheda USB-->SPDIF HiFace (compileremo dai sorgenti dai sorgenti ed affronteremo il noto problema relativo alla mancanza nella distribuzione installata degli headers del kernel che puo' rendere impossibile la compilazione da sorgenti).

Come prima cosa ricorda di fare :

1. sudo bash (oppure sudo –s e poi exit). Tutti i comandi dalli da root.
2. #date MMDDhhmmYYYY.ss
3. E l’ aggiornamento del sistema con apt-get update/upgrade.
4. E se sei dietro un proxy in /etc/apt/apt.conf :

Acquire::http::Proxy “http://proxy_IP:8080”;
Acquire::http::Proxy “ftp://proxy_IP:8080”;

Compiliamo deadbeef 0.5.6. che ho scaricato come .zip dal sito del suo GIT ed espanso in una directory nel desktop del raspi. Per fare questo puoi usare pcmanfm da root, cosi’ non dovrebbe dare problemi di permessi.

Prima di iniziare, installare le seguenti dipendenze :

apt-get install libasound2-dev libpulse-dev libmad0-dev libwavpack-dev libsndfile1-dev libcdio-dev libcddb2-dev automake libtool libsamplerate0-dev libgtk2.0-dev libavformat-dev libcurl4-gnutls-dev libdbus-1-dev libfaad-dev intltool libimlib2-dev libzip-dev

(yasm no, perche’ da un problema nella compilazione (perdo il supporto per gli ape) [eventualmente per rimuoverlo apt-get purge yasm])

Vado con il configure :

[email protected]:/home/pi/deadbeef-0.5.6# ./configure

che ad un certo punto dara’ l’ elenco dei plugin utilizzabili (se ne manca qualcuno e’ un problema di librerie)

Plugin Summary:

stdio: yes - Standard IO plugin
gme: yes - chiptune music player based on GME
nullout: yes - NULL output
alsa: yes - ALSA output
sid: yes - SID player based on libsidplay2
ffap: yes - Monkey's audio (APE) decoder
lastfm: no - last.fm scrobbler
mpgmad: yes - mpeg player based on libmad
vorbis: yes - ogg vorbis player
flac: yes - flac player
wavpack: no - wavpack player
sndfile: yes - PCM (wav,aiff,etc) player based on libsndfile
vtx: yes - vtx file player (ay8910/12 emulation)
adplug: yes - adplug player (OPL2/OPL3 emulation)
vfs_curl: no - http/ftp streaming support
cdda: no - cd audio player
gtkui: yes - GTK user interface
hotkeys: yes - Global hotkeys support
ffmpeg: no - ffmpeg codecs
oss: yes - oss output plugin
pulse: no - PulseAudio output plugin
artwork: no - Cover art plugin
supereq: yes - Equalizer based on Super EQ library by Naoki Shibata
notify: no - notification-daemon support plugin
shellexec: yes - shell commands plugin
musepack: yes - musepack player plugin
wildmidi: yes - WildMidi player plugin
tta: yes - TTA player plugin
dca: yes - libdca (DTS Audio) player plugin
aac: yes - AAC player (m4a, aac, mp4) based on FAAD2
mms: yes - mms streaming support
dsp_src: no - High quality samplerate conversion using libsamplerate
m3u: yes - M3U and PLS playlist support
vfs_zip: no - zip archive support
converter: yes - plugin for converting files to any formats
psf: yes - PSF format plugin, using AOSDK
dumb: yes - DUMB module plugin, for MOD, S3M, etc
shn: yes - SHN plugin based on xmms-shn
mono2stereo: yes - mono2stereo DSP plugin
shellexecui: yes - GTK user interface for configuring shellexec plugin


Se tutto e' a posto vado con il make :

[email protected]:/home/pi/deadbeef-0.5.6# make

dovrebbe concludersi dopo un po’ senza errori e con qualcosa tipo :

make[2]: Leaving directory `/home/pi/deadbeef-0.5.6/po'
Making all in intl
make[2]: Entering directory `/home/pi/deadbeef-0.5.6/intl'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/home/pi/deadbeef-0.5.6/intl'
make[2]: Entering directory `/home/pi/deadbeef-0.5.6'
CC main.o
CC plugins.o
CC playlist.o
CC plmeta.o
CC pltmeta.o
CC streamer.o
CC premix.o
CC messagepump.o
CC conf.o
CC threading_pthread.o
CC volume.o
CC junklib.o
CC utf8.o
CC vfs.o
CC vfs_stdio.o
CC md5.o
CC metacache.o
CC ringbuf.o
CC dsppreset.o
CC replaygain.o
CCLD deadbeef
make[2]: Leaving directory `/home/pi/deadbeef-0.5.6'
make[1]: Leaving directory `/home/pi/deadbeef-0.5.6'
[email protected]:/home/pi/deadbeef-0.5.6#


Vado con il make install

[email protected]:/home/pi/deadbeef-0.5.6# make install

dopo un po’ si concludera’ con :

make[1]: Leaving directory `/home/pi/deadbeef-0.5.6/intl'
make[1]: Entering directory `/home/pi/deadbeef-0.5.6'
make[2]: Entering directory `/home/pi/deadbeef-0.5.6'
/bin/mkdir -p '/usr/local/bin'
/bin/bash ./libtool --mode=install /usr/bin/install -c deadbeef '/usr/local/bin'
libtool: install: /usr/bin/install -c deadbeef /usr/local/bin/deadbeef
/bin/mkdir -p '/usr/local/share/applications'
/usr/bin/install -c -m 644 deadbeef.desktop '/usr/local/share/applications'
/bin/mkdir -p '/usr/local/share/doc/deadbeef'
/usr/bin/install -c -m 644 README help.txt about.txt translators.txt ChangeLog COPYING.GPLv2 COPYING.LGPLv2.1 translation/help.ru.txt translation/help.pt_BR.txt

'/usr/local/share/doc/deadbeef'
/bin/mkdir -p '/usr/local/include/deadbeef'
/usr/bin/install -c -m 644 deadbeef.h '/usr/local/include/deadbeef'
make[2]: Leaving directory `/home/pi/deadbeef-0.5.6'
make[1]: Leaving directory `/home/pi/deadbeef-0.5.6'
[email protected]:/home/pi/deadbeef-0.5.6#

A questo punto deadbeef e’ installato sul sistema.

Passiamo a compilare i drivers per l' hiface.

Installo snd-usb-asyncaudio che anche in questo caso ho scaricato dal GIT e scompattato nel raspi.

Passiamo ora a risolvere il problema che snd-usb-asyncaudio non si trova gli headers del kernel al posto giusto e vanno aggiunti a manetta. Il problema e' questo :

/lib/modules/3.2.27+ che dovrebbero trovarsi qui nella dir del kernel in uso
/lib/modules/3.2.27+/build, ma non ci sono.

Se faccio il make da errore (qui non serve prima il ./configure).

Scarico l’ ultima versione come .zip e poi l’ estraggo in una directory del raspi. [Per fare questo puoi usare pcmanfm invocandolo da root, cosi’ non dovrebbe dare problemi di permessi.]

1. sudo bash (oppure sudo –s e poi exit). Tutti i comandi dalli da root.
2. #date MMDDhhmmYYYY.ss
3. # cd /usr/src

Poi con firefox ho scaricato :

https://github.com/raspberrypi/linux/tarball/rpi-3.6.y

(e' un .tar.gz con nome di scaricamento raspberrypi-linux-7025426db.tar.gz)

The name of the source directory is probably different in your case, because it contains the ID of the latest commit in the Git repository and commits occur regularly. Quindi il problema con
kernel diversi (uname -r) potrebbe essere quello di scaricare quello giusto, in quanto non sono riuscito ad esplorare la directory https://github.com/raspberrypi/linux/tarball con firefox per vedere cosa c’era dentro.

uname -r
mv rpi-3.6.11 (chiama cosi' la dir compressa che ha un' altro nome nello scaricamento : raspberry-linux...tar.gz)
tar xzf rpi-3.6.11 (la estrae)

Le ultime tre righe posso simularle copiando su pennetta il file compresso scaricato prima, attento ai permessi che devi essere root (basta da root shell digitare pcmanfm (oppure sudo pcmanfm)
per aprire il file manager grafico con diritti di root e fare tutto.

Poi estrai dalla pennetta messa nel raspi il .tar.gz direttamente in /usr/src , si creera' la directory relativa;

rinomina la directory (raspberry-linux...tar.gz) con il nome della versione giusta di cui sopra (rpi-3.6.11).

(tutti i successivi comandi devi darli da questa dir : [email protected]:/usr/src/rpi-3.6.11# )

1. sed -i 's/EXTRAVERSION =.*/EXTRAVERSION = +/' Makefile
(The sed command is to add a ‘+’ to the version in the source. The version should be 3.1.9+, while the version in the repository is just 3.1.9.)

Con il comando che segue scrivi, dalla tua /proc/ dove si trova config.gz del tuo kernel in uso, all' interno del .config che si trova nella dir /usr/src/rpi-3.6.11

2. zcat /proc/config.gz > .config (l’ ho dovuto riscrivere a mano da shell se no non gli piaceva, mah?)

Prima di fare MAKE oldconfig accertati che la data sia corretta con date.

3. make oldconfig

Se tutto e' a posto avro' in risposta :

# configuration written to .config

Poi faccio :

4. make modules_prepare --> ho i moduli preparati

ma mi manca Module.symvers che apro e salvo da :

https://github.com/raspberrypi/firmware ... le.symvers

(questo e’ il vero link di symvers https://raw.github.com/raspberrypi/firm ... le.symvers)

poi lo copio nella dir /usr/src/ rpi-3.6.11#.

A questo punto :

"Then just make symlinks available in /lib/modules/[kernelversion]/ for the stuff you're compiling. Might as well put a symlink in for /usr/src/linux etc as well"

Poi faccio da /usr/src/ rpi-3.6.11# :

KSRC=`pwd`
pushd /lib/modules/`uname -r`
ln -s ${KSRC} source
ln -s ${KSRC} build
popd

pushd /usr/src
ln -s ${KSRC} linux-`uname -r`
ln -s ${KSRC} linux
popd

Fatto questo nella dir /lib/modules/rpi-3.2.27+/ mi trovo quanto necessario (sara’ tutto relativo al nuovo kernel rpi-3.6.11):

[email protected] /lib/modules $ ls –all

total 16
drwxr-xr-x 4 root root 4096 Sep 18 13:51 .
drwxr-xr-x 13 root root 4096 Sep 18 17:04 ..
drwxr-xr-x 3 root root 4096 Oct 5 08:37 3.2.27+
drwxr-xr-x 3 root root 4096 Sep 18 13:51 3.2.27-cutdown+
[email protected] /lib/modules $ cd 3.2.27+

[email protected] /lib/modules/3.2.27+ $ ls -all
total 1988

drwxr-xr-x 3 root root 4096 Oct 5 08:37 .
drwxr-xr-x 4 root root 4096 Sep 18 13:51 ..
lrwxrwxrwx 1 root root 19 Oct 5 08:37 build -> /usr/src/rpi-3.2.27 (LINK SIMBOLICO DESIDERATO, STA ANCHE IN UBUNTU)
drwxr-xr-x 9 root root 4096 Sep 18 13:51 kernel
-rw-r--r-- 1 root root 285710 Sep 18 11:12 modules.alias
-rw-r--r-- 1 root root 298642 Sep 18 11:12 modules.alias.bin
PIU' ALTRI MODULI ....


Ho creato l’ ambiente che serve per compilare i sorgenti dell’ hiface.

Fatto tutto cio' per installare il driver devi andare nella dir da dove li hai scaricati dal GIT:

/home/pi/snd-usb-asyncaudio#

make

e fare per caricare il relativo modulo :

sudo insmod snd-usb-asyncaudio.ko

Buon ascolto ;-)

P.S. ho lasciato qualcosa in inglese... ;-)












5

User avatar
oozic
Posts: 249
Joined: Sun Nov 25, 2012 10:58 pm

Re: Bitstream audio player con Deadbeef e HiFace

Fri Mar 01, 2013 6:49 pm

ciao correggimi se sbaglio: serve a riprodurre l'audio su cuffie esterne usb o periferiche audio usb?
RPi #1: xbmc - transmission daemon
RPi #2: nginx - nodejs - samba
http://mattia-asti.it

paxb
Posts: 6
Joined: Thu Aug 23, 2012 10:41 am

Re: Bitstream audio player con Deadbeef e HiFace

Wed Mar 13, 2013 8:00 am

Serve a permettere il trasferimento da un file verso un dac esterno evitando qualsiasi tipo di modifica sulla qualita' dell' audio registrato.

In pratica :

file musicale 96Khz-24bit --> interfaccia USB-SPDIF --> Convertitore DAC --> ampli audio

ciao

Return to “Italiano”