Raspberry Pi2/Pi3 για audio χρήση - AVClub audio player

Ήθελα να κάνω μια αναφορά στο πως μπορούμε να δούμε περισσότερες πληροφορίες αναφορικά με το τι συμβαίνει ακριβώς με το resampling κλπ.

Ο καλύτερος τρόπος είναι να κάνουμε ένα edit στο mpd.conf και να επιλέξουμε verbose logging.

Στη συνέχεια, αφού κάνουμε restart τον mpd, μπορούμε να βάλουμε σε ένα terminal να βλέπουμε realtime το log file του mpd.

Το ποιο ακριβώς εiναι το log file μπορούμε να το δούμε από το mpd.conf. Στην περίπτωση του Archphile, αυτό το επιτυγχάνουμε με την εντολή:

Code:
tail -f /var/log/mpd.log

Φορτώνουμε λοιπόν ένα αρχείο 16/44.1 και πατάμε play. Στη δική μου περίπτωση και χωρίς resampling, το log που παίρνω είναι το εξής:

Code:
Mar 31 14:13 : alsa_output: opened hw:1,0 type=HW
Mar 31 14:13 : alsa_output: buffer: size=16..131072 time=362..2972155
Mar 31 14:13 : alsa_output: period: size=8..65536 time=181..1486078
Mar 31 14:13 : alsa_output: default period_time = buffer_time/4 = 500000/4 = 125000
Mar 31 14:13 : alsa_output: format=S32_LE (Signed 32 bit Little Endian)
Mar 31 14:13 : alsa_output: buffer_size=22050 period_size=5513
Mar 31 14:13 : output: opened plugin=alsa name="Aune S16" audio_format=44100:32:2
Mar 31 14:13 : output: converting in=44100:16:2 -> f=44100:16:2 -> out=44100:32:2
Mar 31 14:13 : state_file: Saving state file /var/lib/mpd/mpdstate

Αυτό που βλέπουμε εδώ είναι ότι το μόνο conversion που γίνεται είναι από 16/44.1 σε 32/44.1 ώστε να μπορεί να αναπαράξει το 32μπιτο dac μου.

Η αλήθεια είναι ότι αγνοώ τη μεθοδολογία με την οποία γίνεται η μετατροπή αυτή.


Πάμε τώρα να δούμε τι γίνεται όταν ανοίξουμε όλα τα απαραίτητα στον mpd.conf για χρήση sox και quality very high. Η επιθυμητή δειγματοληψία resampling είναι 32/352.8:

Code:
Mar 31 14:26 : alsa_output: opened hw:1,0 type=HW
Mar 31 14:26 : alsa_output: buffer: size=90..131072 time=255..371520
Mar 31 14:26 : alsa_output: period: size=45..65536 time=127..185760
Mar 31 14:26 : alsa_output: default period_time = buffer_time/4 = 371519/4 = 92879
Mar 31 14:26 : alsa_output: format=S32_LE (Signed 32 bit Little Endian)
Mar 31 14:26 : alsa_output: buffer_size=131072 period_size=32768
Mar 31 14:26 : output: opened plugin=alsa name="Aune S16" audio_format=352800:32:2
Mar 31 14:26 : soxr: soxr engine 'double-precision'
Mar 31 14:26 : soxr: samplerate conversion ratio to 8.00
Mar 31 14:26 : output: converting in=44100:16:2 -> f=44100:16:2 -> out=352800:32:2


Εδώ λοιπόν επιβεβαιώνουμε εότι χρησιμοποιούμε τον sox για resampling. Επίσης βλέπουμε ότι η μετατροπή που γίνεται είναι από 16/44.1 σε 32/352.8. Επίσης αν θυμάμαι σωστά το double-precision αντιστοιχεί στο "very high" quality που έχουμε ορίσει.


Για την ιστορία, τις παραπάνω δοκιμές τις κάνω στο odroid c2, με καρφωμένο τον mpd και τα threads του σε isolated core και για τη μετατροπή από redbook σε 32/352.8 με την max ποιότητα του sox αυτό το ένα core απαιτεί max 30% χρήσης.


Κάτι τελευταίο που θέλω να αναφέρω είναι ότι δυστυχώς το resampling επηρρεάζει και τη λειτουργία DoP. Με χρήση του sox, σταματάμε να έχουμε dop και παίζουμε τα dsd στα 352.8.
 
Ήθελα να κάνω μια αναφορά στο πως μπορούμε να δούμε περισσότερες πληροφορίες αναφορικά με το τι συμβαίνει ακριβώς με το resampling κλπ.

Ο καλύτερος τρόπος είναι να κάνουμε ένα edit στο mpd.conf και να επιλέξουμε verbose logging.

