MPD (Music Player Daemon)

Progetti, domande e idee sparse sull'autocostruzione di sorgenti digitali per musica "liquida" basate su computer o sistemi dedicati, interfaccie digitali, DAC, ecc.
Avatar utente
UnixMan
sostenitore
Messaggi: 12096
Iscritto il: 27 ott 2005, 22:34
Località: L'Aquila (Italy)
Has thanked: 79 times
Been thanked: 48 times

MPD (Music Player Daemon)

Messaggio da UnixMan »

ricevo via PM ma rispondo in pubblico dal momento che può essere utile anche ad altri, approfittandone per creare un topic dedicato ad MPD ed al suo setup in generale, a prescindere dallo specifico sistema/distribuzione con cui è utilizzato.

Per questioni specifiche relative a sistemi particolari, utilizzate uno degli altri topic già esistenti in cui se ne parla (o apritene uno nuovo se nessuno di questi fa al caso vostro).

Visto che ci sono, per cominciare inserisco anche questi link, che potrebbero tornare utili:

"Music Player Daemon Community Wiki"

"MPD Wiki - ALSA"

"diyAudioWiki: LINUX Audio MusicPlayerDaemon"

"How to turn Music Player Daemon (mpd) into an audiophile music player".

"Dynobot's Computer Audio - Installing MPD"

"Guida Linux Voyage MPD / Music Server HiFi"

antonellocaroli ha scritto: Subject: Con Linux sulla via del cMP²

Ciao UnixMan,
mi sono imbattuto per caso nella tua guida.

forse tu mi puoi aiutare:
ho installato sox su voyage mpd 0.9.1
e ho aggiunto nel mpd.con queste righe:

audio_output {
type "pipe"
name "upsample-sox"
format "44100:32:2"
command "sox -traw -esi -b32 -c2 -r44100 - -talsa -esi -b24 -c2 -D hw:1,0 rate 88200 2>/dev/null"
mmap_emulation "true"
fragment_size "4096"
}

e funziona...

mi chiedo se c´ una stringa per un resemple unica per qualsiasi frequenza in entrata...

mi sembra che quella di sopra sia sil per file a 44100....
io vorrei un resemple unico al di la del file originale...

è possibile?
se si quale sarebbe il comando giusto?
Annoso problema. Per ovvi motivi, SOX (così come qualsiasi altro software) non può riconoscere automaticamente le caratteristiche di uno stream audio in ingresso se questo è costituito dai soli dati "raw", cioè "dati grezzi" senza alcun "header" (preambolo) che contenga le informazioni su formato, codifica, SR, ecc.

Purtroppo, (AFAIK) l'output su pipe di MPD è molto limitato e poco flessibile e non prevede ne la possibilità di fare uscire stream in formato diverso (ad es. wav o flac, che avendo un header che contiene le informazioni necessarie permetterebbero a sox di riconoscere automaticamente il formato dei dati) ne quella di fornire tali informazioni "esternamente" per mezzo di variabili che possano essere passate come parametri a sox (o altri programmi) come può fare ad es. ALSA.

Una soluzione possibile in un futuro speriamo prossimo sarà l'adozione di "libsoxr" (vedi anche qui e qui) tra i plugin di ALSA e/o di MPD:

http://www.computeraudiophile.com/f10-m ... ndex3.html

mentre, se non vado errato, le soluzioni più facilmente implementabili al momento sono:

1) rinunciare a sox ed utilizzare il resampling interno di MPD (che utilizza la libreria libsamplerate, AKA "Secret Rabbit Code") il quale, opportunamente configurato per la max qualità, pur essendo più "pesante" di sox, offre comunque risultati eccellenti (secondo alcuni, dal punto di vista soggettivo anche migliori);

2) utilizzare sox passando attraverso ALSA, ad es. come descritto in questo mio vecchio post su diyAudio. In pratica crei un nuovo device (logico) ALSA (che fa resampling con sox attraverso una pipe) e dici ad MPD di usare quello mandandogli lo stream così com'è.
Ciao, Paolo.

«Se tu hai una mela, e io ho una mela, e ce le scambiamo, tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.»
Avatar utente
UnixMan
sostenitore
Messaggi: 12096
Iscritto il: 27 ott 2005, 22:34
Località: L'Aquila (Italy)
Has thanked: 79 times
Been thanked: 48 times

Re: MPD (Music Player Daemon)

Messaggio da UnixMan »

Altra possibile alternativa (che però non ho provato, per cui non posso garantire che sia possibile/funzioni correttamente) potrebbe essere quella di utilizzare come uscita di MPD il plugin "recorder" anziché quello "pipe", utilizzando come encoder "wave" (oppure flac, o qualsiasi altro formato lossless dotato di header) e come file di uscita una "named pipe" (AKA FIFO), che fai leggere ad un secondo processo indipendente in background (sox). :?:

Qualcosa del genere:

Codice: Seleziona tutto

#/bin/sh
#
# sox-fifo-player.sh 
# -----------------------
# Play sound stream via FIFO using SOX (with resampling)
#
# Configuration:

MPD_FIFO=/tmp/MPD_out_FIFO     # MPD must output to this file (named pipe)

export AUDIODEV="hw:0"             # sox output device (for sox direct play)

# check/create fifo
if [ ! -e $MPD_FIFO ]; then
  mkfifo --mode=0666 $MPD_FIFO
fi
if [ ! -p  $MPD_FIFO ]; then
  echo -e "\nFatal ERROR: \"$MPD_FIFO\" is not a FIFO!"
  exit 1
fi

while true; do
   sox -V3 "$MPD_FIFO" -t alsa -b32 gain -6 rate -vMa 192000 dither -s
   sleep 0.1
done

