Linux pc with pulse audio 64bit version only

Настройка звука в Linux с Pulse

Звук в системе — вещь очень необходимая. Вы можете захотеть послушать музыку, посмотреть фильм, пообщаться с друзьями через голосовую связь или видеочат. Для всего этого вам нужно будет, чтобы система поддерживала работу со звуком. И не менее важно, чтобы звук воспроизводился хорошо.

В этой статье мы не будем рассматривать установку драйверов или выполнить настройку звука linux по умолчанию. Мы будем говорить о комфортном управлении звуком. О том, как заставить звуковую систему работать лучше, чтобы получаемый звук соответствовал вашим желаниям.

Как работает аудио в Linux

Если не вдаваться в подробности, то вот небольшая схема того, как будет работать звук в Linux:

Здесь есть источник и есть цель. Что-то создает звук, что-то должно его получить и обработать, а затем, наконец, воспроизвести. Для большинства повседневных задач мы используем обычные приложения, например, VLC для генерации звука и колонки или наушники для воспроизведения.

В обратном порядке то же самое. Устройство, например, микрофон, генерирует звук, а затем отправляет его приложению, например, Jitsi или Skype. Модель всегда работает похожим образом. Но между этими двумя точками существует звуковая подсистема Linux.

Если не углубляться в историю, для управления звуком linux использовалась Advanced Linux Sound Architecture (ALSA). Если быть точным, то она и сейчас используется. Но в современных дистрибутивах настройка звука в linux выполняется без непосредственной настройки ALSA пользователем. Вместо этого применяются инструменты более высокого уровня — PulseAudio.

Почему именно PulseAudio?

Почему Pulse так необходим? Это не так. ALSA работает настолько хорошо, что многие дистрибутивы только сейчас начинают интегрировать Pulse по умолчанию. Тем не менее работа с ALSA может потребовать многих часов ручной настройки.

И здесь мы не говорим о настройке по умолчанию. Дополнительная настройка звука alsa может привести к созданию запутанных конфигурационных файлов и скриптов, поэтому вам будет сложно создать единственную конфигурацию на все случаи жизни. Проблема не всегда в ALSA, иногда причиной стает само приложение, но это не меняет конечный результат.

Сейчас мы требуем от нашего компьютера намного больше чем раньше. Раньше аудиовыход подключался к наушникам или колонкам и все. Сейчас же часто необходимо подключать компьютер к пучковой аудиосистеме, телевизору и получать звук с микрофона по Bluetooth.

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

Настройка Pulse

Чтобы настроить воспроизведение звука с помощью Pulse вам понадобится выполнить три вещи:

  • Проверьте соединения, как физические, так и виртуальные;
  • Подключите звуковой выход или вход к источнику звука;
  • Управляйте целями с помощью Pulse Audio Control (pavucontrol).

Шаг 1. Проверьте оборудование

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

Признайте это. Вы хоть раз оставляли подключенными наушники, забывали ввести пароль к колонкам или пытались включить звук с выключенной громкостью. Вы тратили много времени на настройку звука linux, а проблема была совсем не там. Поэтому лучше сразу убедиться что физическая составляющая в порядке. Так дополнительная настройка PulseAudio будет проще.

Шаг 2. Проверьте ваше приложение

Точно так же проверьте настройки вашей программы. Не во всем программах есть много опций, но, например, в VLC можно настроить громкость воспроизведения и драйвер, с помощью которого будет воспроизводиться звук:

В приложении Google Hangouts настройки более упрощены:

Вам нужно убедиться, что приложение отправляет звук правильной подсистеме. Если сомневаетесь, лучше передать звук Pulse:

  • Отправьте звук Pulse и сможете управлять его воспроизведением динамически с помощью панели управления Pulse;
  • Если хотите получить ручной контроль — отправьте звук напрямую в ALSA. Это может понадобиться если вы используете такие профессиональные JACK или Patchage. Им нужно иметь полный контроль над маршрутизацией звука.

У Pulse есть плагин для ALSA поэтому даже если вы направите звук в ALSA, вы все равно сможете управлять им с помощью Pulse. Сигнал не будет перехвачен, так что об этом можно не беспокоиться.

Шаг 3. Настройка звука в pavucontrol

С помощью панели управления звуком PulseAudio или pavucontrol вы можете выполнять все необходимые действия. По умолчанию она находится в настройках Gnome, но может быть установлена отдельно. Для KDE утилита будет называться pavucontrol-qt.