......

Κάτι τελευταίο που θέλω να αναφέρω είναι ότι δυστυχώς το resampling επηρρεάζει και τη λειτουργία DoP. Με χρήση του sox, σταματάμε να έχουμε dop και παίζουμε τα dsd στα 352.8.

Πως γίνεται το verbose logging Μιχάλη;
Με την διαδικασία που περιγράφεις στη συνέχεια; Δεν το κατάλαβα...

......

Ναι όντως και στο MoOde το ίδιο συμβαίνει... τα DSD μετατρέπονται!
 
Πας και αλλάζεις αυτό:

log_level "default"

σε

log_level "verbose"

Και μετά κάνεις restart τον mpd.

Sent from my mind using Tapatalk
 
Πας και αλλάζεις αυτό:

log_level "default"

σε

log_level "verbose"

Και μετά κάνεις restart τον mpd.

Sent from my mind using Tapatalk

για να γίνει αυτό πρέπει πρώτα να κάνω τα παρακάτω;; :

chattr -i /etc/mpd.conf
nano /etc/mpd.conf
αλλαγή σε log_level "verbose"
Exit
Save [y]
chattr +i /etc/mpd.conf


επίσης μετά η εντολή που δίνεις για το Archphile είναι ίδια και για το Rune; Αν όχι πως αλλάζει;

Ευχαριστώ!
 
Θα σου αναφέρω τι ξέρω ότι ισχύει και μάλιστα για τον τελευταίο MPD όπου έχει αλλάξει και η σύντσξη στο mpd.conf (δε θυμάμαι πότε άλλαξε).


Κατ αρχάς υποθέτουμε ότι ο mpd έχει γίνει compile με υποστήριξη soxr και στο mpd.conf είναι ενεργοποιημένος:

Code:
resampler {
  plugin "soxr"
  quality "very high"
}

Κατάφερα και πέρασα τον MPD 0.20.6 στο Rune και στο "mpd -V" εχω πλέον την ένδειξη
Filters:
libsamplerate soxr

Θα πρέπει να τον ενεργοποιήσω με την πιο πάνω προσθήκη στο /etc/mpd.conf ;;

Αν ναι πρέπει να μπει σε συγκεκριμένη θέση στο αρχείο ή μπορώ να το προσθέσω στο τέλος;
(σορυ για τις απλοϊκές ερωτήσεις αλλά είμαι εντελώς νιουμπις όπως καταλαβαίνεις)
 
τελικά μάλλον το κατάφερα να ενεργοποιήσω τον soxr και παίζω 352800:32:2 με φόρτο πυρήνα περί το 30% και συνολικό φόρτο του raspberry 7-8%
πριν όταν εν αγνοία μου έπαιζα με τον resampler του mpd ο φόρτος του πυρήνα ήταν στο 95% και ο συνολικός περί το 25-30%
ηχητικά ο soxr ακούγεται αισθητά καλύτερα...
τώρα μένει να δω αν αξίζει τον κόπο το upsampling σε σχέση με το bit perfect και την ευκολία του (DOP κλπ)

Code:
root@runeaudio(rw):~# cat /proc/asound/card*/pcm*p/sub*/hw_params
access: RW_INTERLEAVED
format: S32_LE
subformat: STD
channels: 2
rate: 352800 (352800/1)
period_size: 32768
buffer_size: 131072

Code:
root@runeaudio(rw):~# top
top - 18:15:18 up 48 min,  1 user,  load average: 0.39, 0.33, 0.29
Tasks: 136 total,   1 running, 135 sleeping,   0 stopped,   0 zombie
%Cpu0  :   0.0/0.0     0[                                                                                                    ]
%Cpu1  :   0.7/2.0     3[|||                                                                                                 ]
%Cpu2  :   0.0/0.0     0[                                                                                                    ]
%Cpu3  :  24.0/0.6    25[|||||||||||||||||||||||||                                                                           ]
GiB Mem : 18.4/0.947    [                                                                                                    ]
GiB Swap:  0.0/0.000    [                                                                                                    ]
 
Θα σου πρότεινα να κάνεις τη διαδικασία με το verbose logging για να σιγουρευτείς ότι παίζεις όντως με sox.

Αν το δοκιμάσεις, να ξέρεις ότι την πληροφορία με τον ποιο resampler παίζεις θα την πάρεις μόνο στο πρώτο κομμάτι που θα παίξεις και όχι όταν κάνεις skip σε επόμενο. Γι αυτό βάζεις την εντολή με το tail -f και μετά πατάς play.
 
Χα.. ήταν η επόμενη ερώτηση που θα έκανα!
Πως θα δω ότι σίγουρα παίζει με soxr
Θα το κάνω.. ευχαριστώ!

