Raspberry Pi + Rune Audio ::: Một trải nghiệm nghe nhạc mới

nqn_vnn

Well-Known Member
Nếu bác nghe Moode Volumio rAudio mà như nhau thì chỉ cần xài Volumio là đủ bài.

Nếu bác xài VitOS mà nghe ra các giải âm thanh chi tiết hơn âm trầm tốt hơn rAudio thì nên dùng VitOS. VitOS dùng ArchLinux Realtime chênh lệch 50us với Moode là khá nhiều.


Mình thích OS nào nghe cân bằng, nghe lâu không ngán.
Em thích giao diện LMS của Bác từ bản rAudio ... VitOS nhìn thấy thân thiện hơn, app nên có lẽ tối ưu việc xử lý nhanh hơn ( giao diện ).
Em flash Bản 29.7G lên thẻ boot cho pi3 không thấy nhận IP. Không rõ là bản đó chỉ dành cho Pi4 hay là lỗi gì.
 

nqn_vnn

Well-Known Member
@linh0983 Có hàng rồi, test thử anh.

DSD play 128 Ok trên I2S, có thể là 256, 512 cũng play OK. Youtube Cast chưa chạy mượt (update sau).

@sadays You can check, please review!
Version 1.0 Parametric Equalizer is not working yet. I will update later

Hiện chỉ chạy với Pi 5.


Nếu điều khiển play Pi bằng máy tính thì mở web http://lyriano.local/
Bằng phone có thể phải web bằng IP máy.
Hóng Bác update bản cho Pi4 :)
 

linh0983

Well-Known Member
Pi5 phát rất ngon . Chỉnh youtube cho mượt nữa là ngon lành bác Lâm ạ . ;)



SQ + Vsound : Chuyển qua lại tiện lợi ui . . . :eek:


Sq . :eek:

bbcode generator for signature

AoE . :mad:

bbcode generator for signature

NBHgyt09ghtt.jpg
 

quatmo

Well-Known Member
Vsound . :mad:

MJKJHUYT01.jpg


I2S . :cool:

MJKJHUYT02.jpg


Có vẻ Vsound tĩnh hơn và đỡ nóng hơn I2S bác Lâm ? :cool:
Dạ đúng phải vậy, xuất vsound nhẹ tải. Tuy nhiên không biết nguyên nhân gì nhiệt CPU máy anh cao (có thể do Data nhạc lớn...)


Pi 5 em play SQ nhạc trong USB Latency từ 8-15us, nhiệt độ loanh quanh 50 độ.
Play Youtube Cast thì cao, Latency 40us, nhiệt 65 độ.


----------------------

FE chỉ “đóng gói” PCM​

  • PCM từ SQ (hoặc MPD) renderer vào vsound → CPU copy vào netmap ring → NIC transmit frame: Netmap.
    FE (Front-End) chỉ đóng gói mẫu PCM từ ALSA vào frame Ethernet qua vsoundnetmap, không phải xử lý I²S bit-banging.

  • CPU FE không phải điều khiển clock/word-select của I²S, giảm tải real-time scheduling so với local I²S (Xuất trực tiếp tại chỗ ra DAC )

BE dùng DMA cho I²S​

  • snd_aoe nhận frame → atomically write vào DMA descriptor → phần cứng DMA filler “đẩy” mẫu PCM ra bus I²S theo clock.
  • BE (Back-End) dùng kernel patch snd_aoe để “bóc” header Ethernet, lấy payload PCM và nạp vào DMA ring buffer của driver I²S, sau đó phần cứng DMA tự đẩy dữ liệu ra bus I²S


DMA là viết tắt của Direct Memory Access, tức “Truy cập bộ nhớ trực tiếp”. DMA cho phép các thiết bị ngoại vi (như ổ đĩa, card âm thanh, hoặc I²S controller) trao đổi dữ liệu trực tiếp với RAM mà không cần CPU phải can thiệp vào từng byte, giúp giảm tải CPU và tăng tốc độ truyền dữ liệu

Jitter trong hệ thống real-time audio chính là độ dao động (variation) của interrupt latency – thời gian từ khi thiết bị yêu cầu ngắt đến khi trình xử lý ngắt (ISR) bắt đầu chạy. Khi CPU bận chạy nhiều tiến trình hoặc xử lý ngắt khác, interrupt latency bị kéo dài không đồng đều, tạo ra jitter. AoE của Symphonic-MPD hướng tới giảm thiểu jitter này bằng cách cô lập và ưu tiên rõ ràng đường data audio (DMA/I²S) trên BE và bypass toàn bộ stack mạng trên FE để đảm bảo interrupt latency ổn định ở mức micro-giây.
Jitter do CPU bận chạy nhiều task sẽ làm interrupt latency dao động, ảnh hưởng trực tiếp đến chất lượng playback audio real-time. AoE Symphonic-MPD giảm jitter này bằng cách:

  • Bypass network stack với netmap
  • Tách biệt FE/BE
  • Tối ưu interrupt và process scheduling với RT-kernel và công cụ rtirq/rtapp
  • Isolate CPU cores

Nhờ vậy, hệ thống đạt interrupt latency rất thấp và ổn định, đảm bảo DMA/I²S buffer luôn được refill đúng lúc, tránh underrun và xrun.

Tóm lại CPU trên FE không phải xử lý từng byte dữ liệu. Mục tiêu AoE FE/BE là để giảm nhiễu jitter do CPU làm việc nhiều gây ra.
 
Chỉnh sửa lần cuối:

quatmo

Well-Known Member
Chỉnh sửa lần cuối:
Bên trên