![Изменить частоту дискретизации в ALSA](https://rvso.com/image/31650/%D0%98%D0%B7%D0%BC%D0%B5%D0%BD%D0%B8%D1%82%D1%8C%20%D1%87%D0%B0%D1%81%D1%82%D0%BE%D1%82%D1%83%20%D0%B4%D0%B8%D1%81%D0%BA%D1%80%D0%B5%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8%20%D0%B2%20ALSA.png)
Я компьютерный аудиофил, я использовал Windows (с ASIO4ALL) и OSX для аудио. Теперь я делаю Ubuntu 13 своим HTPC/стерео аудио. Для начала я отключил Pulse audio и использую GooMusicplayer с ALSA.
Мой ЦАП поддерживает 24 бит 96 кГц. Я не могу найти конфигурацию для ALSA, чтобы задать частоту дискретизации выходного сигнала. Как мне ее настроить?
решение1
Alsa по умолчанию использует ту же частоту дискретизации и формат, что и источник. Однако частоту дискретизации можно принудительно увеличить (или уменьшить).
Вот один из способов, как это можно сделать. (в/etc/asound.confили~/.asoundrc)
pcm.device{
format S24_LE
rate 96000
type hw
card 0
device 0
}
Затем просто сделайте этот PCM подчиненным для другого, например, вашего PCM по умолчанию (стерео) (предупреждение: 24-битный формат не будет работать, если у вас нет совместимой карты; я обычно использую S32_LE, который работает на большинстве карт).
pcm.!default{
type plug
slave.pcm "device"
}
Однако вышесказанное будет работать только для стереоисточников (поэтому, если вы воспроизводите звук с источника 5.1, который по умолчанию использует Surround51 PCM, все становится немного сложнее)
Единственный известный мне способ (и используемый лично) принудительного увеличения частоты дискретизации нестереофонических источников — это взятие частей изэтот asound.conf/asoundrc(ссылка не работает) и изменение их. (Примечание: я не сам писал этот файл)
(Вы можете найти мойasound.confв этом вопросе и просто скопируйте его напрямую, вместо того, чтобы тратить время на ручное изменение его ниже)
Сначала скопируйте PCM-файл «dmixed» и измените его аппаратную часть, указав нужную частоту дискретизации и формат.
Затем скопируйте !default, surround40 и surround51 pcms из него как есть. Это эффективно смешает все выходные данные и преобразует частоту дискретизации всех источников 2.0, 4.0 и 5.1 в частоту дискретизации, установленную в dmixed pcm.
В этом файле конфигурации вы также можете найти "upmix20_51" pcm интересным, поскольку это эффективный способ апмикса источников 2.0 до 5.1 путем выборочного дублирования звуков на другие каналы. Если вы хотите использовать его, вам придется изменить его тип с "plug" на "route", а затем установить его как подчиненный для pcm по умолчанию.
pcm.!default{
type plug
slave.pcm "upmix20_51"
}
Так как «surround51», который использует этот PCM, использует «dmixed» в качестве ведомого устройства, принудительная частота дискретизации будет применяться и к этому PCM.
К сожалению, с текущим положением дел моно источники будут выходить только из левого динамика, но это вряд ли проблема, так как моно источники звука редки у этих пап. Пример, который я только что привел, будет как раз таким, как у меня есть мой собственныйasound.confнастроено, наслаждайтесь, если у вас акустическая система 5.1 и вы хотите принудительно установить частоту дискретизации 96 кГц.
Теоретически я думаю, что принудительное увеличение частоты дискретизации ничего вам не даст (поскольку абсурдно думать, что это улучшит качество звука из источника, имеющего более низкую частоту дискретизации), поэтому вам будет гораздо лучше настроить приложение на использование выходного сигнала 96 кГц.
Но у меня были некоторые проблемы с потрескиванием звука (в определенных играх, например, Xcom: Enemy Unknown), если я не форсировал частоту 96 кГц или 44,1 кГц. Поскольку я вообще ничего не теряю от форсирования 96 кГц (это не увеличивает и не уменьшает качество источников 44,1/48 кГц), это было идеальным решением.
решение2
Частота дискретизации устройства по умолчанию соответствует настройке приложения, т. е. частоте дискретизации исходного файла.
решение3
Остальные ответы отчасти верны.
Большинство звуковых карт по умолчанию не имеют многоканальности. Если у вас есть одна из тех карт, в которой есть многоканальный микшер, вам, вероятно, не нужно читать это. ALSA микширует несколько звуков программно.
Вообще говоря, возможны 2 варианта:
Обойти все выходные сигналы программного обеспечения для микширования и наслаждаться более широким диапазоном звука (например, более высокая частота дискретизации и битрейт, передача на 6 или более динамиков).
Со звуковой картой может работать только одна программа!
Включите программное микширование, и вы потеряете немного качества, чего, скорее всего, и не заметите. (Протестировал Asus Xonair DX с Sennheiser HD598, не заметил никакой разницы, использовал 6-канальные flac с частотой дискретизации 96 кГц и 2-канальные 192 кГц).
Так может работать больше одной программы! Я не аудиофил, заметьте, по крайней мере пока.
Вторая опция включена по умолчанию, если ваше оборудование не поддерживает микширование нескольких потоков одновременно.
ПРИМЕЧАНИЕ:Есть еще и третий вариант. ALSA можно настроить с повторной выборкой в программном обеспечении, но по моему опыту, хотя и можно настроить все приложения на повторную выборку с максимальной частотой дискретизации и битрейтом, это приводит к заметной задержке в играх FPS, что НЕ ОК для геймера (примерно треть секунды, когда я стрелял из пистолета, что меня дико раздражало).
Имейте в виду, что третий вариант, вероятно, нецелесообразен по нескольким причинам:
- Я не тестировал его как следует, но предполагаю, что в некоторых приложениях могут возникнуть проблемы.
- Большинство аудиоколлекций имеют частоту дискретизации 44,1/44 кГц с битрейтом 16, если только вы не используете много FLAC, но даже в этом случае FLAC должен иметь более высокую частоту дискретизации.
- Повышение частоты дискретизации НЕ обеспечивает лучшего качества звука (теоретически обеспечивает, но если вы используете дешевые наушники - вы этого не заметите, я уверен на 99%).
- Задержки в играх вполне реальны, если только я не сделал что-то неправильно в своем
.asoundrc
файле.
Чтобы все запутать еще больше, это может стать еще хуже в хорошем смысле. Вы можете создавать "устройства" с разными настройками (каналы/частота/частота дискретизации/физическая конфигурация вывода и ввода). И некоторые приложения могут использовать устройства, которые вы создаете вручную, некоторые нет. Это меня чертовски раздражает.
Самый известный и проблемный: Flash Player.
Этот ответ верен для тех, кто не использует наушники, подключенные через USB. У них есть собственные встроенные звуковые карты, и у меня мало знаний об этом, возможно, это более верно для тех, у кого есть встроенные звуковые карты на материнской плате. Может быть, это все еще применимо к USB-гарнитурам, но воспринимайте все это с долей скепсиса. Я предполагаю, что, вероятно, около 10% всех произведенных звуковых карт в любом случае будут использовать аппаратное микширование, поскольку аппаратное обеспечение будет лишено этого в качестве опции. Оптический выход является одним большим исключением. AFAIK, оптический выход не нуждается в микшере. Демультиплексирование происходит в «приемнике», где это делается аппаратно. Не верьте мне на слово.
решение4
Спасибо за информацию выше @Cestarian. Это должно помочь мне заставить usb semi-pro audio interface перейти на частоту дискретизации, стандартизированную для моей записи (96K). Я нахожу это очень проницательным в настройке этой машины для студии.
Чтобы помочь вам, раз уж вы помогли мне, я отвечу на следующие вопросы:
«Теоретически я думаю, что принудительное увеличение частоты дискретизации ничего вам не даст (поскольку абсурдно думать, что это улучшит качество звука из источника, имеющего более низкую частоту дискретизации), поэтому вам будет гораздо лучше настроить приложение на использование выходного сигнала 96 кГц.
Но у меня были некоторые проблемы с потрескиванием звука (в определенных играх, например, Xcom: Enemy Unknown), если я не форсировал частоту 96 кГц или 44,1 кГц. Учитывая, что я вообще ничего не теряю от форсирования 96 кГц (это не увеличивает и не уменьшает качество источников 44,1/48 кГц), это было идеальным решением."
Есть одно приложение, в котором вы берете цифровой сигнал и преобразуете его в множитель выше исходного: Цифровое снижение джиттера. Было бы интересно узнать точность компьютера по сравнению с внешним преобразователем частоты дискретизации, используемым в студиях мастеринга для этой цели.
во втором: я представляю, что должен быть кадр обработки, который должен произойти, когда частота дискретизации не определена. Логично, что он должен был бы распознавать входящие данные с жесткого диска, а затем форматировать их (если они неверны) в поток данных, а не просто выводить в поток данных. Звук использует обработку в реальном времени, а не процессор. Но поскольку вы также увеличиваете частоту дискретизации, вы могли бы исправить дрожание частоты дискретизации источников в звуковом файле игры.