#1 09.05.2021 13:15:39

avallac_h
Користувач
Місце: Дніпро, Україна
Реєстрація: 08.05.2021
К-ть повідомлень: 1

Порада для всіх поціновувачів якісного звучання (snd-hrtimer.ko)

Пропоную шановному панству провести маленьку лабораторну роботу. По результатам можна значно підвищити якість звучання у вашому ArchLinux і не тільки. Ефект особливо помітно при використанні вбудованого аудіо, але власники карт на кшталт ASUS Xonar, я сподіваюсь, теж не будуть розчаровані. Звучання все одно повинно стати більш чітким і детальним.

Взагалі, все подальше -- це лишень найперший етап правильного налаштування JACK, але саме це, як на мене, приносить найбільшу користь. Все останнє лише впливає на затримки (latency) і чутливісь, що, звичайно, корисно при багатоканальному запису звуку, але це не наш випадок.

Спочатку перевіримо які таймери використовує ALSA у вашій системі:

$ cat /proc/asound/timers
G0: system timer : 10000.000us (10000000 ticks)
P0-0-0: PCM playback 0-0-0 : SLAVE
  Client application 794 : running
P0-0-1: PCM capture 0-0-1 : SLAVE
  Client application 795 : running
...

Як бачимо, для виводу звуку використовується системний таймер, що "цокає" раз на 10мс (0,01с). В ідеальному випадку, для звуку CD-якості треба видавати дані на ЦАП раз на 20нс (1/44100=0,00002c). Зрозуміло, що час між цоканням таймера програмно ділиться в ALSA на проміжки в залежності від частоти процесора та накладних витрат. Якщо дуже спрощувати, то коли проміжок часу вичерпується, на ЦАП видається середнє значення, що набігло за цей час. Тобто зменшуючи довжину цього проміжку часу, ми отримаємо більш точне звучання.

▶️ Зараз саме час відкрити програвач і прослухати свою улюблену композицію.

Тепер завантажимо ядерний модуль високоточного таймера звуку (snd-hrtimer.ko):

$ sudo modprobe snd_hrtimer

Перевіряємо:

$ cat /proc/asound/timers
G0: system timer : 10000.000us (10000000 ticks)
G3: HR timer : 0.001us (1000000000 ticks)
P0-0-0: PCM playback 0-0-0 : SLAVE
  Client application 794 : running
P0-0-1: PCM capture 0-0-1 : SLAVE
  Client application 795 : running
...

1нс виглядає набагато краще, ніж 10мс, чи не так?

Тепер, на всяк випадок, перезавантажимо PulseAudio:

$ pulseaudio -k

або

$ systemctl --user restart pulseaudio

▶️ ..і прослухаємо улюблену композицію знов. Ну що, як враження?

Якщо сподобалось, то саме час зробити ці зміни постійними:

$ echo snd_hrtimer | sudo tee /etc/modules-load.d/snd_hrtimer.conf

----
Трохи технічного бекграуду є тут: https://www.programmersought.com/article/39813485907/

Відредаговано avallac_h (09.05.2021 16:20:42)

Поза форумом

#2 16.05.2021 01:52:15

knedlyk
Administrator
Реєстрація: 17.03.2021
К-ть повідомлень: 4

Re: Порада для всіх поціновувачів якісного звучання (snd-hrtimer.ko)

Цікаво, звучання дійсно стало кращим. Дякую за пораду.

Поза форумом

Низ форуму