# N.B.: change sox verbosity, gain, rate & dither options as you please.
questo script crea la named pipe e mette sox "in ascolto" su di essa (rilanciandolo ogni volta che esce). Deve essere avviato (o quanto meno la named pipe deve essere creata altrimenti) PRIMA di eseguire MPD. La configurazione di MPD dovrebbe essere qualcosa del genere:

Codice: Seleziona tutto

audio_output {
name "upsample-fifo"
type "recorder"
path "/tmp/MPD_out_FIFO"
encoder "wave"
format "*:*:*"
}
Non so se funziona, ma tentar non nuoce...

edit: no, questa non funziona: sox non riesce a leggere correttamente dal FIFO. :(
Ciao, Paolo.

«Se tu hai una mela, e io ho una mela, e ce le scambiamo, tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.»
antonellocaroli
new member
Messaggi: 67
Iscritto il: 30 ago 2013, 12:10

Re: MPD (Music Player Daemon)

Messaggio da antonellocaroli »

Unix grazie per la risposta!
ma ho notato una cosa lasciando il comando cosi

command "sox -traw -esi -b32 -c2 -r44100 - -talsa -esi -b24 -c2 -D hw:1,0 rate 192000 2>/dev/null"

qualsia file mando in mpd (44110 o 96000) mi esce in upsampling a 192000

riproduco file a 96000
il risulatato di "cat /proc/asound/card0/pcm0p/sub0/hw_params"

format S32_LE
rate 96000 (192000/1)

Che mi dici?
non sono uno esperto di linux anzi ne so veramente poco...
antonellocaroli
new member
Messaggi: 67
Iscritto il: 30 ago 2013, 12:10

Re: MPD (Music Player Daemon)

Messaggio da antonellocaroli »

UnixMan ha scritto:1) rinunciare a sox ed utilizzare il resampling interno di MPD (che utilizza la libreria libsamplerate, AKA "Secret Rabbit Code") il quale, opportunamente configurato per la max qualità, pur essendo più "pesante" di sox, offre comunque risultati eccellenti (secondo alcuni, dal punto di vista soggettivo anche migliori);
Come?


Scusate il post doppio di prima.... :tmi:
Avatar utente
UnixMan
sostenitore
Messaggi: 12096
Iscritto il: 27 ott 2005, 22:34
Località: L'Aquila (Italy)
Has thanked: 79 times
Been thanked: 48 times

Re: MPD (Music Player Daemon)

Messaggio da UnixMan »

antonellocaroli ha scritto:
UnixMan ha scritto:1) rinunciare a sox ed utilizzare il resampling interno di MPD (che utilizza la libreria libsamplerate, AKA "Secret Rabbit Code")
Come?
MPD lo fa automaticamente quando, nella definizione di una uscita audio, attraverso l'opzione "format" gli dici di utilizzare un ben determinato sample-rate. Il significato di quella opzione è "questa uscita supporta (solo) questo formato" (o "questi formati", se l'opzione è scritta in modo da indicarne più di uno).

Di conseguenza, MPD invia i dati a quella uscita sempre e solo nel formato/i specificato/i; se i dati in ingresso hanno caratteristiche diverse, MPD li converte internamente per adattarli al formato richiesto (e non potrebbe fare altrimenti: per quanto ne sa MPD, quella uscita non può accettare formati diversi da quello/i).

Questo risponde implicitamente anche alla tua altra domanda. Con la configurazione di uscita che mi hai detto di aver definito:
audio_output {
type "pipe"
name "upsample-sox"
format "44100:32:2"
command "sox -traw -esi -b32 -c2 -r44100 - -talsa -esi -b24 -c2 -D hw:1,0 rate 192000 2>/dev/null"
mmap_emulation "true"
fragment_size "4096"
}
hai detto ad MPD che il tuo "dispositivo di uscita" supporta esclusivamente stream con 2 canali, campioni (AKA samples, word) di 32 bit e sample-rate di 44.1KHz (questo è il significato di "44100:32:2"). Quindi, qualsiasi cosa tu mandi in play verso quella uscita, MPD si assicura che lo stream abbia sempre il formato richiesto (44100:32:2), effettuando le dovute conversioni quando il formato di ingresso è diverso da questo.

Ciò fatto, il tuo "dispositivo di uscita" (di MPD) è dato dal processo di sox. Il quale riceve in ingresso lo stream in formato "44100:32:2" prodotto da MPD (ed assume che sia proprio in tale formato: "-b32 -c2 -r44100"), lo ricampiona a 192KHz ("rate 192000") e, dopo averlo convertito ad un formato "192000:24:2" ("-b24 -c2"), lo manda in uscita all'ingresso del device ALSA "hw:0,1" che, infine, provvede ad inviarlo al corrispondente ingresso del dispositivo hardware (lo stream audio segue il percorso: file->MPD->SOX->ALSA->hardware audio).

Va da se che, quindi, se invii ad una uscita definita in quel modo un file 24/96 (o 24/48, ecc) questo viene prima convertito a 32/44.1 (downsampling) da MPD e poi riconvertito a 24/192 da sox (upsampling). Penso sia superfluo aggiungere che questo processo comporta perdita di informazioni e di qualità per qualsiasi file in ingresso con S/R>44.1KHz.

Per questo la soluzione suggerita per utilizzare sox (attraverso ALSA) per stream di ingresso con sample-rate qualsiasi prevede di definire una uscita di MPD che supporta qualsiasi formato ("format *:*:2") o quanto meno qualsiasi SR con la max dimensione possibile dei campioni ("format *:32:2"). Lo stesso va fatto anche se invece si vuol far effettuare l'eventuale upsampling direttamente ad ALSA, oppure se si vuole ottenere una uscita "bit-perfect", senza alcuna alterazione degli stream audio contenuti nei files di ingresso.

A questo punto dovresti aver già capito che, per far fare il resampling ad MPD, è sufficiente definire una uscita che supporti solo il sample-rate desiderato in uscita, ad es. 192KHz:

Codice: Seleziona tutto

