LINUX.ORG.RU
ФорумTalks

Частота дискретизации в ALSA по умолчанию в Debian

 ,


0

1

Тут у меня случился диспут по поводу качества звука моего лаптопа. Пришлось перебрать по винтикам жизненный путь звука на нём. И вот что нашёл.

PulseAudio у меня выпилен, чистая ALSA, Audacious и т.д. Оказалось, что ALSA по умолчанию настроена так, что включен dmix (т.е. могут звучать несколько программ сразу), а частота дискретизации выставлена 48000. Это значит, что если кто-то хочет использовать устройство «default» и частоту не 48000, то ему придется делать передискретизацию. ALSA по умолчанию использует быстрый алгоритм из libsamplerate, имеющий полосу пропускания... всего 80%! Т.е. если у меня почти вся музыка в 44100, то реально на выходе будут только частоты до 18 кГц вместо примерно 21 кГц, не говоря уже о других артефактах и загрузке процессора. Этот режим хорош только для тех, у кого убоищная встроенная звуковуха может только 48000, а процессор тоже старый и слабый.

Есть как минимум три решения этой проблемы:

1) Использовать более качественный алгоритм, например, samplerate_medium или samplerate_best. Первый у меня жрет около трети ядра процессора Intel N3520. Второй - практически более 90%. Так что годится только для мощных процессоров. Делается просто - в ~/.asoundrc пишется:

#defaults.pcm.rate_converter "samplerate_best"
defaults.pcm.rate_converter "samplerate_medium"
#defaults.pcm.rate_converter "samplerate_linear"
#defaults.pcm.rate_converter "samplerate_order"

2) Использовать для музыки устройство не по умолчанию, например, «front», или как оно у вас в списке покажется в настойках Audacious или чем вы там слушаете музыку. Физически будет работать тот же DAC и тот же выход звука, но в обход передискретизации и dmix. При этом другие программы играть звук уже не смогут, устройство будет занято монопольно. Главное, чтобы реально звуковая карточка поддерживала хотя бы самые популярные 44100 и 48000. Некоторые карточки могут только 48000, для них способ не имеет смысла. И да, при этом способе - минимальный расход времени CPU и мощности.

3) Компромиссный вариант - просто поменять частоту дискретизации dmix с 48000 на 44100. Пишем в ~/.asounrdrc:

defaults.pcm.dmix.rate 44100

Я так и сделал. Теперь 99% всей музыки играется без передискретизации, оставшийся 1% приводится к скорости 44100 алгоритмом с полосой пропускания 90%:

defaults.pcm.rate_converter "samplerate_medium"
defaults.pcm.dmix.rate 44100

При этом сохраняется возможность играть звук из нескольких программ.

Deleted

Последнее исправление: Deleted (всего исправлений: 1)

Такой сочный привет из 2009-го, обалдеть просто. Правда, по канону нужно ещё посоветовать отключить dmix в принципе.

dogbert ★★★★★
()

диспут по поводу качества звука моего лаптопа

лаптопов с нормальным аудиотрактом еще не изобрели.

tcler
()

Мы рады за вас, доктор зло, с разморозкой.

spider_russia
()

4) Для всего юзать пульсу/dmix с передискредитацией в 44100 (и желательно с хорошим методом ресемплинга, конечно), а в музыкальном плеере указывать монопольный прямой захват. Так вся музыка будет в 100% качестве, без передискредитаций, и не появится внезапно откуда-то сторонний звук во время прослушиваний, ибо нефиг. Ну а когда музыкальный плеер не работает, то все отовсюду слышно.

Andrew ★★★
()
Последнее исправление: Andrew (всего исправлений: 2)
Ответ на: комментарий от tcler

лаптопов с нормальным аудиотрактом еще не изобрели.

Из того что сам пробовал - две модели из серии ROG, нот качает звук так, что «посаны на малиновых зубилах семками давятся».

ioway
()
Ответ на: комментарий от spider_russia

При этом сохраняется возможность играть звук из нескольких программ. Это пять...

Вы знаете какой-то простой и совершенно автоматический способ решения этой проблемы?

Deleted
()
Ответ на: комментарий от dogbert

Такой сочный привет из 2009-го, обалдеть просто.

Я бы даже сказал, из 2005-го. Что поделать, дефолтные настройки должны годиться всем, пусть и не идеально.

Правда, по канону нужно ещё посоветовать отключить dmix в принципе.

Насколько я вижу, там идет работа с 16-битовыми значениями. Так что любителям 24-битового звука действительно следует отключать или обходить dmix :)

Deleted
()
Ответ на: комментарий от tcler

лаптопов с нормальным аудиотрактом еще не изобрели.

Да, но лаптоп моего оппонента звучит явно лучше, несмотря на почтенный возраст и Windows XP. А у меня пока явное ограничение - ALC282. Я не нашел спецификацию конкретно на него, но все остальная линейка не имеет в описании каких-нибудь подробных описаний самого DAC. Ожидать там нечего, это понятно. Придется приобрести что-то на основе PCM2706.

Deleted
()

Что-то в треде пустовато. А где же все аналитики, в каждой теме про пульс кукарекающие про выдаваемый им «плохой звук»? Что притихли-то?

Axon ★★★★★
()
Последнее исправление: Axon (всего исправлений: 1)
Ответ на: комментарий от Axon

где же все аналитики

Уже всё проанализированно и упразднено

выдаваемый им «плохой звук»

Щелчки и пердёжь нельзя назвать достойным звуком.

trueshell ★★★★★
()
Ответ на: комментарий от trueshell

Уже всё проанализированно и упразднено

До пульсаудио я со своим анализом еще не добрался. По документации выглядит, что он делает примерно то же самое - приводит все к одной частоте дискретизации.

А упразднил я его лишь по одной причине - идиотская регулировка громкости.

Щелчки и пердёжь нельзя назвать достойным звуком.

Не выставлен приоритет реального времени?

Deleted
()
Ответ на: комментарий от trueshell

Алса и без этого не щёлкает.

А во FreeBSD еще лучше. Там сведение и передискретизация делаются в ядре, настраиваются через sysctl.

Deleted
()
Ответ на: комментарий от Deleted

А упразднил я его лишь по одной причине - идиотская регулировка громкости.

flat-volumes = no
Axon ★★★★★
()
Ответ на: комментарий от Axon

Линейку прикладывали?

Всенепременно, логарифмическую же.

trueshell ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.