Читайте также:  Advanced packaging tool linux

Вы можете использовать pavucontrol чтобы настроить громкость звука и маршрутизацию на вашем компьютере. Возможно, вы ею уже пользуетесь ежедневно, но не знаете что это настройка pulseaudio. Когда вы регулируете громкость в своем окружении рабочего стола, вы используете те же инструменты.

Панель управления состоит из пяти вкладок:

  • Конфигурация — настройка звуковых карт. Она не используется часто, один раз устанавливаете нужные значения и забываете;
  • Устройства ввода — доступные устройства ввода, что-то, что может генерировать звук, например, микрофон или веб-камера;
  • Устройства вывода — доступные устройства вывода, такие как колонки или наушники, а также USB гарнитуры;
  • Запись — активные сеансы записи, например, браузер ищет аудиовход для чата или программа для записи, например, Audacity.
  • Проигрывание — активный поток звука, которые воспроизводится в данный момент. Вы можете менять громкость для одного или для двух каналов по отдельности для каждого приложения.

Важно заметить, что панель динамическая, и она не будет отображать программ если они сейчас не играют или не записывают звук.

Шаг 4. Маршрутизация звука в Pulse

Вы можете выбрать на какое устройство будет передаваться ваш звук с помощью Pulse. Настройка звука Pulseaudio выполняется очень просто. Например, попробуйте что-то простое. Включите какую-либо музыку, затем перейдите на вкладку конфигурация.

Здесь обратите внимание, что для каждого устройства выбран профиль работы, например, у меня для встроенного аудио используется аналоговый сетреодуплекс. Если вы измените его на что-то другое музыка затихнет. Она продолжит воспроизводиться, но мы ее не будем слышать.

Вы можете видеть, что здесь, кроме аудиовыходов есть HDMI. После установки новой видеокарты, она может перехватить приоритет вывода у звуковой. Но вы уже знаете куда смотреть. В остальных же случаях параметры не изменятся пока вы их сами не измените.

Теперь давайте предпримем что-то более сложное, например, запишем воспроизводимый звук в файл. Откройте Audacity и в настройках выберите источник звука Pulse. Иногда может быть Default Line:0

Затем начните запись, вы увидите что пишите тишину:

Дальше вернитесь к панели управления Pulse, перейдите на вкладку Запись и выберите источник для Audacity вместо Встроенное аудиоMonitor Встроенное аудио, дальше вы увидите как началась запись:

Таким образом, вы можете перенаправлять звук для приложений. Многие проблемы со звуком возникают из-за того, что система использует не то аудиоустройство по умолчанию. Возможно, ваша USB камера не установлена как стандартный аудиовход. В таком случае вы просто не получите звука.

То же самое верно для аудио. Если вы смотрите фильм и не слышите звук, проверьте Pulse. Возможно, он отправляется на неактивное устройство или громкость отключена.

Выводы

На компьютерах всегда были проблемы со звуком. Звуковым устройствам нужны драйвера, операционной системе нужно обнаружить их и управлять, а пользователь должен понимать как работают элементы управления. Мы рассмотрели как выполняется настройка звука в Linux. И да, это 2017 и Linux может воспроизводить звук. И даже больше, он может управлять звуком. Надеюсь, эта информация была полезна для вас.

Источник

PulseAudio, часть 1: управление из командной строки


Одним из новшеств Ubuntu 10.10 стал переход с «голой» ALSA на PulseAudio. Ранее постилось много советов прибить и удалить его для решения проблем, однако теперь PulseAudio стабилен, с ним не шипят колонки ;), и он способен на такое, что не снилось Alsa 🙂

В статье я с самого начала расскажу что это такое и как оно работает, а так же:

  • Как переключить весь звук на USB-колонку на закрывая приложений (usb hotplug);
  • Как выбрать порт звуковой карты для вывода звука (колонки ноутбука/наушника, LineOut/Наушники);
  • Как выбрать профайл звуковой карты (маппинг физических портов: 5.1 или стерео+lineIn?);
  • Как управлять громкостью и усиливать тихий сигнал (!);
  • Как сделать Skype громче музыки?

И представлю своё решение, призванное упростить управление PulseAudio 😉

Кратко о PulseAudio

