Dùng Tidal và Spotify với Archphile

tml3nr

Moderator
Màu mè một tí :D

Chép đè file coverimage-httpstream.png này vào /usr/share/mympd/htdocs/assets

coverimage-httpstream.png


mympd_mod_icon.png
 

mtminh

Well-Known Member
archphile.jpg


Anh @tml3nr, myMPD hiển thị đẹp nhất: Microsoft Edge. Bản nhạc trên, em so vói nghe trên NAS, Spotify thiếu không gian nhạc, chiều sâu, dynamic (đã check high quality streaming và 16/44.1 như nhau). Spotify là vậy phải không anh ???
 
Chỉnh sửa lần cuối:

tml3nr

Moderator
View attachment 299415

Anh @tml3nr, myMPD hiển thị đẹp nhất: Microsoft Edge. Bản nhạc trên, em so vói nghe trên NAS, Spotify thiếu không gian nhạc, chiều sâu, dynamic (đã check high quality streaming và 16/44.1 như nhau). Spotify là vậy phải không anh ???
Nhạc trên Spotify là nhạc nén anh ạ. Họ dùng codec ogg, bitrate cao nhất chỉ là 320kbps nên nghe không bằng lossless. Có lẽ do muốn tương thích tốt với nhiều player nên họ chọn cái này. Chứ nếu dùng opus thì chắc âm thanh hay hơn nhiều.

Anh nhớ kiểm tra kỹ thông số trong SC để chắc chắn là mình đã chọn 320.

Tiếng của Spotify, với đồ của em nghe trên moode và volumio rất mờ. May mà mang được qua rune và archphile nên em nghe thấy dễ chịu.

Anh có nghiên kiú về alsa và softvol không ạ? Cho em biết với. Em vừa mới phát hiện ra vài chổ trong alsa settings ảnh hưởng nhiều tới âm thanh. Em đang muốn tìm hiểu kỹ hơn, để kiểm soát nó sao cho âm thanh hay nhất có thể.

Thông tin về codec của Spotify:

https://support.spotify.com/us/article/high-quality-streaming/

https://community.spotify.com/t5/Live-Ideas/Music-Use-Opus-Codec-instead-of-OGG-Vorbis/idi-p/1207548
 
Chỉnh sửa lần cuối:

mtminh

Well-Known Member
Cám ơn anh @tml3nr,. Em cài SpotifySetup trên desktop, chỉ có Settings Music quality streaming (Premium only) = On/Off (Đã On).
Tai codec, hèn chi nghe không đã tai :rolleyes:. Vấn đề mờ. nhòe, Em thấy bản moode 384a (real time) ok, bản sau này bỏ real time đều vướng. Volumio, phần optimize không được chú trọng, settings chung chung, dễ xài, dễ tương thích thiết bị mới ???, nghe thường thôi.
Em chưa tìm hiểu về alsa, sotfvol anh ạ. Bớt đi những gì software bắt phần cứng xử lí mà mình không cần đến, âm thanh tốt hơn (nghe thích tùy tai nhé :)). VD: Tắt TVservice, tắt Zeroconfig ảnh hưởng giống nhau, đươc cộng thêm.
Em nể phục tính "Em yêu khoa học" của anh :D.
 

tml3nr

Moderator
Cám ơn anh @tml3nr,. Em cài SpotifySetup trên desktop, chỉ có Settings Music quality streaming (Premium only) = On/Off (Đã On).
Tai codec, hèn chi nghe không đã tai :rolleyes:. Vấn đề mờ. nhòe, Em thấy bản moode 384a (real time) ok, bản sau này bỏ real time đều vướng. Volumio, phần optimize không được chú trọng, settings chung chung, dễ xài, dễ tương thích thiết bị mới ???, nghe thường thôi.
Em chưa tìm hiểu về alsa, sotfvol anh ạ. Bớt đi những gì software bắt phần cứng xử lí mà mình không cần đến, âm thanh tốt hơn (nghe thích tùy tai nhé :)). VD: Tắt TVservice, tắt Zeroconfig ảnh hưởng giống nhau, đươc cộng thêm.
Em nể phục tính "Em yêu khoa học" của anh :D.
Cảm ơn anh đã động viên. Em cũng vì mê nhạc nên ráng mày mò.

