Raspberry Pi - Music Server

Discussion in 'Nguồn phát từ máy tính' started by bazokaster, 16/4/15.

  1. tml3nr

    tml3nr Advanced Member

    Joined:
    30/4/07
    Messages:
    3.082
    Likes Received:
    3.502
    Em setup test thử mô hình 3 trong một: Tidal Connect HiTide, aprendererminidlna 3 patch.

    Mọi thứ hoạt động hoàn hảo như ý bà cụ. Ngoại trừ vướng một việc hơi khó chịu.

    Khi Tidal Connect và aprenderer cùng start. Chỉ có 1 trong 2 play được do service kia đang giữ alsa.

    Vậy mình chỉ để startup service nào dùng nhiều hơn. Cái kia start thủ công.

    Cách giải quyết hoàn hảo cho việc này. Là tìm được cách nào cho nó tự động stop service còn lại khi play. Tương tự như tính năng "onevent" của spotifyd.

    Em không rõ bản dastereo giải quyết việc này như thế nào. Vì em test aprenderer chưa chạy được.

    Em nhớ là dev paparius của smpd có mấy cái script về event rất hay. Để em mò thử.

    Hoặc mình có thể đưa vào giao diện web nút bật tắt service? Về web em dốt đặc hic.

    Cách dễ nhất là tạo script rồi start... bằng cơm:

    Để start Tidal Connect:

    sudo nano /home/pi/tcstart.sh

    Code:
    #!/bin/bash
    
    sudo systemctl stop aprenderer.service
    sudo service minidlna stop
    sudo systemctl restart ifi-streamer-tidal-connect.service
    sleep 1
    sudo chrt -f -p 50 $(pidof tidal_connect_application)
    exit
    sudo chmod +x /home/pi/tcstart.sh

    Khi nào dùng TC mình sẽ chạy lệnh:

    ./tcstart.sh

    Để start aprenderer:

    sudo nano /home/pi/upnpstart.sh

    Code:
    #!/bin/bash
    
    sudo systemctl stop ifi-streamer-tidal-connect.service
    sudo service minidlna restart
    sudo systemctl restart aprenderer.service
    exit
    sudo chmod +x /home/pi/upnpstart.sh

    Khi nào dùng aprenderer mình sẽ chạy lệnh:

    ./upnpstart.sh

    Mình cũng có thể chạy các scripts này từ PC bằng putty hoặc plink. Có thể tạo shortcut để chạy bằng 1 click.

    Em dốt quá nên chỉ mò được tới đây. Nhờ các anh cho ý kiến thêm ạ.

    PS: Bản TC HiTide của dev shawaj có vẻ dễ kết nối với Tidal trên PC.

    [​IMG]
     
    Last edited: 7/3/21
    quangng, chuvanvu and tieuphi2006 like this.
  2. tml3nr

    tml3nr Advanced Member

    Joined:
    30/4/07
    Messages:
    3.082
    Likes Received:
    3.502
    Em mới test sơ một vòng vụ optimize âm thanh cho pi. Trước mắt em thấy chỉ cần set real-time scheduling cho process "tidal_connect_application" là hiệu quả nhất anh ạ.

    Vậy mình sẽ thêm vào lệnh "sudo chrt -f -p 50 $(pidof tidal_connect_application)" sau khi start service "ifi-streamer-tidal-connect.service" là xong.

    Anh xem thêm ở đây ạ:

    https://vnav.vn/posts/2597707/

    Nếu rãnh anh test thử script này. Em dựa theo thông số của dev dynobot. Test để gia giảm thông số rất khó và mất thời gian nên em chưa làm nổi.

    Code:
    #!/bin/bash
    
    echo 60 > /proc/sys/vm/swappiness
    
    echo 1000000 > /proc/sys/kernel/sched_latency_ns
    
    echo 1000000 > /proc/sys/kernel/sched_rt_period_us
    
    echo 950000 > /proc/sys/kernel/sched_rt_runtime_us
    
    echo 1 > /proc/sys/kernel/sched_autogroup_enabled
    
    echo 100 > /proc/sys/kernel/sched_rr_timeslice_ms
    
    echo 100000 > /proc/sys/kernel/sched_min_granularity_ns
    
    echo 25000 > /proc/sys/kernel/sched_wakeup_granularity_ns
    
    echo 16777216 | sudo tee /proc/sys/net/core/rmem_max > /dev/null 2>&1
    echo 16777216 | sudo tee /proc/sys/net/core/wmem_max > /dev/null 2>&1
    
    echo performance | sudo tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor > /dev/null 2>&1
    
    #Reduce Audio thread latency
    chrt -f -p 54 $(pgrep ksoftirqd/0)
    chrt -f -p 54 $(pgrep ksoftirqd/1)
    chrt -f -p 54 $(pgrep ksoftirqd/2)
    chrt -f -p 54 $(pgrep ksoftirqd/3)
    Để trả lại default anh chạy script này:

    Code:
    #!/bin/bash
    
    echo 60 > /proc/sys/vm/swappiness
    
    echo 18000000 > /proc/sys/kernel/sched_latency_ns
    
    echo 1000000 > /proc/sys/kernel/sched_rt_period_us
    
    echo 950000 > /proc/sys/kernel/sched_rt_runtime_us
    
    echo 1 > /proc/sys/kernel/sched_autogroup_enabled
    
    echo 100 > /proc/sys/kernel/sched_rr_timeslice_ms
    
    echo 2250000 > /proc/sys/kernel/sched_min_granularity_ns
    
    echo 3000000 > /proc/sys/kernel/sched_wakeup_granularity_ns
    
    echo 180224 | sudo tee /proc/sys/net/core/rmem_max > /dev/null 2>&1
    echo 180224 | sudo tee /proc/sys/net/core/wmem_max > /dev/null 2>&1
    
    echo ondemand | sudo tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor > /dev/null 2>&1
    
    #Reduce Audio thread latency
    chrt -f -p 20 $(pgrep ksoftirqd/0)
    chrt -f -p 20 $(pgrep ksoftirqd/1)
    chrt -f -p 20 $(pgrep ksoftirqd/2)
    chrt -f -p 20 $(pgrep ksoftirqd/3)
     
    Last edited: 7/3/21
    tieuphi2006 and newbie_75 like this.
  3. newbie_75

    newbie_75 Advanced Member

    Joined:
    29/3/20
    Messages:
    87
    Likes Received:
    104
    Kiến thức bác @tml3nr hướng dẫn thiệt là quý. Mình chỉ nghe online nên set up có phần đơn giản hơn, có TC là quá mừng rồi, đang apply mấy cái dễ dễ bác chỉ trước, mấy cái phức tạp hơn phải lúc nào có đk cũng thử xem sao. Nói thật bt ko có nhiều tgian để lọ mọ vì F1 nó ồn ào lắm , bởi vậy ngày thường toàn phải khuya chút mới vô forum được.
     
    sonlt126, tieuphi2006 and tml3nr like this.
  4. tml3nr

    tml3nr Advanced Member

    Joined:
    30/4/07
    Messages:
    3.082
    Likes Received:
    3.502
    Dạ khi nào rảnh hãy mò thêm anh ạ. Em thấy setup đơn giản như vậy là đã hay rồi.

    Chắc may mắn là nhờ cái renderer đó ngon, và cái OS version đó tiếng khá tốt.
     
    chuvanvu, sonlt126 and tieuphi2006 like this.
  5. tml3nr

    tml3nr Advanced Member

    Joined:
    30/4/07
    Messages:
    3.082
    Likes Received:
    3.502
    Các anh cho em bổ sung một thông tin quan trọng ạ. Trước đây do test chưa kỹ nên em kết luận không chính xác :(

    Khi mình dùng app như bubbleupnp hay mconnect phát Tidal sang upnp renderer truyền thống (Không tính đến OpenHome). Renderer lấy nhạc từ app hay từ internet là tùy theo đặc tính của renderer.

    Vậy nếu như renderer lấy được link trực tiếp từ internet. Phát Tidal, Qobuz bằng app bubbleupnp hay mconnect. Mình không bị ảnh hưởng bởi thiết bị đang chạy app.

    Chỉ cần test như sau là sẽ thấy liền:

    - Dùng JMC ngó vào upnp renderer.

    - Dùng mconnect và bubbleupnp, play Tidal xuất sang upnp renderer.

    Khi nhạc đang phát. Nhìn vào JMC ta sẽ thấy link nhạc đang phát.

    Thí dụ như hình bên dưới em phát Tidal từ mconnect sang NP5 và aprenderer:

    mconnect Tidal sang NP5 - Nhạc lấy từ internet:

    [​IMG]

    mconnect Tidal sang aprenderer - Nhạc lấy từ thiết bị đang chạy app mconnect:

    Lúc này ta gọi là app mconnect đang làm proxy streaming.

    [​IMG]
     
    Last edited: 7/3/21
    quangng, chipno and chuvanvu like this.
  6. tml3nr

    tml3nr Advanced Member

    Joined:
    30/4/07
    Messages:
    3.082
    Likes Received:
    3.502
    À anh nhớ lưu ý là có một số dac (Hoặc amp, loa, kernel...). Khi set volume alsa ở 100%, tiếng có thể hơi sạn dải trên.

    Trong trường hợp đó. Nên hạ volume xuống khoảng 86% (-4.00 dB).

    [​IMG]
     
    Last edited: 8/3/21
  7. oneclicklogin

    oneclicklogin Advanced Member

    Joined:
    18/12/12
    Messages:
    1.062
    Likes Received:
    802
    Có cách nào bypass luôn cái volume này không bác tức là không dùng volume mềm chỉ dùng volume cứng cho âm thanh nó nguyên bản.
     
  8. tml3nr

    tml3nr Advanced Member

    Joined:
    30/4/07
    Messages:
    3.082
    Likes Received:
    3.502
    Trên pi khi mình bypass thực chất là alsa volume nó giữ ở 100% anh ạ (Nếu như dac có hardware volume).

    Về lý thuyết khi volume 100% data sẽ không bị mất bit. Nhưng nếu như âm thanh nghe hơi sạn thì mình giảm tí sẽ êm tai hơn. Coi như dùng mẹo.

    Chỉ những device nào có volume hardware mình mới chỉnh được. Thí dụ như boss dac, dac+ pro...

    DigiOne, Schiit Eitr không có volume. Lúc nào cũng 100%.
     
    oneclicklogin, quangng and newbie_75 like this.
  9. newbie_75

    newbie_75 Advanced Member

    Joined:
    29/3/20
    Messages:
    87
    Likes Received:
    104
    B1: Mình kiểm tra aplay -l thì ra đúng tên Dac ở card 1 (mình xuất USB)
    B2: Kiểm tra theo lệnh "cat /usr/ifi/ifi-tidal-release/pa_devs/devices" thì ra iFi Pro Dsd gì đó.
    B3: Alsamixer thì đúng tên Dac nhưng báo "sound devices does not have any controls"
    Dac mình M500 có volumn cứng bác ạ
     
    tml3nr likes this.
  10. tml3nr

    tml3nr Advanced Member

    Joined:
    30/4/07
    Messages:
    3.082
    Likes Received:
    3.502
    Có nhiều git về tidal connect đã bị xóa. Không biết mấy dev này có bị Tidal hay ifi complain bản quyền hay không.

    Tình hình xấu nhất là Tidal đổi api. Khả năng này có thể xảy ra vì trong khoản 6 tháng gần đây. Tất cả các api cũ đều bị cắt.

    Động thái này cho thấy có vẻ tidal muốn người dùng tập trung vào các sản phẩm có liên kết với Tidal như roon và các device được chứng nhận.

    PS: TC có speaker_controller_application. Nó liên kết được với volume alsa và app tidal. Nhưng chỉ được một chiều từ control panel.

    https://github.com/balenalabs/balena-sound/pull/399

    [​IMG]
     
    newbie_75 likes this.
  11. tml3nr

    tml3nr Advanced Member

    Joined:
    30/4/07
    Messages:
    3.082
    Likes Received:
    3.502
    B1: Mình kiểm tra aplay -l thì ra đúng tên Dac ở card 1 (mình xuất USB)
    B2: Kiểm tra theo lệnh "cat /usr/ifi/ifi-tidal-release/pa_devs/devices" thì ra iFi Pro Dsd gì đó.


    Anh làm như vầy:

    Code:
    sudo systemctl stop ifi-streamer-tidal-connect
    
    cd /usr/ifi
    
    sudo ifi-tidal-release/pa_devs/run.sh
    
    Rồi kiểm tra lại:
    
    cat /usr/ifi/ifi-tidal-release/pa_devs/devices
    
    Nếu thấy tên dac của anh trong đó là ok.
    
    Sau đó:
    
    sudo systemctl restart ifi-streamer-tidal-connect
    Em chưa rõ lợi ích của việc này. Nếu nó play ra tiếng thì không làm cũng được. Sau này mình sẽ tìm hiểu thêm.

    Thí dụ như của em sau khi run.sh là (Topping E30):

    Code:
    device#0=E30: USB Audio (hw:1,0)
    device#1=default
    Number of devices = 2
    More info:

    https://github.com/seniorgod/ifi-tidal-release

    B3: Alsamixer thì đúng tên Dac nhưng báo "sound devices does not have any controls"
    Dac mình M500 có volumn cứng bác ạ


    Volume hardware là cái trong alsa mixer anh ạ. Khác với núm volume trên thiết bị. Chắc là cái dac của anh không có hardware volume mixer trong alsa. Vậy anh không cần quan tâm đến nó. Coi như lúc nào nó alsa cũng out 100%.
     
    Last edited: 9/3/21
  12. newbie_75

    newbie_75 Advanced Member

    Joined:
    29/3/20
    Messages:
    87
    Likes Received:
    104
    Vâng bác, nếu TC áp được lên rpi thì không còn nhiều khoảng cách giữa rpi và các sản phẩm hãng tuy nhiên khi đó Tidal sẽ phổ cập hơn. Đây là bài toán KD nên bên nào có lợi hơn họ sẽ theo hướng đó.
    Sắp tới khi Spotify có lossless cuộc đua sẽ càng thú vị, khi đó Tidal thất thế biết đâu họ sẽ thả nổi.
     
    tml3nr likes this.
  13. tml3nr

    tml3nr Advanced Member

    Joined:
    30/4/07
    Messages:
    3.082
    Likes Received:
    3.502
    Dạ đúng vậy ạ. Tùy theo chiến lược kinh doanh của mỗi hãng mà họ sẽ quyết định chuyện xiết hay thả. Cuộc chiến sắp tới rất gay cấn khi Spotify ra lossless. Hy vọng là có lợi cho anh em audiophile nghèo quê ta :D
     
  14. cent1210

    cent1210 Approved Member

    Joined:
    3/9/19
    Messages:
    41
    Likes Received:
    66
    Dastereo đặt ip tĩnh ntn vậy mấy bác
     
  15. tml3nr

    tml3nr Advanced Member

    Joined:
    30/4/07
    Messages:
    3.082
    Likes Received:
    3.502
    Có giao diện config network trong menu đó anh.

    Ở nhà em gán ip theo mac address trong router quang luôn cho tiện.
     
  16. cent1210

    cent1210 Approved Member

    Joined:
    3/9/19
    Messages:
    41
    Likes Received:
    66
    E có thử trong giao diện config network tắt dhcp gán ip cố định mà nó vẫn nhảy ip
     
  17. tml3nr

    tml3nr Advanced Member

    Joined:
    30/4/07
    Messages:
    3.082
    Likes Received:
    3.502
    Vậy set ip theo mac trong router cho lành anh ạ.
     
  18. cent1210

    cent1210 Approved Member

    Joined:
    3/9/19
    Messages:
    41
    Likes Received:
    66
    Còn cái wifi của dastereo làm sao để nó tự động chạy mỗi khi reset lại máy vậy bác
     
  19. tml3nr

    tml3nr Advanced Member

    Joined:
    30/4/07
    Messages:
    3.082
    Likes Received:
    3.502
    Em mò mò ra được cách giải quyết việc giữ alsa của TC và aprenderer rồi các anh ạ. Rất đơn giản.

    - pi start cả 2 services TC và aprenderer

    - Sau khi play TC. Chỉ cần đổi sang output khác là alsa release.

    - Sau khi play aprenderer. Chỉ cần xóa hết nhạc trong playlist (queue) cùa bubbleupnp là alsa release.

    Vậy là giải quyết được cái OS 3 in one TC, aprenderer và minidlna rồi.

     
    sonlt126 likes this.
  20. tml3nr

    tml3nr Advanced Member

    Joined:
    30/4/07
    Messages:
    3.082
    Likes Received:
    3.502
    Chỉ cần set wifi 1 lần là nó nhớ luôn mà anh? Y như các os khác ạ.

    PS: Em test bản dastereo rpi3_20210202 nha anh. Bản rpi4_20210210 chạy khó quá.
     
  21. chautranthanh

    chautranthanh Advanced Member

    Joined:
    22/2/18
    Messages:
    677
    Likes Received:
    416
    newbie_75 likes this.
  22. tml3nr

    tml3nr Advanced Member

    Joined:
    30/4/07
    Messages:
    3.082
    Likes Received:
    3.502
    Em mê bộ tam sên Tidal Connect, aprendererminidlna quá nên mò mẫm build thử xem thế nào. Đến hôm nay tạm ổn. Em xin phép share với cả nhà dùng thử.

    Em đặt tên là hitidepi, dựa theo tên project của dev shawaj.

    Âm thanh của TC và aprenderer rất hay. Thoát tốt và tự nhiên. 3 em này trong 1 OS theo em là rất lý tưởng cho Tidal và nhạc offline.

    Em có build thử trên xenomai 3.0.8 thì âm thanh không như mong đợi. Nên em quay về Raspbian. Sau khi test qua một vài version em phát hiện ra là bản Raspbian 4.19.118 rất ngon. Chạy nhanh nhẹn, tiếng thanh thoát. Đây là bản cuối cùng của v4.x. Nó là Debian 10 nên chạy được từ pi2 đến pi4 luôn.

    Em có làm cái menu để chuyển đổi setting thay đổi latency kernel. Profile em mượn theo các OS đã có trước đây.

    Chỉ cần chạy "sudo config" rồi chọn trong menu.

    http://hitidepi:8200/ | Dùng để xem status minidlna.

    http://hitidepi:7779/ | Dùng để setup aprenderer.

    Mời cả nhà dùng thử ạ!

    Em xin cảm ơn tất cả các dev đã viết các module, package dùng trong OS này. Xin cảm ơn tất cả các anh em trên diễn đàn đã chia sẻ, mở mang kiến thức cho em.

    Ở bản sau, có thể em sẽ đưa vào shellinabox để chạy được SSH và kéo volume trên giao diện web.

     
    Last edited: 14/3/21
    tauchien, quangng, Rõ Rồi and 2 others like this.
  23. newbie_75

    newbie_75 Advanced Member

    Joined:
    29/3/20
    Messages:
    87
    Likes Received:
    104
    Đã cài và đang thưởng thức :)
    Chạy nhanh và tiếng dải cao sáng hơn thì phải.
    Default là profile Archphile phải ko bác, bác có thể giải thích các profile thích hợp với các thể loại nào được không.
    Cám ơn bác
     
    tieuphi2006 and tml3nr like this.
  24. tml3nr

    tml3nr Advanced Member

    Joined:
    30/4/07
    Messages:
    3.082
    Likes Received:
    3.502
    Cảm ơn anh đã ủng hộ :rolleyes:

    Bản 4.19.118 này em thấy tiếng tốt hơn bản 5.4.83.

    Em thấy profile Archphile có vẻ hợp với OS này, nên để default.

    Theo em âm thanh do OS quyết định 60%. Renderer 40%. Các thứ optimize có thể tăng thêm được khoảng 10-20% tổng thể.

    OS phiên bản nào âm thanh hay. Mình tune rất dễ. Gia giảm thấy liền.

    Âm thanh mấy profile này theo em có xu hướng tăng dần từ chậm - dịu lên nhanh - nét.

    Thường tiếng chậm, mềm hợp với nhạc Việt hay vocal. Tiếng nhanh, sắc nghe nhạc cụ sướng hơn ạ.

    Mình có thể chuyển đổi khi đang play nhạc. Nên rất dễ cảm nhận.

    Em cố gắng đặt tên cho nó dễ hình dung :D

    Code:
    pi@hitidepi:~ $ sudo config
    -- Select Sound Signature v1.4 --
      1. Set default Raspbian (Relax)
      2. Set profile RuneAudio (Fluid)
      3. Set profile Dynobot (Strongly)
      4. Set profile Archphile (Delicate)
      5. Show current setting
      6. System information
      7. Restart HiTidePi
      8. Shutdown HiTidePi
      9. Exit menu
    [​IMG]
     
    Last edited: 14/3/21
    binna, quangng, TQ_Audio and 2 others like this.
  25. sonlt126

    sonlt126 Approved Member

    Joined:
    31/3/08
    Messages:
    8
    Likes Received:
    14
    bản này để truy cập putty thì mình login bằng user và pass gì vậy bạn @tml3nr , thanks ?
     
    tieuphi2006 and tml3nr like this.

Share This Page

Loading...