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 (англ. источник) — источник звука, создающий звуковой поток. Представляет вход звуковой карты: линейный вход, микрофон.

    В 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


    Конечно же, сперва нужно убедиться что PulseAudio установлен и запущен:
    sudo apt-get install pulseaudio
    pulseaudio --start -D

    Далеко не каждое приложение умеет работать с PulseAudio напрямую: обычно они умеют использовать Alsa. Для таких приложений нужно сообщить, чтобы 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: по умолчанию они описывают Ваше железо.
    Покажу свой пример:
    Sink #1 — Sink: вопроизводит звук
            State: RUNNING — Sink работает: через него проигрывается музыка
            Name: alsa_output.pci-0000_00_1b.0.analog-stereo — Уникальное имя Sink'а
            Description: Internal Audio Analog Stereo — Текстовое описание Sink'а
            Driver: module-alsa-card.c — Используемый "драйвер": модуль PulseAudio, создавший этот Sink
            Sample Specification: s16le 2ch 44100Hz — Параметры дискретизации, количество каналов, кодирование.
            Channel Map: front-left,front-right — Звуковые каналы
            Owner Module: 5 — index модуля, создавшего этот Sink
            Mute: no
            Volume: 0:  26% 1:  26% — Громкость обоих каналов
                    0: -35.42 dB 1: -35.42 dB
                    balance 0.00
            Base Volume: 100% — "Базовая громкость": указывает на некоторую "неусиленную" громкость устройства вывода
                         0.00 dB
            Monitor Source: alsa_output.pci-0000_00_1b.0.analog-stereo.monitor — Имя "монитора", связанного с этим Sink
                                                            (виртуальный Source: позволяет писать "звук с колонок")
            Latency: 161458 usec, configured 210000 usec — Параметры звукового лага
            Flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY 
            Properties: ... — Всякие свойства. Там можно увидеть имя устройства Alsa, куда этот Sink отдаёт звук
            Ports: — Порты Sink'а: соответствуют физическим портам звуковой карты
                    analog-output: Analog Output (priority. 9900) — Выход наушников
                    analog-output-speaker: Analog Speakers (priority. 10000) — Колонки ноутбука
            Active Port: analog-output-speaker — Текущий выбранный порт: музыка у меня играет из колонок ноута.
    Card #1 — Физическая звуковая карта
            Name: alsa_card.pci-0000_00_1b.0
            Driver: module-alsa-card.c
            Owner Module: 5
            Properties: ...
            Profiles: — Профили звуковой карты: выбранный пресет маппинга физических портов. 
                    output:analog-stereo: Analog Stereo Output (sinks: 1, sources: 0, priority. 6000)
                    output:analog-stereo+input:analog-stereo: Analog Stereo Duplex (sinks: 1, sources: 1, priority. 6060)
                    output:iec958-stereo: Digital Stereo Duplex (IEC958) (sinks: 1, sources: 0, priority. 5500)
                    output:iec958-stereo+input:analog-stereo: Digital Stereo (IEC958) Output + Analog Stereo Input (sinks: 1, sources: 1, priority. 5560)
                    input:analog-stereo: Analog Stereo Input (sinks: 0, sources: 1, priority. 60)
                    off: Off (sinks: 0, sources: 0, priority. 0)
            Active Profile: output:analog-stereo+input:analog-stereo
    Source #1 — Source: позволяет записывать звук
            State: IDLE — Source бездействует: я ничего не записываю :)
            Name: alsa_output.pci-0000_00_1b.0.analog-stereo.monitor
            Description: Monitor of Internal Audio Analog Stereo
            Driver: module-alsa-card.c
            Sample Specification: s16le 2ch 44100Hz
            Channel Map: front-left,front-right
            Owner Module: 5
            Mute: no
            Volume: 0: 100% 1: 100%
                    0: 0.00 dB 1: 0.00 dB
                    balance 0.00
            Base Volume: 100%
                         0.00 dB
            Monitor of Sink: alsa_output.pci-0000_00_1b.0.analog-stereo — Этот Source создан как монитор 1го Sink'а:
                                                     из него можно записывать то что слышно из колонок
            Latency: 0 usec, configured 1999818 usec
            Flags: DECIBEL_VOLUME LATENCY 
            Properties: ...
    


    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.

    На данный момент нельзя изменить приоритеты, однако можно выбрать тот или иной профиль.
    Подсматриваем в выводе 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.
    Для самообразования:


    patricks


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

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

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

    Пример работы:
    Посмотреть список Sink'ов. Текущий Sink выделен символом >:
    ootync@rtfm ~ $ patricks ls sinks
    >Sink#0 <alsa_output.pci-0000_00_1b.0.analog-stereo>
     Sink#1 <alsa_output.pci-0000_00_2b.0.hdmi-stereo>


    Внимательнее присмотретсья к Sink #0:
    ootync@rtfm ~ $ patricks ls sink 0
    Sink#0 <alsa_output.pci-0000_00_1b.0.analog-stereo>
    Is Default: yes
    Description: Internal Audio Analog Stereo
    State: RUNNING
    Driver: module-alsa-card.c
    Owner Module: Module#4 <module-alsa-card>
    Sample Spec: s16le 44100ch 2Hz
    Channel Map: front-left, front-right
    Mute: no
    Volume: 25%
    Base Volume: 100
    Latency: 199703
    Configured Latency: 210000
    Flags: HARDWARE, HW_MUTE_CTRL, HW_VOLUME_CTRL, DECIBEL_VOLUME, LATENCY
    Ports: analog-output, analog-output-headphones
    Active Port: analog-output
    Monitor Source: Source#0 <alsa_output.pci-0000_00_1b.0.analog-stereo.monitor>
    Id: 0
    Name: alsa_output.pci-0000_00_1b.0.analog-stereo
    Proplist: 33 items


    Внимательнее посмотреть на список портов Sink #0:
    ootync@rtfm ~ $ patricks ls sink 0 ports
    >#0 analog-output: "Analog Output" prio=9900
     #1 analog-output-headphones: "Analog Headphones" prio=9000


    Переключить Sink #0 на следующий порт
    ootync@rtfm ~ $ patricks set sink 0 port next
    Sink#0 <alsa_output.pci-0000_00_1b.0.analog-stereo>: analog-output-headphones


    Перекинуть все Sink-Input'ы на следующий Sink (например, свежеподключенную USB-колонку)
    ootync@rtfm ~ $ patricks mv sink next all
    Moving 1 inputs {65} to sink "alsa_output.pci-0000_00_1b.0.analog-stereo"...
    Sink#0 <alsa_output.pci-0000_00_1b.0.analog-stereo>: default sink


    Ссылки


    Настройка «от автора»
    Примеры консольных команд
    Описание модулей
    FAQ

    В следующей серии


    • Конфиги PulseAudio
    • Работа с модулями
    • Работа с сэмплами
    • Звук по сети, revisited

    Сразу скажу что статья будет не скоро… сам ещё не всё понял :))
    Поделиться публикацией
    Похожие публикации
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 80
    • 0
      Как долго я этого ждал!..
      • 0
        :)) Документация была just two clicks away! Она, конечно, не слишком дружелюбна :)
      • +3
        Напишите лучше как заставить работать микрофон в скайпе. А то он включается только после ампутации pulseaudio.
        • +1
          Мне простого подергивания ползунка уровня входа хватило, чтобы его включить :) Эффект плацебо налицо))
          • +1
            ой… а можно чуть более подробно про «ампутацию»?

            А то хотелось бы всех предупредить чтоб не нарватся как я:

            Стояла убунта, все работало пока не понадобилось пообщатся в скайпе. Подключился, но микрофон тупо ничего не воспринимает. Тут чего я только не начал делать — доставлял всякие 'paman', 'alsa audio configuration', потом долго гуглил, нагуглил всякие настройки в modprob, ребутился, гуглил, нашел драйвер какой-то, неуспешно компилил-ставил…

            … все закончилось тем, что ядро перестало грузить модуль ядра что-то вроде snd-hda_intel (не находило какие-то .ko в папке asound где-то внутрях где все модули лежат)… перестал грузится иногда gnome-wm (а он откуда тут...)… и похоже прийдется переставлять убунту, ибо накуралесил я там жостко.

            Самое интересное, что походу я микрофон спалил, да и в винде после этого пришлось переставлять драйвер (благо там оно автоматом через «решение проблем» решилось как-то).

            Но не смотря на это признаюсь, что это мои кривые руки (ну низзя запускать 'make install' непонятных исходников) и тем, у кого возникают подобные проблемы я бы посоветовал использовать только стандартные убунтовские средсва решения проблем и не строить из себя крутых линухоидов ковыряя настройки и компиля все что ни попади.

            Вот такой вот опыт, надеюсь кому-то пригодится чтоб не наступить на те же грабли.
            • НЛО прилетело и опубликовало эту надпись здесь
              • +3
                :))) Между прочим виндузятники тоже начинают с того что пару раз грохнут систему)) ну… в случае если есть интерес ковыряться :)
                • +4
                  А чем плохо «строить линуксоида»? Думаете «труъ линуксоиды» с пеленок конфижили ядра и патчили модуля? Думаю все начинали с того, что неудачно пересобирали вручную какие-то пакетики :)

                  И как «ставить windows» может быть альтернативой? думаете в windows намного проще? Тяжелее — тут синие экранчики, невозможность нормальной диагностики дров (ибо все жутко закрыто). Реестр и прочие ужОсы.

                  • НЛО прилетело и опубликовало эту надпись здесь
                    • 0
                      Отказываться от конфигов? Любопытно, можно линк? Представляю себе серверный regedit.sh :)))))
                      Кстати, если не ломиться дальше того что даёт гуй — линукс будет работать на ура. Кроме одной долбанутой Wi-Fi ещё не видел железа которое бы не работало :)
                      • НЛО прилетело и опубликовало эту надпись здесь
                        • НЛО прилетело и опубликовало эту надпись здесь
                          • +3
                            А, ну точно, это как GNOME'ский GConf. Может реестр и удобен (особенно если в нём не разводить такой неструктурированный срач как в винде), однако вот точно: в том виде как это представлено в Windows он не согласуется с концепцией «everything is a file».
                            В Gnome, кстати, каждая «ветка» GConf хранится в отдельном файле ($ find ~/.gconf), а сам GConf таким образом — унифицированный способ доступа к конфигам :)
                            • 0
                              более того, как я понял, в GConf можно даже вешать хуки на изменения в нём, чтоб приложение сразу применяло новые значения из него.
                              • 0
                                Более того, практически все приложения, использующие gconf именно так и делают. Я, помнится, очень удивился, когда при открытом rhythmbox правил его настройки из gconf-editor и увидел, что значения в диалоге настроек меняются мгновенно.
                          • +2
                            Вы говорите про реестр Windows?

                            Вот как может быть добром то, что внутри содержат тонны ключей по типу:
                            HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\{892EDE5E-BE49-443c-A0B3-005D74F2D69C}
                            или
                            HKEY_CLASSES_ROOT\{2C256447-3F0D-4CBB-9D12-575BB20CDA0A}\ProgID

                            Реестр, как задумка, вещь просто чудесная. Но не до конца продумали — слишком много всего там того, что следовало бы в других местах хранить или организовывать по-другому. Как-то оно все хаотично там. Нужно гуглить, читать доки чтоб понять где что и как должно лежать.

                            Просто надо иногда координально пересматривать архитектуру. Те же X-ы лет 5 назад и сейчас совершенно по-другому устроенны — где «тот самый» xorg.conf под тысячу строк? Где жуткие файлы настроек фонт-сервера?

                            Если это не делать, то и получится что-то вроде современного реестра Windows где все подряд. Жаль что из такой великолепной задумки вышло вот такое hardly maintainable…
                            • НЛО прилетело и опубликовало эту надпись здесь
                        • +5
                          Видать Вы не поняли суть моего комментария :)

                          Я на своем опыте понял, что в убунте, как отказалось, нужно быть «обычным пользователем» — тогда все будет работать: и драйвера (до того, как я начал копатся я даже не понял есть ли там такое понятие) будут отлично сами по себе работать, и настраивать лучше через панельку управления и не выдумывать себе лишних проблем с левым софтом.

                          И если сравнивать сейчас Win7 и Ubuntu, то последняя лично мне показалась намного более дружелюбней для «обычного пользователя» — и меню более понятные (нет страшных «дисков» (какие в компьютере могут быть «диски» если я туда ничего не засовывал), страшных слов «кодеки», «драйвера», огромного списка «Все программы» где надо искать что надо, «Рабочего стола» в котором есть «компьютер» в котором есть «рабочий стол» и т.д. — это только капелька из вопросов, которые задает «обычный пользователь).

                          Тут все просто — установил (установка в виде пару кнопок „дальше“) и у тебя есть интернет, почта, чат, офис, мультимедия (в т.ч. инет-радио с кучей каналов). Если надо что-то еще — не надо гуглить и искать софт — удобнейший центр установки програм, который за тебя найдет откуда скачать. В Windows7 нужно практически все это дополнительно доставлять, настраивать, допиливать кодеками и т.д.

                          Еще раз не будем холиварить, и пусть это будет лично моим мнением человека, использующего Windows и решающего с ним проблемы более 10 лет.
                          • НЛО прилетело и опубликовало эту надпись здесь
                            • 0
                              просто интересно — когда и какую версию убунты Вы ставили и на какое примерно железо?
                              • НЛО прилетело и опубликовало эту надпись здесь
                                • +1
                                  Больше вопросов нет.

                                  Еще несколько недель назад я готов был бы подписатся под каждым Вашим словом, так как сам пробовал всякие линуксы много раз (SuSE, RedHat, Mandriva, Feadora и прочие) и каждый раз оставалось в лучшем случаее среднее впечатление.

                                  Сейчас вот попробовал убунту 10.10 и действительно координально поменял свое мнение.
                                  • НЛО прилетело и опубликовало эту надпись здесь
                                    • +1
                                      Только с мышками A4Tech, решение которой является 1 клик по ссылке, по которой скачается и установится более свежий xinput решающий эту проблему.
                                      • НЛО прилетело и опубликовало эту надпись здесь
                                        • 0
                                          других проблем не замечал.

                                          Проблема с мышкой было в том, что некоторые мышки от A4Tech, которые поддерживают программирование макросов регистрируют себя как дополнительная клавиатура, сбивая с толку xinput (который при переключении клавиатуры «по умолчанию» включает led-индикаторы на всех клавиатурах). По этому решение было или обновить xinput или отключить изменение led-индикатора при смене раскладок клавиатуры.
                                          • 0
                                            починили довольно быстро.
                                        • 0
                                          Ну вы тут заладили :) Ребят, кнопочку «сделать заебись» ещё не придумали! А все доступные решения отличаются лишь ценой и балансом недостатков :))
                                • 0
                                  Кодеки и Драйвера — в точку! :)
                                • +2
                                  Gnome/XFCE — это далеко не весь Linux. Пожалуйста, не стройте из себя эксперта, если Вы не слишком хорошо разбираетесь в теме. С тем же успехом можно было бы сказать "линукс, насколько я знаю, собираются переписать на Haskell", глядя на xmonad. Как говорится, слышал звон, да не знаю, где он.

                                  Недостатки реестра хорошо осветил Эрик Реймонд в прекрасной книге «Искусство программирования для UNIX»:
                                  • Реестр делает систему полностью неортогональной. Одиночные сбои в приложениях могут повредить данные реестра, часто делая невозможным использование всей системы и вызывая необходимость переустановки.
                                  • Феномен сползания реестра: по мере роста реестра увеличивающиеся затраты на доступ замедляют работу всех программ.

                                  Если уж хотите аргументированно обосновывать преимущества любимой операционной системы перед другими, потрудитесь узнать врага в лицо. А то фраза "на линуксе тоже собираются избавляться от конфигов" — это курам на смех, честно говоря.
                            • +1
                              sudo apt-get remove pulseaudio*

                              А вообще, работоспособность микрофона я всегда проверяю посредством утилитки arecord.
                              • 0
                                вот про arecord я узнал слишком поздно. Действительно отличная вещь чтоб проверить работает ли микрофон или нет.
                            • 0
                              Скорее всего нужно сменить Source по умолчанию. Например, с помощью стандартных утилит:
                              $ pactl stat | fgrep 'Default Source:' ; pactl list | fgrep 'Source #' -A 2
                              Default Source: alsa_input.usb-046d_0802_0825F490-02-U0x46d0x802.analog-mono
                              Source #0
                                      State: IDLE
                                      Name: alsa_output.pci-0000_00_1b.0.analog-stereo.monitor
                              --
                              Source #1
                                      State: SUSPENDED
                                      Name: alsa_input.pci-0000_00_1b.0.iec958-stereo
                              --
                              Source #2
                                      State: SUSPENDED
                                      Name: alsa_input.usb-046d_0802_0825F490-02-U0x46d0x802.analog-mono
                              $ pacmd set-default-source 2
                              


                              или с помощью patricks:
                              $ patricks ls so
                              >Source#0 <alsa_output.pci-0000_00_1b.0.analog-stereo.monitor>
                               Source#1 <alsa_input.pci-0000_00_1b.0.iec958-stereo>
                               Source#2 <alsa_input.usb-046d_0802_0825F490-02-U0x46d0x802.analog-mono>
                              $ patricks set source 2 default
                              Source#2 <alsa_input.usb-046d_0802_0825F490-02-U0x46d0x802.analog-mono>: default source
                              
                            • 0
                              Это великолепно просто! Недавно интересовался этой темой, но толком ничего не находил… Автор пишите есчо!
                              • +3
                                Торт!
                                Надо еще упомянуть про враппер padsp, который позволяет пускать OSS программы через пульсу.
                                padsp [options] PROGRAM [ARGUMENTS ...]
                                • 0
                                  Хорошая и полезная статья. Лови плюс :)
                                  • +1
                                    спасибо за статью. правда пока не решил свою проблему. вернее их две

                                    1) в некоторых плеерах на flash звук щёлкает на высокой частотое. пример — mult.ru. vimeo.com например нормально звучит. т.е. что-то такое в fedora намутили

                                    2) миксер гнома в федоре почему-то звук двигает сразу в приложениях. т.е. все управлялки звуком что в totem что в rhythmbox что в панеле — управляют master volume и сразу двигается pcm. дико неудобно. как это настраивается и где?
                                    • 0
                                      1) Почти наверняка поможет пример из статьи «что добавить в .asoundrc» :) Ещё написано здесь.
                                      2) It's not a bug, it's a feature: при уменьшении громкости отдельных приложений уменьшается громкость Sink'а. Никак не вспомню как называется и где видел: скоро отпишу :)
                                      • 0
                                        Нашёл! Это флаг FLAT_VOLUME. Из документации PulseAudioAPI:
                                        PA_SINK_FLAT_VOLUME: This sink is in flat volume mode, i.e. always the maximum of the volume of all connected inputs.
                                        Since: 0.9.15
                                        Лечится так:
                                        echo "flat-volumes = no" >> /etc/pulse/daemon.conf
                                        • 0
                                          о! у меня он уже раз пять был перед глазами. надо больше спать (с)

                                          теперь осталось понять почему 64хбитный флеш на ubuntu не скрипит на mult.ru а на fedora — скрипит. причём настройки одинаковые и там и там
                                          • –1
                                            Почитайте спор Линуса Торвальдса с разработчиками glibc по поводу нового поведения memcpy.
                                    • 0
                                      Эх, пару дней назад бы, не пришлось бы самому разбираться, когда переводил свой Арч на PulseAudio. А может это и хорошо =). В любом случае спасибо, прояснили некоторые моменты.
                                      • +1
                                        Рискую не встретить одобрения, но пульсаудио, в отличие от «голой alsa» всё ещё производт шипение в колонки, да и вообще ведёт себя не очень хорошо с m-audio delta-44. Версия 0.9.22
                                        • +1
                                          С шипением, думаю, дело в том что когда ничего не играет — PulseAudio глушит звуковуху, кстати, без характерного «чпок» (а у некоторых и «БАБАХ!!!!» из сабвуфера :)) ). Дело-то скорее всего в наводках, а их софтом не устранить :)
                                          Насчёт нестабильности — странно, учитывая что PA в итоге всё равно отдаёт звук альсе.
                                          • +1
                                            Под шипением я имел в виду все виды шумов :) 90% шумов это так называемое на форумах поддержки «crackling», русское название этой проблемы уже 10 минут вспомнить не могу просто. Наводок-то как раз нет, во всяком случае, я на это внимания никогда не обращал.
                                            Вторая проблема (то, что я назвал стабильностью) — если запустить флеш-ролик одновременно с exaile, например, звук из флеша начинает жуткий шум, представляющий собой зацикленное повторение первой половины секунды флеш-ролика. Помогает только перезапуск пульсаудио. То же самое происходит и если одновременно с играющей музыкой позвонить в скайпе, сработает будильник и т.п.
                                            При этом ни одной из этих проблем не возникает вообще, если просто не запускать пульсаудио, а оставить только альсу
                                            • +2
                                              crackling — потрескивание. на amd-шных процах и встроенных звуковухах лечится отключением Cool & Quiet (но теряется возможность работать на пониженных частотах).
                                              • 0
                                                Точняк, потрескивание! :)

                                                Ну, у меня intel e8400, да и звуковуха довольно неплохая. В общем, фиг знает, но факт остаётся фактом — с момента появления пульсаудио, я при каждом обновлении пытаюсь потерпеть недельку и посмотреть, что же будет, потом не выдерживаю и оставляю только alsa.
                                                Спасибо за участие :)
                                                • 0
                                                  Гм, а у меня i7 и потрескивание есть только в системных звуках бунты.
                                                  Зато звук из плеера(ритмбокс) при питании от батареи может циклиться и прерываться…
                                                  На всех форумах все лечение сводиться к сносу пулза :(
                                          • +1
                                            Ubuntu 10.10 — проблемы с микрофоном в скайпе.
                                            Решил так: установил пакет pavucontrol; после запуска скайпа открываю настройки звука (из виджета громкости, не из Меню->Параметры->Звук или из консоли: pavucontrol) и меняю Устройство ввода с «Microphon 2» -> «Microphon 1» и обратно.
                                            На 10.04 проблема решалась аналогично.
                                            • 0
                                              Верно :) в терминах PulseAudio, Вы сменили Source по умолчанию :)
                                              • 0
                                                Я скорее «передёрнул затвор» :)
                                                Микрофон2 у меня и так по умолчанию — если запустить другое приложение, Звукозапись например, то танцы не нужны — работает сразу.
                                                Думается мне проблема именно в скайпе, который вместо источника по умолчанию, использует другой источник (в моём случае это Микрофон1), возможно — первый попавшийся.

                                                Кстати, а можно создавать профили для приложений? То есть для скайпа — брать звук из микрофона и отдавать в наушники, а для плеера — играть в колонки.

                                                То есть в «терминах PulseAudio», можно ли для разных приложений назначать Source и Sink отдельно от дефолтных значений?..
                                                • +1
                                                  в скайпе надо отключить «позволить скайп управлять вашим аудио»
                                                  • 0
                                                    Нашёл только «Позволить скайп автоматически подстраивать громкость». Оно?
                                          • НЛО прилетело и опубликовало эту надпись здесь
                                            • 0
                                              извините, статью не осилил, звук мне не очень интересен; )
                                              но меня как обывателя мучает вопрос, как в убунте дела с блютуз наушниками? как-то где-то видел, что человек жаловался что ну ни в какую не смог пустить в убунте звук на них. В новых версиях стало лучше? спасибо.
                                              а то сыкотно покупать…
                                              • 0
                                                приятель в 10.04 и 10.10 использовал bt уши безо всяких проблем
                                                • 0
                                                  Пару лет назад сам мучился с блютус-наушниками. Правда не на убунту, а на ArchLinux.
                                                  Убил на это больше недели, изучив за это время вдоль и поперек документации BlueZ, PulseAudio, D-Bus, но зато добился нормальной работы «ушей»:)

                                                  Поэтому думаю, что сейчас в убунте подключение блютусных-наушников тоже вполне решаемая задача.
                                                  • 0
                                                    Сам не пробовал, но точно могу сказать: в PulseAudio есть модуль module-bluetooth-sink позволяющий это сделать, а также в настройках BT в KDE видел эту возможность :)
                                                    Может, стоит взять погонять ухо у друга? :)
                                                    • 0
                                                      Уже в Ubuntu 9.10 pulseaudio отлично работает BT. Я использую BT колонку Creative D200. Отличный звук.
                                                      Раньше использовал и наушники, но кажется с более старой версией. Но так как это было давно — уже не напишу что и как.
                                                    • 0
                                                      Такой вот вопрос: у меня нет Ports и Active Port (хотя поидее должны — у меня карточка выводит один порт на переднюю панель — для наушников). Под виндой драйвер шустро, бодро и весело переключает меня на наушники, отрубая автоматом колонки, как только я воткну штекер. Вопрос собственно в том, как сделать то же самое под линухом?

                                                      Кстати, замечание — ощущение, что Линух считает этот порт просто очередным портом…
                                                      • 0
                                                        Эээ, сложно сказать. Можно посмотреть листинг pacmd list-sinks ; pacmd list-cards? Лучше в личку, вместе с моделью звуковухи :)
                                                        Есть вероятность что всё это реализовано неким нестандартным способом, отсюда и беда. Или драйверу звуковухи нужно подсказать какая именно модель на борту: у меня такое было.
                                                    • 0
                                                      У меня внешний usb интерфейс (Native Instruments) и при подключенном интерфейсе попытка отправить ноут в слип заканчивается тотальным зависанием. Лечится только хард ребутом.

                                                      В 9.10 такого не было. Думаю проблема именно с pulse… Может есть какие идеи?
                                                      • 0
                                                        Как всегда в Линуксе, если есть проблема — нужно смотреть логи :)
                                                        PulseAudio у вас скорее всего запущен от имени пользователя и врядли может завесить всю систему (разве что съесть проц) :). Вернее может, но с помощью бага в ядре, или какого-либо драйвера.
                                                        • 0
                                                          Давайте! Куда перенести пост? :)
                                                          • 0
                                                            Давайте решим вместе, как назвать этот блог. У меня были такие предложения «Linux для профессионалов», «Linux hardcore» (я склоняюсь к первому варианту). Но есть загвоздка, у меня недостаточно рейтинга чтобы создавать блоги, поэтому кто может это сделать? Давайте же сделаем так, чтобы люди не вставали в ступор, читая в блоге «Linux для всех» очередную информацию, которая предназначена для профессионалов своего дела.
                                                        • 0
                                                          Кстати, никто не знает простого способа переключения звука на usb-колонки при их втыкании?
                                                          • 0
                                                            В Гноме например так: открыть правым кликом на иконке микшера в трее настройки звука. Переставить радиобаттон в Hardware, потом в Output.
                                                            • 0
                                                              Я имел ввиду автоматическое, типа подключил колонки и звук пошел сразу на них.
                                                            • 0
                                                              Есть подозрение что это решается одним из модулей PulseAudio. И да, это точно решатся при помощи udev + скрипта использующего pacmd move-sink-input. К следующей статье я обязательно это рассмотрю :)
                                                            • 0
                                                              Вопрос такой возник: можно ли как-нить через pulseaudio перенаправить звук с выхода на вход?
                                                              (К примеру направить звучащую в плеере музыку в скайп и т.п.)
                                                              • 0
                                                                Лучшее из того что нашел о пульсе на русском. Спасибо огромное!
                                                                • 0
                                                                  О полезности строк
                                                                  pcm.pulse { type pulse }
                                                                  ctl.pulse { type pulse }
                                                                  pcm.!default { type pulse }
                                                                  ctl.!default { type 
                                                                  

                                                                  в файле ./.asoundrc ходят преувеличенные слухи. Мне микрофон Скайп не вылечило, а вот GUI pavuсontrol помогло.
                                                                  Возможно из-за того, что у меня 2 звуковухи, даже 3 учитывая веб-камеру.
                                                                  • 0
                                                                    Спасибо. Документации по пульс аудио с гулькин нос, так что статья очень помогла.
                                                                    • 0
                                                                      Спасибо, очень полезная статья. Заинтересовало удалённое управление громкостью через командную строку)
                                                                      • 0
                                                                        Это и в alsa было. Более того, было получше развито: кроме консольного amixer есть еще псевдографический alsamixer с удобным представлением всех каналов — его аналога я для PulseAudio не нашел.

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