Vụ alsa em mới phát hiện được như sau ạ. Em dựa theo Boss Dac vì em chỉ có mỗi cái này. Nhưng em nghĩ có thể nhiều DAC khác cũng tương tự.

Mỗi một DAC nhà sản xuất mặc nhiên set các thông số làm việc. Nhưng vì lý do nào đó, OS đã set lại theo cách khác. Có thể settings default chưa chắc đã hợp với dàn máy của mình. Nhưng vì nó ảnh hưởng tới âm thanh nhiều nên mình cần phải lưu ý để set sao cho OK nhất.

Đây là setup default của Boss Dac v1.1:

alsa_default_values_Boss_v1.1.png

Mặc nhiên trên Rune alsa được set như sau. Đúng như default của Boss Dac. Âm thanh OK:

alsa_rune_default_values_Boss_v1.1.png


Trên Archphile, nếu không remove (#) tham số /usr/bin/unmute trong file archphile-optimize. Default OS set như sau:

alsa_archphile_default_values_Boss_v1.1_notes.png


Tiếng nó rất ồn và bị lấn bass. Em phải set lại giống như trên Rune thì nghe OK.

Túm lại phải kiểm tra thật cẩn thận alsamixer để bảo đảm là nó đang ở settings hợp lý.

Về Softvol, em muốn tìm hiểu nó để kiểm soát tốt hơn đường đi của tín hiệu.

PS: Bổ sung để tham khảo. Setup default của Boss Dac v1.2:

alsa_default_values_Boss_v1.2.png
 
Chỉnh sửa lần cuối:

mtminh

Well-Known Member
Anh @tml3nr giống " Tự điển sống " rồi :). Thường setup chung chung cho mọi phần cứng (Ít bị lỗi), mọi người đọc hướng dẫn là xài được thui. Giờ tinh chỉnh cho khớp, phù hợp từng thiết bị (Fine Adj.), hay quá anh ơi. Thường em kỵ và rất cân nhắc "Boost" trong audio, nó làm sai lệch. đươc cái lọ thì mất cái chai. Dễ dẫn đến overload chính nó và tầng sau (overload e không biết dich ra sao cho dễ hiểu). Để em thời gian mày mò nổi hem. Cái này a @trung224 góp ý, mau đến đích lắm.
 
Chỉnh sửa lần cuối:

thebluewindows

Well-Known Member
Cái này phải hỏi @tml3nr : làm thế nào để cài cho Archphile đại khái là "keep audio device alive" để DAC ko bị auto standby? Tks a lot. :)
 

tml3nr

Moderator
Cái này phải hỏi @tml3nr : làm thế nào để cài cho Archphile đại khái là "keep audio device alive" để DAC ko bị auto standby? Tks a lot. :)
Trước giờ em dùng toàn DAC HAT nên không biết vụ này anh ạ :confused:

Anh tìm thử bên raspbian có cách nào không? Nếu có mình sẽ tìm cách mang sang arch linux.

Nếu đoán mò dựa trên các trường hợp tương tự mà em biết. Chắc là phải set cho OS gửi định kỳ một tín hiệu nào đó sang ku DAC kia, cho nó đừng ngủ. (Nếu như không set được bên DAC)

PS: Không biết có liên quan hay không. VLC trong streaming có một tham số để "Keeping the stream open":

https://wiki.videolan.org/Documentation:Streaming_HowTo/Command_Line_Examples/

Keeping the stream open:

Mã:
% % vlc -vvv input_stream -sout-keep
-sout=#transcode{acodec=mp3}:duplicate{dst=display{delay=6000},
dst=gather:std{mux=mpeg1,dst=:8080/stream.mp3,access=http},select="novideo"}

The basic transcoding is an mp3 stream from the file you select (if it is a video file, then the video is ignored). It is streamed via http to localhost:8080/stream.mp3

The combination of :sout-keep and dst=gather:std mean that the stream is kept open and subsequent items are played through the same stream.
 
Chỉnh sửa lần cuối:

thebluewindows

Well-Known Member
Trước giờ em dùng toàn DAC HAT nên không biết vụ này anh ạ :confused:

Anh tìm thử bên raspbian có cách nào không? Nếu có mình sẽ tìm cách mang sang arch linux.

Nếu đoán mò dựa trên các trường hợp tương tự mà em biết. Chắc là phải set cho OS gửi định kỳ một tín hiệu nào đó sang ku DAC kia, cho nó đừng ngủ. (Nếu như không set được bên DAC)

PS: Không biết có liên quan hay không. VLC trong streaming có một tham số để "Keeping the stream open":

https://wiki.videolan.org/Documentation:Streaming_HowTo/Command_Line_Examples/

Keeping the stream open:

Mã:
% % vlc -vvv input_stream -sout-keep
-sout=#transcode{acodec=mp3}:duplicate{dst=display{delay=6000},
dst=gather:std{mux=mpeg1,dst=:8080/stream.mp3,access=http},select="novideo"}

The basic transcoding is an mp3 stream from the file you select (if it is a video file, then the video is ignored). It is streamed via http to localhost:8080/stream.mp3

The combination of :sout-keep and dst=gather:std mean that the stream is kept open and subsequent items are played through the same stream.
Trong OS khác vd như OpenElec có phần option này (với HDMI thì phải) nhưng mấy OS về nhạc search chưa thấy gì khả thi...:(
 

tml3nr

Moderator
Cám ơn anh @tml3nr,. Em cài SpotifySetup trên desktop, chỉ có Settings Music quality streaming (Premium only) = On/Off (Đã On).
Tai codec, hèn chi nghe không đã tai :rolleyes:. Vấn đề mờ. nhòe, Em thấy bản moode 384a (real time) ok, bản sau này bỏ real time đều vướng. Volumio, phần optimize không được chú trọng, settings chung chung, dễ xài, dễ tương thích thiết bị mới ???, nghe thường thôi.
Em chưa tìm hiểu về alsa, sotfvol anh ạ. Bớt đi những gì software bắt phần cứng xử lí mà mình không cần đến, âm thanh tốt hơn (nghe thích tùy tai nhé :)). VD: Tắt TVservice, tắt Zeroconfig ảnh hưởng giống nhau, đươc cộng thêm.
Em nể phục tính "Em yêu khoa học" của anh :D.
Anh nhắc em mới nhớ tới zeroconf (avahi). Vậy mà bao lâu nay em không nghĩ tới nó :confused:

Em mới tắt nó trên rune, tiếng hay hơn rõ lắm anh ạ. Em thấy là tiếng khác hơn nhiều so với mình tắt tvservice.

Tắt zeroconf / avahi:

Mã:
systemctl disable avahi-daemon

Tắt tvservice:

Mã:
nano /etc/rc.local

thêm vào:

Mã:
#!/bin/sh
/opt/vc/bin/tvservice -o

Mã:
nano /usr/lib/systemd/system/rc-local.service

sửa lại:

Mã:
[Unit]
Description=/etc/rc.local
After=network.target

[Service]
Type=simple
ExecStart=/etc/rc.local
TimeoutSec=0

[Install]
WantedBy=multi-user.target

Mã:
systemctl enable rc-local
systemctl start rc-local

Kiểm tra lại:

Mã:
/opt/vc/bin/tvservice -status

Cảm ơn anh @mtminh lần nữa ạ :p
 
Chỉnh sửa lần cuối:

mtminh

Well-Known Member
@tml3nr . Anh disable avahi rồi ssh thêm dòng lệnh này để sửa nội dung file mpd.conf. Tắt cả gốc lẫn ngọn, Khỏi hên sui khi "ngọn" vẫn còn kích hoạt, nó đi tìm "gốc". Sui, khởi động chậm hoặc treo.

redis-cli hset mpdconf zeroconf_enabled no
Reboot .
Vào Menu -> Debug ->mpd.conf, bấm F5 thấy zeroconf_enabled "no"là OK.