audio_output {
type "alsa"
name "upsample"
auto_resample "yes"
format "192000:32:2"
device "hw:1,0"
use_mmap "yes"
}
(auto_resample è "yes" per default, quindi quella riga si può anche omettere). Resta da specificare quale algoritmo deve essere utilizzato da MPD per fare il resampling, cosa che si fa con l'opzione "samplerate_converter"; ad es.:

Codice: Seleziona tutto

# If MPD has been compiled with libsamplerate support, this setting specifies
# the sample rate converter to use.  Possible values can be found in the
# mpd.conf man page or the libsamplerate documentation. By default, this is
# setting is disabled.
#
#samplerate_converter           "internal"                        # fast, poor quality
#samplerate_converter           "Linear Interpolator"       # fast
#samplerate_converter           "Fastest Sinc Interpolator"
#samplerate_converter           "Medium Sinc Interpolator"
samplerate_converter            "Best Sinc Interpolator"
http://mpd.wikia.com/wiki/Tuning

http://www.musicpd.org/doc/user/ch03s06.html

http://manpages.ubuntu.com/manpages/pre ... onf.5.html

...oppure, al solito, dai il comando "man mpd.conf" ;)
Ciao, Paolo.

«Se tu hai una mela, e io ho una mela, e ce le scambiamo, tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.»
antonellocaroli
new member
Messaggi: 67
Iscritto il: 30 ago 2013, 12:10

Re: MPD (Music Player Daemon)

Messaggio da antonellocaroli »

Grazie Unix!!!
adesso mi é tutto molto piú chiaro!!! :wink:
antonellocaroli
new member
Messaggi: 67
Iscritto il: 30 ago 2013, 12:10

Re: MPD (Music Player Daemon)

Messaggio da antonellocaroli »

UnixMan ha scritto:

Codice: Seleziona tutto

audio_output {
type "alsa"
name "upsample"
auto_resample "yes"
format "192000:32:2"
device "hw:1,0"
use_mmap "yes"
}
(auto_resample è "yes" per default, quindi quella riga si può anche omettere). Resta da specificare quale algoritmo deve essere utilizzato da MPD per fare il resampling, cosa che si fa con l'opzione "samplerate_converter"; ad es.:

Codice: Seleziona tutto

# If MPD has been compiled with libsamplerate support, this setting specifies
# the sample rate converter to use.  Possible values can be found in the
# mpd.conf man page or the libsamplerate documentation. By default, this is
# setting is disabled.
#
#samplerate_converter           "internal"                        # fast, poor quality
#samplerate_converter           "Linear Interpolator"       # fast
#samplerate_converter           "Fastest Sinc Interpolator"
#samplerate_converter           "Medium Sinc Interpolator"
samplerate_converter            "Best Sinc Interpolator"
Devo dire che con questa soluzione non suona niente male....peccato solo che usa troppa cpu...intorno al 40%
Avatar utente
UnixMan
sostenitore
Messaggi: 12096
Iscritto il: 27 ott 2005, 22:34
Località: L'Aquila (Italy)
Has thanked: 79 times
Been thanked: 48 times

Re: MPD (Music Player Daemon)

Messaggio da UnixMan »

antonellocaroli ha scritto:Devo dire che con questa soluzione non suona niente male....peccato solo che usa troppa cpu...intorno al 40%
che CPU hai?

purtroppo se vuoi fare upsamplig con algoritmi sofisticati un notevole consumo di risorse è inevitabile. Il codice utilizzato da una data libreria/programma può essere più o meno ottimizzato ma, in generale, gli algoritmi di resampling sono per forza di cose tanto più complessi e "pesanti" quanto più sono accurati.