Sent from my Nexus 5X using Tapatalk
 
Ήθελα να κάνω μια αναφορά στο πως μπορούμε να δούμε περισσότερες πληροφορίες αναφορικά με το τι συμβαίνει ακριβώς με το resampling κλπ.

Ο καλύτερος τρόπος είναι να κάνουμε ένα edit στο mpd.conf και να επιλέξουμε verbose logging.

Στη συνέχεια, αφού κάνουμε restart τον mpd, μπορούμε να βάλουμε σε ένα terminal να βλέπουμε realtime το log file του mpd.

Το ποιο ακριβώς εiναι το log file μπορούμε να το δούμε από το mpd.conf. Στην περίπτωση του Archphile, αυτό το επιτυγχάνουμε με την εντολή:

Code:
tail -f /var/log/mpd.log

Θα σου πρότεινα να κάνεις τη διαδικασία με το verbose logging για να σιγουρευτείς ότι παίζεις όντως με sox.

Αν το δοκιμάσεις, να ξέρεις ότι την πληροφορία με τον ποιο resampler παίζεις θα την πάρεις μόνο στο πρώτο κομμάτι που θα παίξεις και όχι όταν κάνεις skip σε επόμενο. Γι αυτό βάζεις την εντολή με το tail -f και μετά πατάς play.

Μιχάλη καλημέρα...
Έκανα verbose logging αλλά η εντολή που έδωσες πιο πάνω δεν αναγνωρίζεται στο Rune
Ξέρεις μήπως ποια πρέπει να δώσω;
 
Όπως ανέφερα και πριν, η όλη λογική είναι να βλέπουμε real time τι συμβαίνει στο Log file. Για το κάνουμε αυτό σε ένα log file χρειαζόμαστε την παρακάτω εντολή:

Code:
tail -f /path/to/log/file


Στο /etc/mpd.conf σχετικά ψηλά θα βρεις την εγγραφή με το ποιο είναι το δικό σου logfile. Στο mpf.conf του Archphile η αντίστοιχη εγγραφή είναι:

Code:
log_file        "/var/log/mpd.log"

Οπότε η πρώτη εντολή διαμορφώνεται σε:

Code:
tail -f /var/log/mpd.log
 
Στο Rune λοιπόν είναι
Code:
tail -f /var/log/runeaudio/mpd.log

και μου δίνει
Code:
Apr 02 18:31 : alsa_output: opened hw:0,0 type=HW
Apr 02 18:31 : alsa_output: buffer: size=90..131072 time=255..371520
Apr 02 18:31 : alsa_output: period: size=45..65536 time=127..185760
Apr 02 18:31 : alsa_output: default period_time = buffer_time/4 = 371519/4 = 92879
Apr 02 18:31 : alsa_output: format=S32_LE (Signed 32 bit Little Endian)
Apr 02 18:31 : alsa_output: buffer_size=131072 period_size=32768
Apr 02 18:31 : output: opened plugin=alsa name="Evo Dac Two" audio_format=352800:32:2
Apr 02 18:31 : soxr: soxr engine 'double-precision'
Apr 02 18:31 : soxr: samplerate conversion ratio to 8.00
Apr 02 18:31 : output: converting in=44100:16:2 -> f=44100:16:2 -> out=352800:32:2

οπότε υποθέτω πως όλα καλά! Ναι;
 
Φαντάζομαι ότι θα αντιληφθήκατε ότι όσο εύκολο interface και να έχει μια διανομή, αν δεν λερώσεις τα χέρια σου, ούτε θα το ρυθμίσεις 100% όπως θες, ούτε θα είσαι σίγουρος ποτέ για το τι πραγματικά γίνεται!

Ακόμα και να δίνεται επιλογή στο interface να διαλέξεις resampler κλπ, αν δεν δεις το log δεν μπορείς ποτέ να είσαι σίγουρος!
 
Παρηγγειλα το Raspberry Pi 3 και με τη βοηθεια ενος συμφορουμιτη θα το σεταρουμε,αποκλειστικα για media player μουσικης...
Το setup μου ειναι ο Yamaha AS2000 και CD player το Harman Kardon HD990,η ερωτηση μου ειναι πως θα το συνδεσω με το CD player για να εκμεταλλευτω το DAC του player?Αυτο επειδη το raspberry δεν εχει οπτικη εξοδο....Αν μπορειτε να βοηθησετε τον αοματο..
 
Με λίγο ψάξιμο που έκανα, χωρίς να είμαι καθόλου γνώστης, βρήκα ότι το player μου έχει το ad1955 DAC, μπορείτε να με βοηθήσετε αν γίνεται αυτό που προανέφερα ??