Với Rune: để bỏ công đoạn tạo file: rc.local & rc-local.service (hao tài nguyên, đang cố gắng giảm), ăn ké theo.. Mấy cái này chuyển qua lai " Sound Profiles" ở Rune UI thì tác dụng luôn, không cần reboot Anh làm như sau:
--TVservice:
nano /srv/http/command/orion_optimize.sh
Thêm dòng:
##################
# common startup #
##################
#if [ "$PID" != null ]; then
#echo "Set priority for: cifsd"
#renice -20 $PID
#fi
cifsprio pid=$(pidof cifsd)
echo "Set normal priority for: rune_SY_wrk"
renice 20 $(pgrep rune_SY_wrk)
echo "Set normal priority for: rune_PL_wrk"
renice 20 $(pgrep rune_PL_wrk)
echo "Set normal priority for: smbd"
renice 19 $(pidof smbd)
echo "Set normal priority for: nmbd"
renice 19 $(pidof nmbd)
/opt/vc/bin/tvservice -o

-- Muốn sửa /proc/sys/kernel/sched_rr_timeslice_ms 10:
nano /srv/http/command/orion_optimize.sh
Anh thêm dòng lệnh
echo 10 > /proc/sys/kernel/sched_rr_timeslice_ms vào # common startup #, sẽ áp dung cho tất cả "Sound profile". Muốn cho từng "sound profile" riêng biệt như "RuneAudio". Anh thêm vào đúng vị trí như dưới:

# default
if [ "$1" == "RuneAudio" ]; then
ifconfig eth0 mtu 1500
ifconfig eth0 txqueuelen 1000
echo 0 > /proc/sys/vm/swappiness
modKschedLatency hw=$2 s01=1500000 s02=4500000 s03=4500000 s04=4500000 s05=4500000 s06=4500000 s07=4500000 s08=4500000 s09=4500000 s10=4500000 u01=3 u02=3 u03=3 u04=3 u05=3 u06=3 u07=3 u08=3 u09=3 u10=3
echo 10 > /proc/sys/kernel/sched_rr_timeslice_ms
mpdprio_nice
echo "RuneAudio sound signature profile"
fi
 
Chỉnh sửa lần cuối:

tml3nr

Moderator
@tml3nr

Phần 1:

Anh disable avahi rồi ssh thêm dòng lệnh này để sửa nội dung file mpd.conf. Tắt cả gốc lẫn ngọn, Khỏi hên sui khi "ngọn" vẫn còn kích hoạt, nó đi tìm "gốc". Sui, khởi động chậm hoặc treo.

redis-cli hset mpdconf zeroconf_enabled no
Reboot .
Vào Menu -> Debug ->mpd.conf, bấm F5 thấy zeroconf_enabled "no"là OK.

Phần 2:

Với Rune: để bỏ công đoạn tạo file: rc.local & rc-local.service (hao tài nguyên, đang cố gắng giảm), ăn ké theo.. Mấy cái này chuyển qua lai " Sound Profiles" ở Rune UI thì tác dụng luôn, không cần reboot Anh làm như sau:
--TVservice:
nano /srv/http/command/orion_optimize.sh
Thêm dòng:
##################
# common startup #
##################
#if [ "$PID" != null ]; then
#echo "Set priority for: cifsd"
#renice -20 $PID
#fi
cifsprio pid=$(pidof cifsd)
echo "Set normal priority for: rune_SY_wrk"
renice 20 $(pgrep rune_SY_wrk)
echo "Set normal priority for: rune_PL_wrk"
renice 20 $(pgrep rune_PL_wrk)
echo "Set normal priority for: smbd"
renice 19 $(pidof smbd)
echo "Set normal priority for: nmbd"
renice 19 $(pidof nmbd)
/opt/vc/bin/tvservice -o

Phần 3:

-- Muốn sửa /proc/sys/kernel/sched_rr_timeslice_ms 10:
nano /srv/http/command/orion_optimize.sh
Anh thêm dòng lệnh
echo 10 > /proc/sys/kernel/sched_rr_timeslice_ms vào # common startup #, sẽ áp dung cho tất cả "Sound profile". Muốn cho từng "sound profile" riêng biệt như "RuneAudio". Anh thêm vào đúng vị trí như dưới:

# default
if [ "$1" == "RuneAudio" ]; then
ifconfig eth0 mtu 1500
ifconfig eth0 txqueuelen 1000
echo 0 > /proc/sys/vm/swappiness
modKschedLatency hw=$2 s01=1500000 s02=4500000 s03=4500000 s04=4500000 s05=4500000 s06=4500000 s07=4500000 s08=4500000 s09=4500000 s10=4500000 u01=3 u02=3 u03=3 u04=3 u05=3 u06=3 u07=3 u08=3 u09=3 u10=3
echo 10 > /proc/sys/kernel/sched_rr_timeslice_ms
mpdprio_nice
echo "RuneAudio sound signature profile"
fi
Phần 1:

Cái này quá hay. Đúng là sau khi em disable avahi-daemon có lúc reboot bị treo :confused:

Mã:
redis-cli hset mpdconf zeroconf_enabled no

2018-07-30_080813.png


Phần 2 và 3:

Em cũng không muốn start rc-local.service mà không biết máng vào đâu. Em không biết là orion_optimize.sh chạy tự động mỗi khi reboot :confused:

Mấy cái này hay quá mà sao giờ anh mới nói. Làm cho em... mãi đi tìm :D

Cảm ơn anh lần nữa ạ. Anh còn chiêu gì để optimize nữa anh cho bọn em biết với :rolleyes:

PS: Archphile em nghe tidal và spotify ok. Nhưng nghe nhạc trong NAS thì thua rune nhiều quá. Tiếng nó mờ và không gian không rõ nét. Em có thử thay đổi những setting kernel nhưng không biết làm sao cho nó giống tiếng của rune

Anh có kinh nghiệm gì về việc này xin cho em biết với.
 
Chỉnh sửa lần cuối:

mtminh

Well-Known Member
anh @tml3nr.
1. Em có thử optimize vài setting khác, không hiệu quả rõ rệt.
2. Em thấy, các OS & mpd được update phiên bản mới nhất: Tiếng nhòe hơn tí, làm mờ, không rõ nét. Anh nghĩ realtime kernel giải quyết được vụ này, nhưng ngoài khả năng. Thôi thì tùy cơ ứng biến. Dựa vào mpd.service của Moode v.384 và Rune của Frank, thay đổi theo, thấy cải thiện chút ít. Anh thử xem sao ( Như rune potay)

Đây là mpd.service của Moode 384 ( realtime kernel), của rune anh đã có sẵn.

[Unit]
Description=Music Player Daemon
After=network.target sound.target

[Service]
# Real-time / Low latency params
# ps -e -o class,rtprio,pri,nice,cmd
# for real-time scheduling policies the "nice" param is ignored and the pri column is not relevant
# for mpd output thread
LimitRTPRIO=99
LimitMEMLOCK=infinity

# scheduling policy
# real-time
# - fifo, first in first out
# - rr, round robin
# static
# - other, the standard round-robin time-sharing (ts) policy
# - batch, for "batch" style execution of processes
# - idle, for running very low priority background jobs
CPUSchedulingPolicy=fifo

# scheduling priority
# 1 = lowest, 99 = highest)
CPUSchedulingPriority=43

# scheduling priority adjustment
# applies only to static scheduling policies
# 0 = default, -20 = highest, 19 = lowest
Nice=-10

# processor affinity bit mask
# - empty string = reset bit mask
# - cpu index list or dash seperated range
CPUAffinity=1

# Launch params
EnvironmentFile=/etc/default/mpd
ExecStart=/usr/local/bin/mpd --no-daemon $MPDCONF

[Install]
WantedBy=multi-user.target
----
PS: Archiphile: Nice= -16 (default), CPUAffinity=1 (default)
-- Lúc mới dùng RPi3 & Dietpi làm NAS, em bị vướng vào hiện tượng trên, Tweak samba service (daemon), hiệu quả thấy rõ và em dùng luôn đến giờ.
Anh tham khảo thêm bài viết này:
Setting Up ALSA and Fine-Tuning
https://sites.google.com/site/computeraudioorg/home/setting-up-alsa
 