Обзор хорошо написан в нашей википедии. Приведу сводный список основных отличий от Alsa:

  • PulseAudio — «слой звуковой абстракции», принимающий звуковой поток от приложений и передающий его Alsa;
  • PulseAudio оперирует объектами и позволяет перенаправлять звуковой поток между ними (роутинг);
  • PulseAudio — демон, обычно запускаемый от имени пользователя;
  • Позволяет передавать звук по сети и «расшаривать» микрофоны, установленные на других компьютерах.
  • Теперь при отключении USB-колонки ни одна прога не подвиснет, а будет переброшена на другую доступную карту 🙂

GUI инструменты

Если Вы читаете эту статью чтобы решить пару нюансов и не вникать — могу порекомендовать попробовать GUI-tools, описанные на странице PulseAudio. С помощью pavucontrol можно будет быстро выбрать устройство записи «по умолчанию» (Input Devices, кнопка справа «Set as fallback») и Skype будет работать 🙂 Также pavucontrol позволяет управлять громкостью общей и отдельных приложений.

Основные понятия PulseAudio

Card, Sink & Source

Известно, что у звуковой карты два типа гнёзд: входы (line in, микрофон) и выходы (наушники, line out, S/PDIF). В типовой конфигурации для каждой имеющейся звуковой карты и её «гнёзд» PulseAudio создаёт следующие объекты:

  • Card. Объект представляет физическую звуковую карту со всеми её входами и выходами;
  • Sink (англ. низина) — «сток», принимающий звуковой поток. Представляет выход звуковой карты: линейный выход, наушники, колонки ноутбука;
  • Source (англ. источник) — источник звука, создающий звуковой поток. Представляет вход звуковой карты: линейный вход, микрофон.
Читайте также:  Ошибка 0xc8007000d windows 10

В PulseAudio задаётся «default Sink» и «default Source»: объекты, используемые по умолчанию для свежезапущенных приложений.
Замечу, что Sink не обязательно должен описывать физический порт звуковой карты: это абстракция приёмника потока звука. PulseAudio — штука высокоуровневая и позволяет создавать весьма «хитрые» объекты: например, Sink типа ‘NULL’ (реализуемый модулем PulseAudio module-null-sink) просто поглотит звук, а модуль module-pipe-sink позволит передавать звуковой поток через файл FIFO. Также можно создавать сетевые Sink’и, ведущие multicast-вещание или передающие звуковой поток определённому хосту. Всё это реализуется модулями PulseAudio.

Итак, звук проигрывается через «Sink», а записывается через «Source».

Sink-Input & Source-Output
  • Sink-Input. Когда приложение, поддерживающее PulseAudio, собирается проигрывать звук — оно направляет свой вывод в один из объявленных Sink’ов и становится «входом Sink’a»: Sink Input. Приложение может создавать несколько потоков вывода, создавая отдельные Sink-Input’ы для каждого потока.
  • Source-Output. Если же приложение собирается принимать звук из некоторого Source (звукозапись) — оно становится «выходом Source’а»: Source-Output.

Каждый Sink-Input по умолчанию связываться с одним из Sink’ов и передаёт звуковой поток. PulseAudio далее определяет с чем связан Sink (например, звуковая карта) и передаёт его по назначению.
Существует особый тип Source’а: Monitor. Для каждого Sink’а может быть создан отдельный монитор, позволяющий вести запись. Так, получается запись «звука из колонок».

Итак, медиаплеер создаёт Sink-Input, а Skype — и Sink-Input, и Source-Output.

module, client, sample

В рамках статьи — чисто информационные 🙂

  • Module. Загруженный модуль PulseAudio. Например, загрузка module-alsa-sink с заданием пераметров, указывающих на устройство Alsa — создаст Sink, связанный с этим устройством. Существуют и другие модули, создающие объекты PulseAudio, позволяющие управлять им, использовать FIFO для обмена звуковым потоком и многое другое;
  • Client. Приложение, подключившееся к PulseAudio. Может создавать потоки Sink-Input и Source-Output и управлять демоном PulseAudio.
  • Sample. Звуковой сэмпл, загруженный в PulseAudio для быстрого воспроизведения. Может использоваться для проигрывания стандартных звуков. Например, x11 bell. Могут проигрываться по команде от модуля, клиента или из консоли.

ALSA → PulseAudio

/.asoundrc вставляем следующие строки (Которые, кстати, вылечат микрофон Skype’а! если ещё отключить «Позволить скайп автоматически подстраивать громкость» — подсказывает aim):
pcm.pulse < type pulse >
ctl.pulse < type pulse >
pcm.!default < type pulse >
ctl.!default < type pulse >