Per risparmiare qualche ciclo di CPU, in luogo di SRC puoi provare ad utilizzare SOX (attraverso ALSA, configurando il file /etc/asound.conf come suggerito). In modalità "very high quality" SOX utilizza il miglior algoritmo di resampling attualmente disponibile ma, ciò nonostante, in genere è (un po') meno pesante di SRC (molto dipende anche dalle opzioni utilizzate).

All'estremo opposto c'è il "Linear Interpolator". È uno degli algoritmi più semplici e leggeri (se non il più semplice in assoluto) e, almeno da un punto di vista prettamente tecnico, anche uno dei peggiori (se non il peggiore in assoluto). Però, da un punto di vista soggettivo (all'ascolto), c'è chi giura che è proprio quello che "suona" meglio di tutti... :tmi: fai presto provarlo, tentar non nuoce. :)
Ciao, Paolo.

«Se tu hai una mela, e io ho una mela, e ce le scambiamo, tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.»
antonellocaroli
new member
Messaggi: 67
Iscritto il: 30 ago 2013, 12:10

Re: MPD (Music Player Daemon)

Messaggio da antonellocaroli »

UnixMan ha scritto:
antonellocaroli ha scritto:Devo dire che con questa soluzione non suona niente male....peccato solo che usa troppa cpu...intorno al 40%
che CPU hai?
Ciao Unixman,
ho una cpu i3 2120 T

Volevo provare la soluzionw sox...con le pipe...
ma nel mio voyage mpd in /etc non trovo asaund.conf
lo devo creare io ex novo?
Avatar utente
UnixMan
sostenitore
Messaggi: 12096
Iscritto il: 27 ott 2005, 22:34
Località: L'Aquila (Italy)
Has thanked: 79 times
Been thanked: 48 times

Re: MPD (Music Player Daemon)

Messaggio da UnixMan »

antonellocaroli ha scritto:ho una cpu i3 2120 T
allora non dovresti avere problemi di carico eccessivo... già con il mio vecchio Core2/duo ce n'è d'avanzo.
antonellocaroli ha scritto:ma nel mio voyage mpd in /etc non trovo asaund.conf
lo devo creare io ex novo?
sì. :nod:
Ciao, Paolo.

«Se tu hai una mela, e io ho una mela, e ce le scambiamo, tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.»
antonellocaroli
new member
Messaggi: 67
Iscritto il: 30 ago 2013, 12:10

Re: MPD (Music Player Daemon)

Messaggio da antonellocaroli »

Ciao Unixman,
allora ho fatto cosi:

file asound.conf in /etc

Codice: Seleziona tutto

ctl.equal {
  type equal;
}

pcm.plugequal {
  type equal;
  # Modify the line below if you don't
  # want to use sound card 0.
  slave.pcm "plughw:0,0";
  # or if you want to use with multiple applications output to dmix
  # slave.pcm "plug:dmix"
}

pcm.equal {
  type plug;
  slave.pcm plugequal;
}
#MPD Config Wizard#######################################
# Any content beyond this line will be rewritten when the wizard is run##########

pcm.sox882 {
        type file
        slave {
                pcm null
        }
        format "raw"
        file "| /usr/bin/sox --single-threaded --combine sequence -q -V0 -t raw -c %c -b %b -r %r -s - -t alsa -b 32 hw:0,0 rate -v -I -a 88200"
}

pcm.sox96 {
        type file
        slave {
                pcm null
        }
        format "raw"
        file "| /usr/bin/sox --single-threaded --combine sequence -q -V0 -t raw -c %c -b %b -r %r -s - -t alsa -b 32 hw:0,0 rate -v -I -a 96000"
}

pcm.sox192 {
        type file
        slave {
                pcm null
        }
        format "raw"
        file "| /usr/bin/sox --single-threaded --combine sequence -q -V0 -t raw -c %c -b %b -r %r -s - -t alsa -b 32 hw:0,0 rate -v -I -a 192000"
}

pcm.sox1764 {
        type file
        slave {
                pcm null
        }
        format "raw"
        file "| /usr/bin/sox --single-threaded --combine sequence -q -V0 -t raw -c %c -b %b -r %r -s - -t alsa -b 32 hw:0,0 rate -v -I -a 176400"
}

poi mpd.conf modificato cosi:

Codice: Seleziona tutto

name "upsample"
auto_resample "yes"
format "192000:32:2"
device "hw:0,0"
priority        "FIFO:52"
period_time "8192"
buffer_time "131072"
use_mmap "yes"
}

#samplerate_converter            "Best Sinc Interpolator"
#samplerate_converter           "internal"                        # fast, poor quality
#samplerate_converter           "Linear Interpolator"       # fast
#samplerate_converter           "Fastest Sinc Interpolator"
samplerate_converter           "Medium Sinc Interpolator"



audio_output {
        type                    "alsa"
        name                    "Sox 88,200 Khz"
        enabled "no"
        device          "sox882"
        alsa_buffer             "131072"
        alsa_period             "8192"
}

audio_output {
        type                    "alsa"
        name                    "Sox 96,000 Khz"
        enabled "no"
        device          "sox96"
        alsa_buffer             "131072"
        alsa_period             "8192"
}

audio_output {
        type                    "alsa"
        name                    "Sox 192,000 Khz"
        enabled "no"
        device          "sox192"
        alsa_buffer             "131072"
        alsa_period             "8192"
}

audio_output {
        type                    "alsa"
        name                    "Sox 176,400 Khz"
        enabled "no"
        device          "sox1764"
        alsa_buffer             "131072"
        alsa_period             "8192"
}

Risultato esempio con sox 192

file 44100 24 tutto ok

file 96000 suona, cioé la song va avanti ma nessuon suono....

Codice: Seleziona tutto

cat /proc/asound/card0/pcm0p/sub0/hw_params
access: RW_INTERLEAVED
format: S32_LE
subformat: STD
channels: 2
rate: 192000 (192000/1)
period_size: 1024
buffer_size: 8192
booh sembra che fa l´ up ma niente suono dalle casse...:(
Avatar utente
UnixMan
sostenitore
Messaggi: 12096
Iscritto il: 27 ott 2005, 22:34
Località: L'Aquila (Italy)
Has thanked: 79 times
Been thanked: 48 times

Re: MPD (Music Player Daemon)

Messaggio da UnixMan »

antonellocaroli ha scritto: allora ho fatto cosi:

file asound.conf in /etc

Codice: Seleziona tutto

ctl.equal {
  type equal;
}

pcm.plugequal {
  type equal;
  # Modify the line below if you don't
  # want to use sound card 0.
  slave.pcm "plughw:0,0";
  # or if you want to use with multiple applications output to dmix
  # slave.pcm "plug:dmix"
}

pcm.equal {
  type plug;
  slave.pcm plugequal;
}
questo a che pro?
antonellocaroli ha scritto: [...]

Codice: Seleziona tutto

pcm.sox192 {
        type file
        slave {
                pcm null
        }
        format "raw"
        file "| /usr/bin/sox --single-threaded --combine sequence -q -V0 -t raw -c %c -b %b -r %r -s - -t alsa -b 32 hw:0,0 rate -v -I -a 192000"
}
a prima vista mi pare che vada bene.

N.B.: l'opzione "--single-threaded" serviva come workaround per un bug di una vecchia versione di sox. Con versioni più recenti dove il bug è stato corretto puoi anche ometterlo.

puoi usare anche la nuova sintassi, che è un filo più "compatta":

Codice: Seleziona tutto

pcm.soxp {
        type empty
        slave {
                pcm "file:'| /usr/bin/sox -q --combine sequence -t raw -c %c -b %b -r %r -e signed-integer - -t alsa -b32 hw:1,0 gain -6 rate -vMa 192000 dither -s',raw"
        }
        # A hint is required for listing the device in some GUIs
        hint {
                show on
                description "SOX upsampling via pipe (new)"
        }
}
il blocco "hint" è opzionale, ma è necessario se vuoi che i tuoi device virtuali siano elencati nelle GUI dei player (ovviamente, se usi solo MPD puoi anche ometterlo).
antonellocaroli ha scritto: poi mpd.conf modificato cosi:

Codice: Seleziona tutto

name "upsample"
auto_resample "yes"
format "192000:32:2"
device "hw:0,0"
priority        "FIFO:52"
period_time "8192"
buffer_time "131072"
use_mmap "yes"
}
questa parte dove sta? manca qualcosa prima, è un altro "audio_output"?

