LINUX.ORG.RU

История изменений

Исправление curufinwe, (текущая версия) :

Частота дискретизации должна быть выставлена именно такая, какая у исходника. Это в идеале. Смена частоты дискретизации - ресемплинг - это погань по определению, неизбежное зло, возникающее только при необходимости вывода одновременно звука из нескольких источников с разной частотой дискретизации.

Например, включаешь плеер с музыкой 44100 Гц и одновременно видео со звуком 48000Гц. Оба потока нужно свести к одному знаменателю, поэтому делается ресемплинг.\

Но если надо просто с максимальным качеством выводить музыку - то карта должна работать с той частотой, с которой у тебя эта музыка. Это если на пальцах. А на самом деле, карта работает совсем по другому и с другой частотой всегда, там внутри нехилое преобразование идет в 1-бит формат.

Теперь по сабжу. С какими параметрами работает карта - зависит от используемой звуковой системы. Это либо alsa, либо pulseaudio.

Начнем с alsa. Звук по умолчанию выводится через микшер - dmix. Это программный смешиватель звука от всех одновременно работающих приложений. И естественно, он делает ресемплинг в 48000 Гц по умолчанию. Это не то что нужно. Если в плеере, например deadbeef, выбрать вывод не через устройство по умолчанию (которое dmix), а непосредственно в карту - hw 0.0, то звук будет выводиться как есть, без преобразований и порчи. Также в deadbeef есть опция - выводить все как 24-бит, которую желательно включить. Но при этом когда играет музыка, не будет выводиться другой звук.

Если все же не обходить микшер, его можно перенастроить на более высокую частоту дискретизации, например 96000 Гц. Подробнее тут, https://wiki.archlinux.org/index.php/Advanced_Linux_Sound_Architecture подходит для любого дистрибутива.

Если у тебя pulseaudio, то все определяется настройками его. У него микшер не отключается, но есть замечательная фича - менять частоту дискретизации микшера в зависимости от того, с какой идет звук. Для этого надо настроить нужным образом конфиги.

default-sample-format = s32le
 default-sample-rate = 44100
 alternate-sample-rate = 48000

Вот этот кусок, прописанный в /etc/pulse/daemon.conf делает вот что, например. Устанавливает весь вывод в 32 бита, то есть карта будет с такой разрядностью получать любой звук, и две частоты дискретизации - 44100 и 48000. В зависимости от того, какого формата файл или поток играет, автоматически выберется частота. Если она еще другая, будет ресемплинг.

Ну и всегда можно настроить вывод плеера на «железное» устройство alsa, даже если запущен pulseaudio. Тогда звук пойдет в обход него.

Исходная версия curufinwe, :

Частота дискретизации должна быть выставлена именно такая, какая у исходника. Это в идеале. Смена частоты дискретизации - ресемплинг - это погань по определению, неизбежное зло, возникающее только при необходимости вывода одновременно звука из нескольких источников с разной частотой дискретизации.

Например, включаешь плеер с музыкой 44100 Гц и одновременно видео со звуком 48000Гц. Оба потока нужно свести к одному знаменателю, поэтому делается ресемплинг.\

Но если надо просто с максимальным качеством выводить музыку - то карта должна работать с той частотой, с которой у тебя эта музыка. Это если на пальцах. А на самом деле, карта работает совсем по другому и с другой частотой всегда, там внутри нехилое преобразование идет в 1-бит формат.

Теперь по сабжу. С какими параметрами работает карта - зависит от используемой звуковой системы. Это либо alsa, либо pulseaudio.

Начнем с alsa. Звук по умолчанию выводится через микшер - dmix. Это программный смешиватель звука от всех одновременно работающих приложений. И естественно, он делает ресемплинг в 48000 Гц по умолчанию. Это не то что нужно. Если в плеере, например deadbeef, выбрать вывод не через устройство по умолчанию (которое dmix), а непосредственно в карту - hw 0.0, то звук будет выводиться как есть, без преобразований и порчи. Также в deadbeef есть опция - выводить все как 24-бит, которую желательно включить. Но при этом когда играет музыка, не будет выводиться другой звук.

Если все же не обходить микшер, его можно перенастроить на более высокую частоту дискретизации, например 96000 Гц. Подробнее тут, https://wiki.archlinux.org/index.php/Advanced_Linux_Sound_Architecture#Config... подходит для любого дистрибутива.

Если у тебя pulseaudio, то все определяется настройками его. У него микшер не отключается, но есть замечательная фича - менять частоту дискретизации микшера в зависимости от того, с какой идет звук. Для этого надо настроить нужным образом конфиги.

default-sample-format = s32le
 default-sample-rate = 44100
 alternate-sample-rate = 48000

Вот этот кусок, прописанный в /etc/pulse/daemon.conf делает вот что, например. Устанавливает весь вывод в 32 бита, то есть карта будет с такой разрядностью получать любой звук, и две частоты дискретизации - 44100 и 48000. В зависимости от того, какого формата файл или поток играет, автоматически выберется частота. Если она еще другая, будет ресемплинг.

Ну и всегда можно настроить вывод плеера на «железное» устройство alsa, даже если запущен pulseaudio. Тогда звук пойдет в обход него.