Наши партнеры

UnixForum






Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Ошибка базы данных: Table 'a111530_forumnew.rlf1_users' doesn't exist
На главную -> MyLDP -> Тематический каталог -> Настройка системы

Лучшие методы управления звуком в Linux с использованием ALSA, часть 2

Тестирование звуковых каналов

Оригинал: Better Linux Sound Managment With ALSA, Part 2. Testing Sound Channels
Автор: Carla Schroder (Карла Шредер)
Дата: Среда, 6 марта 2008
Перевод: Алексей Коваленко
Дата перевода: 29 июня 2009

На прошлой неделе мы изучили, как настроить звуковые карты для воспроизведения с использованием ALSA. Это легко, это работает на всех системах Linux, не создает конфликтов, не вносит задержек и не требует использования системы X Window. Сегодня мы приступим к изучению использования ALSA для записи, и расскажем как протестировать нашу звуковую систему.

Быстрый и не очень хороший путь увидеть, что звук работает — это направить содержимое файла в dev/dsp:

$ cat  /dev/urandom > /dev/dsp

Более правильный способ — использование набора alsa-utils, который включает некоторое количество полезных команд для тестирования вашей установки. Команда speaker-test тестирует каналы динамиков. Вот пример команды для простой стерео-установки с двумя динамиками:

$ speaker-test -t wav -D plug:front -c2 -l2 

speaker-test 1.0.14

Playback device is plug:front
Stream parameters are 48000Hz, S16_LE, 2 channels
WAV file(s)
Rate set to 48000Hz (requested 48000Hz)
Buffer size range from 16 to 16384
Period size range from 8 to 8192
Using max buffer size 16384
Periods = 4
was set period_size = 4096
was set buffer_size = 16384
 0 - Front Left
 1 - Front Right
Time per period = 2.731660
 0 - Front Left
 1 - Front Right
Time per period = 2.986495

В ходе тестирования вы должны слышать приятный женский голос, говорящий «Front left, front right». В данном примере -c2 означает два канала, а -l2 означает запуск теста два раза.

В большинстве случаев, даже на встроенных звуковых микросхемах реализована звуковая схема 5:1 «звук вокруг». Вы можете протестировать ее с помощью той же команды speaker-test:
$ speaker-test -t wav -D plug:surround51 -c6 -l2
Обратите внимание на то, как нумеруются различные каналы. Для тестирования единственного динамика выберите его опцией -s. Следующий пример команды, генерирующей синусоидальную волну с тоном частотой 45 Гц, звук которой подобен мощному гудению на низкочастотном (LFE) канале:
$ speaker-test -t sine -f 45 -D plug:surround51 -c6 -s6 

Будьте внимательны с нумерацией каналов — номера динамиков выводимые командой speaker-test начинаются с нуля, в то время как номер опции -s начинается с единицы. Система требует точности!

LFE (Low Frequency Effects) означает низкочастотные эффекты, которые обычно подразумевают работу вашего сабвуфера. Естественно, они более сложные, чем те, что описывались выше (для более подробной информации смотрите «Что такое LFE канал?»).

«Раскопки» в звуковых картах

Как вы можете узнать какой тип вывода поддерживает ваша звуковая карта? Команда aplay вам поможет:

Прим.переводчика: перевод сообщений на русский язык в выводе команды вы, естественно, не увидите.
Из вывода данной команды вы можете определить все имеющиеся в системе PCM устройства; например, front, surround40, surround41 и так далее - все это те PCM устройства, которые были созданы автоматически, при первом запуске системы. Вы можете протестировать их командой aplay следующим образом:
$ aplay -D front test.wav
Playing WAVE 'test.wav' : Signed 16 bit Little Endian,
 Rate 44100 Hz, Stereo
Вы можете также протестировать воспроизведение путем использования номеров «карта+устройство». Это некий тип «сырого» тестирования, поскольку он не зависит от корректности конфигурации PCM устройств, используя взамен идентификаторы (ID) карт, назначенные ядром. Aplay -l показывает «сырые» номера «карта+устройство». 0,0 — это первое устройство, 1,0 — второе устройство и так далее:
$ aplay -D hw:1,0 test.wav
Если вы имеете второе звуковое устройство, например USB-гарнитуру, вы можете сконфигурировать имена PCM устройств как глобально в файле /etc/asound.conf, так и для отдельных пользователей в файле ~.asoundrc. Просто, но эффективно:
pcm.v8237 {type hw card V8237}
ctl.v8237 {type hw card V8237}
pcm.headset {type hw card Headset}
ctl.headset {type hw card Headset}
Для pcm.v8237 часть pcm является обязательной. При этом v8237 может быть тем, что вы хотите и то же самое относится к ctl строкам. type hw card — необходимая часть. V8237 и Headset взяты из вывода команды aplay -l. В этих же целях вы можете использовать команду asoundconf:
$ asoundconf list
Names of available sound cards:
V8237
Headset

Теперь, вместо aplay -D hw:1,0 test.wav можно использовать aplay -D headset test.wav. То есть, происходит замена идентификаторов ядра (0,0- 1,0) именами (V8237, Headset) , поскольку идентификаторы ядра могут меняться, и особенно это касается udev устройств.

Запись с использованием ALSA

arecord — это записывающая утилита включенная в ALSA. Это не мощный микширующий рекордер, переполненный функциями, а простая утилита для выполнения аудиозаписи в формате WAV. Вы можете точно указать частоту выборки, интервалы прерываний, размер буфера, формат выборки и всевозможные детальные установки. Что касается меня, то я приклеиваю ярлыки: опция -f cd записывает звук в CD формате, опция -f dat в формате цифрового аудио. Это очень здорово и удобно для написания сценариев, а также хороший и быстрый тест результатов записи и воспроизведения:
$ arecord -vv  -D headset -f cd  test.wav
$ aplay -vv -D v8237 test.wav

Для того, чтобы остановить выполнение команды, нажмите Ctrl+C.

Напоследок, несколько полезных советов.

Чтобы узнать версию ALSA, запустите cat /proc/asound/version.

Вышеприведенные примеры относятся к интегрированной в мою низкобюджетную материнскую плату ESC звуковой подсистеме. Она поддерживает цифровой выход (S/PDIF = Цифровой интерфейс Sony-Philips) в дополнение к аналоговому. Тем не менее, я не могу его использовать — на материнской плате нет разъемов.

Будьте внимательны при покупке звуковых карт, поскольку часто можно встретить заявления такого рода: «24-битный цифровой звук!». Все компьютерные звуковые карты поддерживают цифровой звук, это их основная работа — преобразовывать цифровые аудио-файлы для аналоговых динамиков. Но если вы действительно желаете приобрести звуковую карту с цифровым выходом для цифровых динамиков — внимательно прочитайте спецификацию, чтобы быть уверенным, что получаете 100% цифровое качество на самом деле.

Источники

Карла Шредер — автор книг «Linux. Сборник рецептов» и недавно изданной «Сборник сетевых рецептов», а так же постоянный автор статей на LinuxPlanet.



Комментарии