antonellocaroli ha scritto: booh sembra che fa l´ up ma niente suono dalle casse...:(
ti conviene provare a mano, uno step alla volta.

Prima di tutto, prova sox da linea di comando:

Codice: Seleziona tutto

sox -V3 file.flac -t alsa -b 32 hw:0,0 rate -v -I -a 192000
step successivo, prova il virtual device ALSA:

Codice: Seleziona tutto

aplay -D sox192 file.flac
ovviamente, in entrambi i casi al posto di "file.flac" metti il nome del file da suonare...
Ciao, Paolo.

«Se tu hai una mela, e io ho una mela, e ce le scambiamo, tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.»
antonellocaroli
new member
Messaggi: 67
Iscritto il: 30 ago 2013, 12:10

Re: MPD (Music Player Daemon)

Messaggio da antonellocaroli »

Ciao Palo,

Codice: Seleziona tutto

file asound.conf in /etc
  Code:
ctl.equal {
  type equal;
}

pcm.plugequal {
  type equal;
  # Modify the line below if you don't
  # want to use sound card 0.
  slave.pcm "plughw:0,0";
  # or if you want to use with multiple applications output to dmix
  # slave.pcm "plug:dmix"
}

pcm.equal {
  type plug;
  slave.pcm plugequal;
}


questo a che pro?
L ho tolto!!!

Codice: Seleziona tutto

antonellocaroli wrote:
poi mpd.conf modificato cosi:

  Code:
name "upsample"
auto_resample "yes"
format "192000:32:2"
device "hw:0,0"
priority        "FIFO:52"
period_time "8192"
buffer_time "131072"
use_mmap "yes"
}


questa parte dove sta? manca qualcosa prima, è un altro "audio_output"?
Siquesto é un altro audio output, e manca una parte che non si vede....per il resempler interno di mpd (src)

Codice: Seleziona tutto

Prima di tutto, prova sox da linea di comando:
  Code:
sox -V3 file.flac -t alsa -b 32 hw:0,0 rate -v -I -a 192000
Ho provato con tre file di diversa risoluzione:

Codice: Seleziona tutto

root@voyage:/media/prova1/mu# sox -V3 /media/prova1/mu/07-Viewpoint.flac -t alsa -b 32 hw:0,0 rate -v -I -a 192000
sox:      SoX v14.4.0
sox INFO formats: detected file format type `flac'

Input File     : '/media/prova1/mu/07-Viewpoint.flac'
Channels       : 2
Sample Rate    : 44100
Precision      : 16-bit
Duration       : 00:08:02.72 = 21287952 samples = 36204 CDDA sectors
File Size      : 58.2M
Bit Rate       : 965k
Sample Encoding: 16-bit FLAC
Endian Type    : little
Reverse Nibbles: no
Reverse Bits   : no
Comments       :
ALBUM=Journey Inwards
ARTIST=Ltj Bukem
COMMENT=Ten Years on From the Beginning of His Mixing Career, and Following the Release of Literally Dozens of Compilations Focusing on Tracks and Producers From His Good Looking/Looking Good Empire, Ltj Bukem Finally Released An Album of His Own. As Any Listener Who's Heard a Single From Any Label Headed By Bukem Will Probably Be Able to Guess, His Focus Here is Not Quite Standard Drum'n'bass, But a Set of Earthy Breaks Inspired By the Smoother End of '70s Jazz and Fusion. Compared to the Other Jungle Pioneers Who've Recorded Expansive Double-Disc Albums (4 Hero, Roni Size, Goldie), Bukem's is Most Similar in Concept and Sound to 4 Hero's Two Pages, An Organic Lp With Midtempo Breakbeats and Earthy Workouts For Instrumentalists (Not Programmers). Even More Than 4 Hero, However, Bukem's Focus on Non-Commercial, Non-Vocal Productions is Both Confident and Exemplary. Though It's Been Easy (and Perhaps, Necessary) to Fault Bukem in the Past For Aping His Influences, Journey Inwards Makes it Practically Impossible -- Especially in the Context of These Productions, so Beautiful, so Detailed, so Precisely Imagined They Sound As Though They've Come Straight From Heaven's Recording Studio. From the Shimmering Waves of Rhodes Keyboards and the Undeniably Upright Bass on the Title-Track Opener (Which Might Be a Bit Too Expansive in Its Own Right), Bukem Moves Into True Drum'n'bass With a Sleek, Excellent Two-Stepper Called "watercolours" Which Features a Downplayed, Honking Sax. He Often Returns to the Rhodes (it Must Be His Favorite Instrument), Perhaps a Few Times Too Many, But Every Occurrence is Used With the Balance Just Right. the Breaks Programming Isn't Next-Generation, But For Each Song Bukem Finds a Pattern That Works Perfectly With the Effects to Support it. the Second Disc is Reportedly the Downtempo Disc, Though It's Only Marginally Different From the First. it Does Indeed Concentrate More on Influences and Genre Exercises, From the Blaxploitation Bliss of "sunrain" (One of the Few Vocal Tracks on the Album) to the Soul-Jazz Strut of "deserted Vaults." Taken As a Whole, Journey Inwards is An Album of Pure Brilliance, a Work That Trumps Many of Bukem's Past Productions, and Signals, For What May Be the First Time, That His Production Talents Are Actually Growing and Developing. Truth to Tell, There's Never Been a Drum'n'bass Double-Album That Shouldn't Have Been Pared Down. With Journey Inwards, It's Nearly Impossible to Know What to Cut.
COMPOSER=Williamson
DATE=2000
GENRE=Electronic
INVOLVEDPEOPLE=Guitar
ORGANIZATION=Kinetic
STYLES=Jungle/Drum'n'bass,Ambient Breakbeat
TITLE=Viewpoint
TONES=Laid-Back/Mellow,Nocturnal,Stylish,Amiable/Good-Natured,Calm/Peaceful
TRACKNUMBER=07


Output File    : 'hw:0,0' (alsa)
Channels       : 2
Sample Rate    : 192000
Precision      : 24-bit
Duration       : 00:08:02.72 = 92682240 samples ~ 36204 CDDA sectors
Sample Encoding: 32-bit Signed Integer PCM
Endian Type    : little
Reverse Nibbles: no
Reverse Bits   : no

sox INFO sox: effects chain: input        44100Hz  2 channels
sox INFO sox: effects chain: rate        192000Hz  2 channels
sox INFO sox: effects chain: output      192000Hz  2 channels
é OK!!!

Codice: Seleziona tutto

root@voyage:/media/prova1/mu# sox -V3 /media/prova1/mu/08-Katmandu.flac -t alsa -b 32 hw:0,0 rate -v -I -a 192000
sox:      SoX v14.4.0
sox INFO formats: detected file format type `flac'

