Хорошо, краткий обзор, как все работает.
Ваша звуковая карта Intel HDA имеет цифровое соединение с микросхемой «кодека», которая содержит ЦАП и АЦП, аналоговые микшеры, аналоговые усилители и аналоговые коммутаторы. ALSA имеет драйверы ядра для звуковых карт и назначает элементы микшера, которые вы можете видеть, amixer
чтобы контролировать некоторые (но не все) вещи в кодеке.
Вы можете настроить ALSA с помощью «плагинов» для всей системы /etc/asound.conf
или для отдельных пользователей ~/.asoundrc
.
Pulseaudio работает поверх ALSA и представляет единый механизм передачи аудио для приложений. Он заботится о преобразовании частоты дискретизации и т. Д., Что делает Pulseaudio гораздо более приятным в использовании (в принципе), чем ALSA. Стандартная конфигурация состоит в том, что Pulseaudio представляет уровень совместимости с устаревшими приложениями ALSA с такими записями, как
pcm.!default pulse ctl.!default pulse
Они устанавливают вход и выход ALSA по умолчанию таким образом, что приложения ALSA обрабатываются как приложения Pulseaudio. Поэтому, когда вы используете arecord
или audacity
(кроме приложений ALSA) со входом ALSA по умолчанию, вы действительно используете Pulseaudio (вы также можете использовать parecord
для прямого доступа к Pulseaudio). Но когда вы выбираете hw:XXX
, вы записываете прямо из драйверов ALSA.
Pulseaudio имеет свою (очень гибкую) концепцию аудиоисточников и приемников. Вы можете видеть (и изменять), какие приложения подключены, какие источники и приемники используют pavucontrol
(и во многих средах рабочего стола, и на аналогичной панели рабочего стола).
Поэтому, если вы запускаете arecord
и смотрите с помощью pavucontrol
, он должен отображаться и записываться с источника, принадлежащего звуковой карте Intel HDA (обычно «Встроенный аналоговый стереозвук»).
Почему он записывает звук, который воспроизводится одновременно? Можно было бы взглянуть на кодек более подробно (вы можете сделать это с помощью cat /proc/asound/card*/codec\#*
), но в вашем amixer
выводе есть элемент управления микшером, называемый «Loopback смешиванием», и он включен. Поэтому я думаю, что ваш кодек содержит функцию, которая позволяет записывать звук, который выводится в данный момент. Отключите его alsamixer
и посмотрите, не изменится ли что-нибудь.
Как настроить автоматическую запись с USB-микрофона Samson? Вы можете настроить значения по умолчанию в ALSA, но если вы хотите сохранить Pulseaudio, вам следует настроить Pulseaudio вместо этого. Вы можете выбрать источники звука для каждого приложения, pavucontrol
когда оно запущено, и Pulseaudio запомнит настройки. Вы также можете установить источник звука по умолчанию, щелкнув «Установить как запасной вариант» на вкладке « Вход », или использовать pacmd set-default-source my_source
из командной строки. pacmd list-sources | grep name:
даст вам список доступных источников. Отбросьте угловые скобки, когда используете имя источника в командной строке.
редактировать
Каждый приемник Pulseaudio имеет связанный .monitor
источник. Так вот, по какой-то причине Pulseaudio не может получить какой-либо вход ALSA, поэтому он не может создавать соответствующие источники, поэтому единственный источник, который остается, - это .monitor
источник, который выводит звук, воспроизводимый в данный момент. Таким образом, в кодеке нет внутреннего цикла (хотя это может быть другим способом записи воспроизводимого в данный момент звука).
Это означает, что вы должны отладить, почему Pulseaudio не может создавать источники, соответствующие входам ALSA, хотя он создает dmix
приемник, чего не следует, - это должен быть аппаратный приемник.
Просьба представить /etc/asound.conf
и в ~/.asoundrc
качестве первого шага. Перед запуском Pulseaudio уже запущены программы, которые используют ALSA напрямую и не позволяют Pulseaudio использовать аппаратные входы / выходы?