Первые две строки создадут виртуальные устройства ALSA с именем ‘pulse’ для ввода и вывода, а также устройство контроля (громкости). Следующие две — определяют их как «по умолчанию»: теперь все приложения вместо Alsa будут использовать PulseAudio через специальный плагин (и ничего не подозревать).
Для применения измений нужно перезапустить звуковые приложения. Свежезапущенные приложения подхватят изменения сами.
UPD: yuretsz подсказывает, что приложения, использующие OSS ( /dev/dsp ), нужно запускать через враппер padsp [options] PROGRAM [ARGUMENTS . ] .

Управление PulseAudio: pactl

Управление PulseAudio осуществляется с помощью команды pactl, про которую нельзя сказать что она удобная и продвинутая 🙂 однако тренироваться будем с ней.

Осмотр владений

Для начала давайте посмотрим что у нас есть: какие объекты определены в PulseAudio. Рекомендую запустить фоновую музыку чтобы было на что смотреть 🙂
Команда pactl list покажет длинный список существующих объектов.
У каждого объекта есть набор описывающих его полей, а также специальное поле «Properties»: список key-value свойств (обычно строковых).
У всех объектов есть index (Sink #0) — уникальный номер объекта определённого типа. Также многие объекты имеют имена (Name: ): index и Name можно использовать для обращения к конкретному объекту.

Рекомендую присмотреться к полям объектов Sink и Source: по умолчанию они описывают Ваше железо.
Покажу свой пример:

pactl & pacmd

Кроме pactl существует другая утилита для управления PulseAudio: pacmd .
Если к PulseAudio подключен модуль module-cli-protocol — создаётся UNIX-сокет на котором висит PulseAudio-shell. Это во многом похоже на telnet 🙂
Шелл принимает текстовые команды и исполняет их. pacmd help покажет список доступных команд.
Проблема в том, что pactl умеет не всё, а pacmd не так удобен в использовании. В дальнейшем будем придерживаться pactl , однако если его функционала не хватит — используем pacmd .
В конце статьи я продемонстрирую собственную утилиту, работающую поверх стандартных: намного более функциональную и удобную 🙂

Card Profile: маппинг портов звуковой карты

У звуковой карты ограниченное количество разъёмов, а применений им может найтись масса: можно задействовать все под вывод звука 5.1 и оставить один для микрофона; или же оставить один джек под стерео-выход, зато получить входы для микрофона и линейный; или…
Увы, магия здесь не прокатит: наборы предустановлены производителем. Их список можно посмотреть в поле «Profiles» объекта «Card».
Для каждого профиля задаётся приоритет (priority): число, определяющее «степень привлекательности» именно этого профайла. По умолчанию PulseAudio выбирает профайл с наибольшим приоритетом.
Для каждого профайла указывается сколько Sink’ов и Source’ов он породит если его выбрать: sinks: 1, sources: 0 .

Читайте также:  Включить все службы необходимые для работы windows

На данный момент нельзя изменить приоритеты, однако можно выбрать тот или иной профиль.
Подсматриваем в выводе pactl list имя карты и профиля, и выбираем:
pactl set-card-profile ‘alsa_card.pci-0000_00_1b.0’ ‘output:analog-stereo+input:analog-stereo’
Всё, порты карты переназначены.
Можно вообще выключить все разъёмы, выбрав профайл «off»:
pactl set-card-profile ‘alsa_card.pci-0000_00_1b.0’ ‘off’

Sink Port: переключение звука на наушники

У одного Sink’а может быть несколько звуковых портов. Например, Sink созданный на основе звуковой карты ноутбука, может иметь два порта: встроенные колонки и выход на наушники.
Текущий порт Sink’а можно посмотреть в его поле Active Port: analog-output-speaker .
Глядя на список Ports нужного объекта Sink, назначаем порт:
pactl set-sink-port ‘alsa_output.pci-0000_00_1b.0.analog-stereo’ ‘analog-output’
и звук моментально перебрасывается на наушники, отключая колонки.
Аналогично для Source. Возможно, Ваш микрофон не работает в Skype именно из-за того что выбран не тот порт записи 🙂

Default Sink: звуковой выход по умолчанию

PulseAudio метит один из Sink’ов как «по умолчанию»: новые запущенные приложения по умолчанию будут проигрываться через него. Другими словами, если приложение при создании Sink-Input’а не выбирает Sink самостоятельно (например, из пользовательских настроек) — выбирается default-sink.
Sink по умолчанию можно посмотреть выполнив команду pactl stat :
$ pactl stat
.
Default Sink: alsa_output.pci-0000_00_1b.0.analog-stereo
Default Source: alsa_input.usb-046d_0802_0825F490-02-U0x46d0x802.analog-mono
Изменим его: смотрим имя нужного Sink’а и пишем:
pacmd set-default-sink ‘1’
Обратите внимание что pacmd в некоторых случаях позволяет использовать номера вместо длинных имён.
Аналогично для Source. Кстати, неверно выбранный default-Source тоже может не давать общаться в Skype 🙂

Move Sink-Input: перемещение звукового потока

Этим действием можно перекинуть Sink-Input с одного Sink’а на другой. Таким образом можно перебросить музыку на только что подключенную USB-колонку.
Смотрим имена двух Sink’ов, находим нужный Sink-Input и пишем:
pactl move-sink-input 16 ‘1’
и звук Sink-Input#16 моментально переключается на Sink #1. Это может быть USB-колонка.
Увы, перебросить сразу все Sink-Input’ы с помощью pactl или pacmd нельзя. В конце статьи будет решение.
Source-Output также можно переключать между Source’ами.

Управление громкостью

Громкость в PulseAudio задаётся численно: 0..65535 (соответствует 0% и 100%), а также — сюрприз! — значения большие чем 100% вызывают усиление сигнала что незаменимо при просмотре фильмов с ненормализованной громкостью.
Здесь можно использовать index Sink’а:
pactl set-sink-volume ‘1’ 100 # очень тихо! 100/65535 = 0,15%
pactl set-sink-volume ‘1’ 65535 # 100%
pactl set-sink-volume ‘1’ 78642 # 120% — усиление
pactl set-sink-mute ‘1’ true # соседи могут засыпать
Усиление может вызывать clipping: всем известный «дребезг».
Аналогично можно управлять громкостью Source’ов.
UPD: с версии 0.9.15 появилась фича «FLAT_VOLUME» (её можно увидеть в Sink ‘Flags’). При наличии этого флага громкость Sink’а автоматически устанавливается как максимальная громкость всех Sink-Input’ов. Отключить её можно так:
echo «flat-volumes = no» >> /etc/pulse/daemon.conf

Громкость приложений

С появлением Windows7 линуксоиды, не знакомые с PulseAudio, обзавидовались возможности регулировать громкость отдельных приложений 🙂
Теперь это возможно: смотрим index нужного Sink-Input’а и усиливаем отдельное приложение:
pactl set-sink-input-volume ’16’ 80000

Приостановка

Sink и Source можно «приостановить»:
pactl suspend-sink ‘1’

Конфиг

Когда Вам в голову придёт мысль добавить одну из этих команд в автозагрузку — немедленно выбросьте её! В таких случаях нужно использовать файл конфигурации PulseAudio.
Пример можно найти в файле /etc/pulse/default.pa . Обратите внимание на shebang #!/usr/bin/pulseaudio -nF : это скрипт, синтаксис которого очень похож на команды, которые понимаем pacmd .
Для самообразования:

  • pacmd — Запускает интерактивную консоль PulseAudio
  • pacmd help — список команд, на оффсайте
  • Модули PulseAudio

patricks

Замучавшись неудобством официальных утилит, ваш верный слуга написал свою утилиту для управления демоном PulseAudio 🙂

Особенности:

  • Короткие, интуитивные команды
  • Дозированная подача информации командой ls : теперь в терминал не будет вываливаться тонна информации (особенно properties)
  • Все объекты — в том числе порты и профайлы — можно задавать как по имени, так и по индексу
  • Команда set sink 0 port next — можно не гадать номер порта и просто переключиться на следующий. Удобно для хоткея.
  • Наличие команды mv sink 0 all для перемещения всех звуковых потоков в нужный Sink (USB-Колонка)

Полакомиться можно на GitHub: ootync/Patricks
(файлы скрипта положить куда-нибудь и сделать симлинк на patricks.php)

Пример работы:
Посмотреть список Sink’ов. Текущий Sink выделен символом >:

Внимательнее присмотретсья к Sink #0:

Внимательнее посмотреть на список портов Sink #0:

Переключить Sink #0 на следующий порт

Перекинуть все Sink-Input’ы на следующий Sink (например, свежеподключенную USB-колонку)

Источник

Оцените статью