Input File     : '/media/prova1/mu/08-Katmandu.flac'
Channels       : 2
Sample Rate    : 44100
Precision      : 16-bit
Duration       : 00:03:23.47 = 8972880 samples = 15260 CDDA sectors
File Size      : 19.0M
Bit Rate       : 747k
Sample Encoding: 16-bit FLAC
Endian Type    : little
Reverse Nibbles: no
Reverse Bits   : no
Comments       :
TRACKNUMBER=08
ARTIST=Cat Stevens
ALBUM=Mona Bone Jakon (180g Lp)
TITLE=Katmandu
DATE=1970
GENRE=Folk-Rock
march 2011By Dr. Roberthe Euords (2008)
COMPOSER=Cat Stevens
ALBUMARTIST=Cat Stevens
DISCNUMBER=1
INVOLVEDPEOPLE=Audio Engineer
TRACKTOTAL=11
TOTALTRACKS=11
DISCTOTAL=1
TOTALDISCS=1


Output File    : 'hw:0,0' (alsa)
Channels       : 2
Sample Rate    : 192000
Precision      : 24-bit
Duration       : 00:03:23.47 = 39065600 samples ~ 15260 CDDA sectors
Sample Encoding: 32-bit Signed Integer PCM
Endian Type    : little
Reverse Nibbles: no
Reverse Bits   : no

sox INFO sox: effects chain: input        44100Hz  2 channels
sox INFO sox: effects chain: rate        192000Hz  2 channels
sox INFO sox: effects chain: output      192000Hz  2 channels
é OK!!!

Codice: Seleziona tutto

root@voyage:/media/prova1/mu# sox -V3 /media/prova1/mu/09-Time.flac -t alsa -b 32 hw:0,0 rate -v -I -a 192000
sox:      SoX v14.4.0
sox INFO formats: detected file format type `flac'

Input File     : '/media/prova1/mu/09-Time.flac'
Channels       : 2
Sample Rate    : 96000
Precision      : 24-bit
Duration       : 00:01:26.69 = 8321767 samples ~ 6501.38 CDDA sectors
File Size      : 33.0M
Bit Rate       : 3.04M
Sample Encoding: 24-bit FLAC
Endian Type    : little
Reverse Nibbles: no
Reverse Bits   : no
Comments       :
TRACKNUMBER=09
ARTIST=Cat Stevens
ALBUM=Mona Bone Jakon
TITLE=Time
DATE=1970
GENRE=Pop/Rock
COMMENT=Cat Stevens Virtually Disappeared From the British Pop Scene in 1968, at the Age of 20, After a Meteoric Start to His Career. He Had Contracted Tuberculosis and Spent a Year Recovering, From Both His Illness and the Strain of Being a Teenage Pop Star, Before Returning to Action in the Spring of 1970  As a Very Different 22-Year-Old  With Mona Bone Jakon. Fans Who Knew Him From 1967 Must Have Been Surprised. Under the Production Aegis of Former Yardbird Paul Samwell-Smith, He Introduced a Group of Simple, Heartfelt Songs Played in Spare Arrangements on Acoustic Guitars and Keyboards and Driven By a Restrained Rhythm Section. Built on Folk and Blues Structures, But With Characteristically Compelling Melodies, Stevens' New Compositions Were Tentative, Fragmentary Statements That Alluded to His Recent "trouble," Including the Triviality of Being a "pop Star." But These Were the Words of a Desperate Man in Search of Salvation. Mona Bone Jakon Was Dominated By Images of Death, But the Album Was Also About Survival and Hope. Stevens' Craggy Voice, With Its Odd Breaks of Tone and Occasional Huskiness, Lent These Sometimes Sketchy Songs Depth, and the Understated Instrumentation Further Emphasized Their Seriousness. If Stevens Was Working Out Private Demons on Mona Bone Jakon, He Was Well Attuned to a Similar World-Weariness in Pop Culture. His Listeners May Not Have Shared His Exact Experience, But After the 1960s They Certainly Understood His Sense of Being Wounded, His Spiritual Yearning, and His Hesitant Optimism. Mona Bone Jakon Was Only a Modest Success Upon Its Initial Release, But it Attracted Attention in the Wake of the Commercial Breakthrough of Its Follow-Up, Tea For the Tillerman.
COMPOSER=Cat Stevens
ALBUMARTIST=Cat Stevens
DISCNUMBER=1
TONES=Brooding,Cerebral,Earnest,Gentle,Intimate,Laid-Back/Mellow,Melancholy,Poignant,Reflective,Restrained,Reverent,Spiritual,Wistful
STYLES=Contemporary Pop/Rock,Folk-Rock,Psychedelic/Garage,Soft Rock,Album Rock,Pop,Singer/Songwriter
SITUATION=Introspection,Long Walk,Reflection,Sunday Afternoon
INVOLVEDPEOPLE=Audio Engineer
TRACKTOTAL=11
TOTALTRACKS=11
DISCTOTAL=1
TOTALDISCS=1


Output File    : 'hw:0,0' (alsa)
Channels       : 2
Sample Rate    : 192000
Precision      : 24-bit
Duration       : 00:01:26.69 = 16643534 samples ~ 6501.38 CDDA sectors
Sample Encoding: 32-bit Signed Integer PCM
Endian Type    : little
Reverse Nibbles: no
Reverse Bits   : no

sox INFO sox: effects chain: input        96000Hz  2 channels
sox INFO sox: effects chain: rate        192000Hz  2 channels
sox INFO sox: effects chain: output      192000Hz  2 channels
è ok!!!

Codice: Seleziona tutto

step successivo, prova il virtual device ALSA:
  Code:
aplay -D sox192 file.flac
ho fatto con gli stessi file:

Codice: Seleziona tutto

root@voyage:/media/prova1/mu# aplay -D soxp /media/prova1/mu/07-Viewpoint.flac
Playing raw data '/media/prova1/mu/07-Viewpoint.flac' : Unsigned 8 bit, Rate 8000 Hz, Mono
/usr/bin/sox WARN dither: no `shibata' filter is available for rate 192000; using sloped TPDF
/usr/bin/sox WARN alsa: under-run
/usr/bin/sox WARN alsa: under-run
/usr/bin/sox WARN alsa: under-run
/usr/bin/sox WARN alsa: under-run
^CAborted by signal Interrupt...
/usr/bin/sox WARN rate: rate clipped 1274 samples; decrease volume?
/usr/bin/sox WARN dither: dither clipped 2201 samples; decrease volume?
Esce fuori solo un rumore tipo sccccccccccccccccccccccccc