Chỉnh sửa lần cuối:

tml3nr

Moderator
anh @tml3nr.
1. Em có thử optimize vài setting khác, không hiệu quả rõ rệt.
2. Em thấy, các OS & mpd được update phiên bản mới nhất: Tiếng nhòe hơn tí, làm mờ, không rõ nét. Anh nghĩ realtime kernel giải quyết được vụ này, nhưng ngoài khả năng. Thôi thì tùy cơ ứng biến. Dựa vào mpd.service của Moode v.384 và Rune của Frank, thay đổi theo, thấy cải thiện chút ít. Anh thử xem sao ( Như rune potay)

Đây là mpd.service của Moode 384 ( realtime kernel), của rune anh đã có sẵn.

[Unit]
Description=Music Player Daemon
After=network.target sound.target

[Service]
# Real-time / Low latency params
# ps -e -o class,rtprio,pri,nice,cmd
# for real-time scheduling policies the "nice" param is ignored and the pri column is not relevant
# for mpd output thread
LimitRTPRIO=99
LimitMEMLOCK=infinity

# scheduling policy
# real-time
# - fifo, first in first out
# - rr, round robin
# static
# - other, the standard round-robin time-sharing (ts) policy
# - batch, for "batch" style execution of processes
# - idle, for running very low priority background jobs
CPUSchedulingPolicy=fifo

# scheduling priority
# 1 = lowest, 99 = highest)
CPUSchedulingPriority=43

# scheduling priority adjustment
# applies only to static scheduling policies
# 0 = default, -20 = highest, 19 = lowest
Nice=-10

# processor affinity bit mask
# - empty string = reset bit mask
# - cpu index list or dash seperated range
CPUAffinity=1

# Launch params
EnvironmentFile=/etc/default/mpd
ExecStart=/usr/local/bin/mpd --no-daemon $MPDCONF

[Install]
WantedBy=multi-user.target
----
PS: Archiphile: Nice= -16 (default), CPUAffinity=1 (default)
-- Lúc mới dùng RPi3 & Dietpi làm NAS, em bị vướng vào hiện tượng trên, Tweak samba service (daemon), hiệu quả thấy rõ và em dùng luôn đến giờ.
Anh tham khảo thêm bài viết này:
Setting Up ALSA and Fine-Tuning
https://sites.google.com/site/computeraudioorg/home/setting-up-alsa
Em cũng thấy trên rune, khi mình update mpd là tiếng nó dở rõ. Trước giờ em cứ nghĩ là khi update nó làm sai lệch các tham số đã set trước đó.

Em cảm ơn anh rất nhiều về những chia sẻ kinh nghiệm rất hay và độc. Em sẽ mò theo. Chổ nào bí sẽ làm phiền anh tiếp nhé :rolleyes:

Disable triệt để avahi-daemon trên rune tiếng hay hơn nhiều lắm anh ạ. Em nghe mê mẩn tâm hồn :D
 
Chỉnh sửa lần cuối:

mtminh

Well-Known Member
Em cảm ơn anh rất nhiều về những chia sẻ kinh nghiệm rất hay và độc. Em sẽ mò theo. Chổ nào bí sẽ làm phiền anh tiếp nhé :rolleyes:

Disable triệt để avahi-daemon trên rune tiếng hay hơn nhiều lắm anh ạ. Em nghe mê mẩn tâm hồn :D
Em bịt mắt, hai tay quờ quạng. Hên sui , vớ phải món bở thì sướng. Không được sẽ nhờ anh. Anh siêng hơn em nhiều :)
 
Chỉnh sửa lần cuối:

mtminh

Well-Known Member
disable cái avahi của Volumio đc ko bác?
Em chưa tìm hiểu trên volumio, nên không biết sau khi tắt còn ổn định hay không ?. Có enable thì disable hoặc ngược lại được ạ. Bác thử xem sao, không thì enable lại.

systemctl disable avahi-daemon.

Chưa biết zeroconfig trốn ở đâu

PS: Mới cài, xem lướt qua, volumio set độ an toàn mặc định cao thật.
 
Chỉnh sửa lần cuối:
Bên trên