Codice: Seleziona tutto

root@voyage:/media/prova1/mu# aplay -D soxp /media/prova1/mu/08-Katmandu.flac
Playing raw data '/media/prova1/mu/08-Katmandu.flac' : Unsigned 8 bit, Rate 8000 Hz, Mono
/usr/bin/sox WARN dither: no `shibata' filter is available for rate 192000; using sloped TPDF
/usr/bin/sox WARN alsa: under-run
^CAborted by signal Interrupt...
/usr/bin/sox WARN rate: rate clipped 19 samples; decrease volume?
/usr/bin/sox WARN dither: dither clipped 33 samples; decrease volume?
Idem come sopra

Codice: Seleziona tutto

root@voyage:/media/prova1/mu# aplay -D soxp /media/prova1/mu/09-Time.flac
Playing raw data '/media/prova1/mu/09-Time.flac' : Unsigned 8 bit, Rate 8000 Hz, Mono
/usr/bin/sox WARN dither: no `shibata' filter is available for rate 192000; using sloped TPDF
/usr/bin/sox WARN alsa: under-run
^CAborted by signal Interrupt...
/usr/bin/sox WARN rate: rate clipped 19 samples; decrease volume?
/usr/bin/sox WARN dither: dither clipped 36 samples; decrease volume?
idem come sopra

:oops: :oops: :oops:
Avatar utente
UnixMan
sostenitore
Messaggi: 12096
Iscritto il: 27 ott 2005, 22:34
Località: L'Aquila (Italy)
Has thanked: 79 times
Been thanked: 48 times

Re: MPD (Music Player Daemon)

Messaggio da UnixMan »

antonellocaroli ha scritto:Ho provato con tre file di diversa risoluzione:
[...]
é OK!!!
ottimo. :)
antonellocaroli ha scritto:
step successivo, prova il virtual device ALSA:

Codice: Seleziona tutto

aplay -D sox192 file.flac
ho fatto con gli stessi file:
[...]
Esce fuori solo un rumore tipo sccccccccccccccccccccccccc
Oops. Mea culpa: ho scritto "file.flac" dimenticando che "aplay" non supporta i flac... devi passargli un "wav" non compresso. :oops:

Puoi convertire i file di test prima di mandarli in play:

Codice: Seleziona tutto

flac -d file.flac
(che decodifica il flac e ne salva una copia non compressa in "file.wav") oppure anche farlo al volo (senza salvare il file decodificato) con una pipe, così:

Codice: Seleziona tutto

flac -d -c file.flac | aplay -D sox192
Ciao, Paolo.

«Se tu hai una mela, e io ho una mela, e ce le scambiamo, tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.»
antonellocaroli
new member
Messaggi: 67
Iscritto il: 30 ago 2013, 12:10

Re: MPD (Music Player Daemon)

Messaggio da antonellocaroli »

Ciao Paolo,
UnixMan ha scritto: (che decodifica il flac e ne salva una copia non compressa in "file.wav") oppure anche farlo al volo (senza salvare il file decodificato) con una pipe, così:

Codice: Seleziona tutto

flac -d -c file.flac | aplay -D sox192
fatto e funziona:

Codice: Seleziona tutto

root@voyage:/media/prova2/mu# flac -d -c /media/prova2/mu/07-Viewpoint.flac | aplay -D soxp

flac 1.2.1, Copyright (C) 2000,2001,2002,2003,2004,2005,2006,2007  Josh Coalson
flac comes with ABSOLUTELY NO WARRANTY.  This is free software, and you are
welcome to redistribute it under certain conditions.  Type `flac' for details.

Playing WAVE 'stdin' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
/usr/bin/sox WARN dither: no `shibata' filter is available for rate 192000; usingsloped TPDF
07-Viewpoint.flac: 5% complete^CAborted by signal Interrupt...

root@voyage:/media/prova2/mu# flac -d -c /media/prova2/mu/08-Katmandu.flac | aplay -D soxp

flac 1.2.1, Copyright (C) 2000,2001,2002,2003,2004,2005,2006,2007  Josh Coalson
flac comes with ABSOLUTELY NO WARRANTY.  This is free software, and you are
welcome to redistribute it under certain conditions.  Type `flac' for details.

Playing WAVE 'stdin' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
/usr/bin/sox WARN dither: no `shibata' filter is available for rate 192000; usingsloped TPDF
08-Katmandu.flac: 20% complete^CAborted by signal Interrupt...

root@voyage:/media/prova2/mu# flac -d -c /media/prova2/mu/09-Time.flac | aplay -D soxp

flac 1.2.1, Copyright (C) 2000,2001,2002,2003,2004,2005,2006,2007  Josh Coalson
flac comes with ABSOLUTELY NO WARRANTY.  This is free software, and you are
welcome to redistribute it under certain conditions.  Type `flac' for details.

Playing WAVE 'stdin' : Signed 24 bit Little Endian in 3bytes, Rate 96000 Hz, Stereo
/usr/bin/sox WARN dither: no `shibata' filter is available for rate 192000; using sloped TPDF
09-Time.flac: 9% complete^CAborted by signal Interrupt...
Quindi con aplay funziona!!!

ma con gli stessi file in mpd i primi due vanno il terzo parte come se riproducesse ma niente suono dalle casse.... :oops: :oops: :oops:
Avatar utente
UnixMan
sostenitore
Messaggi: 12096
Iscritto il: 27 ott 2005, 22:34
Località: L'Aquila (Italy)
Has thanked: 79 times
Been thanked: 48 times

Re: MPD (Music Player Daemon)

Messaggio da UnixMan »

antonellocaroli ha scritto:ma con gli stessi file in mpd i primi due vanno il terzo parte come se riproducesse ma niente suono dalle casse...
se con aplay funziona, ci deve essere qualche problema con la configurazione di MPD... :?:
Ciao, Paolo.

«Se tu hai una mela, e io ho una mela, e ce le scambiamo, tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.»
antonellocaroli
new member
Messaggi: 67
Iscritto il: 30 ago 2013, 12:10

Re: MPD (Music Player Daemon)

Messaggio da antonellocaroli »

UnixMan ha scritto:
antonellocaroli ha scritto:ma con gli stessi file in mpd i primi due vanno il terzo parte come se riproducesse ma niente suono dalle casse...
se con aplay funziona, ci deve essere qualche problema con la configurazione di MPD... :?:
Penso che se fosse un problema della configurazione non dovrebbero suonare neanche i primi due...
comunque stasera ti posto tutto l mpd.conf.

Penso che sia piú un problema di tipo di file:
il terzo file a differenza degli altri a parte il Sample Rate che é 96000
ha anche una precision diversa (24-bit)

Paolo che tu sappia quando faccio la conversione con flac -d -c file.flac | aplay -D sox192 mi cambia i bit?

ma potrebbe essere anche un problema di memoria o buffer...mah
dico questo perché mi sembra strano che non suona neanche le radio in streaming.... :oops:
antonellocaroli
new member
Messaggi: 67
Iscritto il: 30 ago 2013, 12:10

Re: MPD (Music Player Daemon)

Messaggio da antonellocaroli »

Ho pulito tutto il fle mpd.conf cosi:

Codice: Seleziona tutto

music_directory                "/media/prova1/mu"

playlist_directory              "/var/lib/mpd/playlists"

db_file                 "/var/lib/mpd/tag_cache"

log_file                        "/var/log/mpd/mpd.log"

pid_file                        "/var/run/mpd/pid"

state_file                      "/var/lib/mpd/state"

sticker_file                   "/var/lib/mpd/sticker.sql"
###############################################################################
connection_timeout              "180"
###############################################################################
filesystem_charset              "UTF-8"
id3v1_encoding                  "UTF-8"
##############################################################################
bind_to_address "0.0.0.0"
mixer_type   "none"
log_level   "verbose"

follow_outside_symlinks "yes"
follow_inside_symlinks "yes"

zeroconf_enabled "no"
zeroconf_name "MPD"

audio_output {
        type            "alsa"
        name            "My Alsa"
        device          "hw:0,0"
        priority        "FIFO:52"
        enabled         "yes"
#        format          "192000:32:2"    # optional
#       mixer_device    "default"       # optional
#       mixer_control   "PCM"           # optional
#       mixer_index     "0"             # optional
}
audio_buffer_size  "2048"
buffer_before_play  "0%"


audio_output {
        type                    "alsa"
        name                    "Sox"
        enabled "no"
        device          "soxp"
        alsa_buffer             "131072"
        alsa_period             "8192"
}
Ma niente non va... muto per il terzo file...gli altri 2 vanno.... :oops:
sontero
new member
Messaggi: 74
Iscritto il: 04 set 2010, 15:17
Località: cagliari

Re: MPD (Music Player Daemon)

Messaggio da sontero »

Filippo ma che DAC possiedi ? Qual'è la sua massima risoluzione
Sono Giovanni (alias bigtube)
antonellocaroli
new member
Messaggi: 67
Iscritto il: 30 ago 2013, 12:10

Re: MPD (Music Player Daemon)

Messaggio da antonellocaroli »

sontero ha scritto:Filippo ma che DAC possiedi ? Qual'è la sua massima risoluzione
Sono Giovanni (alias bigtube)
Ciao Giovanni,
come va a te?

non ho un dac...ma una Xonar Essence stx.
ma non credo dipenda da questo, visto che con aplay funziona.
penso dipenda da mpd... :oops:
Rispondi
  • Argomenti simili
    Risposte
    Visite
    Ultimo messaggio