21 ноября 2010 г.

О звуке

Под звуковой подсистемой понимается инфраструктура операционной системы, отвечающая за работу установленных в компьютере устройств обработки звука, а именно — звуковых карт, а также различных подключаемых извне (по USB или Firewire) интерфейсов. Эта инфраструктура включает в себя не только драйверы той или иной звуковой карты, загружаемые ядром операционной системы, но и интерфейс для разработки прикладных приложений (API), предназначенных для записи, воспроизведения и обработки звукового сигнала.

В настоящее время в GNU/Linux существует две конкурирующие звуковые подсистемы — OSS (старая) и ALSA (новая). Под OSS здесь подразумевается свободная версия этой кроссплатформенной звуковой подсистемы, которую можно свободно распространять — в отличие от коммерческой версии OSS. OSS издавна входит в состав ядер Linux.
Однако, при разработке ядер версий 2.5.x/2.6.x в качестве стандартной звуковой подсистемы была выбрана сравнительно новая ALSA, имеющая ряд конструктивных преимуществ перед OSS и во многом созданная по мотивам технологически удачных смежных звуковых подсистем ОС Mac OS X — CoreAudio и CoreMidi.
Разработчики OSS продолжают обеспечивать поддержку современных ядер ветки 2.6.x, однако количество приложений, спроектированных для работы именно с ALSA, неуклонно продолжает расти. Также, благодаря существованию OSS-эмуляции в подсистеме ALSA, старые приложения, рассчитанные на использование с OSS (например некоторые игры) можно использовать и с ALSA. Еще стоит отметить, что появилась и эмуляция ALSA в последних версиях OSS.
Помимо звуковых подсистем существуют звуковые серверы. Основная задача звукового сервера — это программное смешивание одновременно звучащих сигналов, издаваемых несколькими приложениями. Типичный пример: необходимость слышать звуковое сопровождение смены статусов присутствия собеседников в сети мгновенного обмена сообщениями во время прослушивания музыки через программный проигрыватель. Поскольку не все звуковые карты умеют смешивать несколько одновременных сигналов, звуковой сервер берёт на себя эту задачу, транслируя звуковому устройству уже смешанный сигнал. В последних версиях звуковой подсистемы ALSA среди ее расширений появился модуль dmix, который позволяет программно смешивать разные звуковые потоки, что уменьшает необходимость в использовании специализированного аудиосервера для обычного пользователя.
Исторически сложилось так, что разработка каждой новой мощной графической оболочки рано или поздно начинает требовать создания собственного звукового сервера. Так, благодаря графической среде Enlightenment появился популярный до сих пор звуковой сервер EsounD (ESD, Enlightened Sound Daemon). В ходе разработки KDE был создан сервер aRts (analog realtime synthesizer). До версии 2.0 в GNOME использовался ESD, после чего произошёл переход не просто на новый звуковой сервер, а на новую модульную мультимедийную инфраструктуру под названием GStreamer, позволяющую не просто смешивать звуки, а буквально строить из модулей как из кирпичиков свою систему передачи мультимедийных данных разного типа — звук, видео, изображения.
В некоторых случаях между звуковыми серверами возникают конфликты. Хрестоматийным является пример, когда приложение, основанное на библиотеках графической оболочки KDE, вместе с собой запускает звуковой сервер aRts, который отнимает у работающего сервера ESD доступ к файлу устройства звуковой карты (/dev/dsp), вследствие чего музыка, воспроизводившаяся в XMMS, стихает.
Поскольку GStreamer является решением, позволяющим подружить один звуковой сервер с другим, существует немалая вероятность того, что в будущем он станет стандартом для различных графических оболочек. Во всяком случае, в настоящее время aRts является официально не поддерживаемым проектом, а в качестве его замены рассматривается именно GStreamer. Ряд приложений для KDE уже использует Gstreamer для вывода звука. К таким приложениям, например, относятся популярные проигрыватели звуковых файлов amaroK и YuK.
Многие проигрыватели звуковых и видеофайлов позволяют пользователю выбирать, через какой звуковой сервер воспроизводить звук. Для этого в случае с каждым проигрывателем необходимо проверить соответствующие параметры, заданные в его диалоге настройки.
    Как говорится, танцевать начнем от печки. Для со­
временного Linux­ аудио этой «печкой» является ALSA (Advanced
Linux Sound Architecture, Продвину тая звуковая архитектура
Linux). ALSA связана с ядром Linux и обеспечивает работу со зву­ком для всех компонентов системы. Но ALSA – не просто драйвер
ядра: она служит программным микшером, эмулирует совмести­мость для других аудиослоев, создает API для программистов и работает с такой низкой и стабильной латентностью, что способ­ на конкурировать со своими эквива лентами ASIO (Audio Stream Input/Output) и CoreAudio из Windows и Mac OS X.
    ALSA создава лась на замену OSS (Open Sound System). Одна­ко драйвер OSS все же не умер: в ALSA предусмотрена совмести­мость со старыми приложениями, под держивающими только OSS. Проще всего считать ALSA уровнем драйверов устройств в системе Linux­ аудио. Вашей звуковой аппаратуре нужен со­ответствующий модуль ядра, с префиксом snd_, а тот на до за­грузить и запустить. И чтобы услышать хоть какой-­нибудь звук,
не обойтись без драйвера ядра из ALSA. Вот почему ваш ноут­бук так долго оставался «немым» – пока у кого­то не дошли ру­ки написать для него звуковой драйвер. К счастью, в наше время большинство дистрибутивов Linux настраивают ваши устройства и модули автоматически.
    ALSA переводит функциональность звуковой аппаратуры в программный API, которым прочие компоненты системы поль­зуются для манипуляции звуком. Эта архитек тура создавалась для устранения недостатков OSS (и большинства аудио-драйверов того времени), а самым заметным из них была невозможность работы с аудиоустройством сразу нескольких приложений. Задача программного компонента ALSA – управление запросами к звуко­вым устройствам, с учетом возможностей этих последних.
    Например, если вы хотите играть в какую-­нибудь игру еще
и под музыку из Amarok, ALSA нужно принимать оба потока ау­дио и либо микшировать их программно, либо отсылать их на ап­паратный микшер звуковой карты. ALSA умеет управлять работой до 8 устройств одновременно, а иногда и обращается к аппа­ратным функциям MIDI, хотя это зависит от звукового драйвера вашего оборудования и по мере роста мощности компьютеров теряет актуальность.
    В отличие от типичного модуля ядра/драйвера устройства, ALSA предоставляет возможность своей настройки. Здесь­ то
и проявляется сложность аудиосистемы Linux. Стоит лишь соз­дать собственный файл настройки, и в конфигурации ALSA мож­но сменить практически все: от способа микширования потоков аудио и выбора аудиовыходов до частоты дискретизации, разряд­ности отсчетов звука и эффектов реального времени.
    Относительная «прозрачность», эффективность и гибкость сделали ALSA стандартом де­-факто; ее слой должна пройти лю­бая другая инфраструктура аудио, чтобы добраться до звуково­го оборудования.

Удаление звукового сервера PulseAudio в Ubuntu

Удаление звукового сервера 
PulseAudio в UbuntuЗвуковой сервер PulseAudio изначально задумывался разработчиками как средство управления звуковыми потоками на низком уровне, которое со временем сможет вытеснить устаревший ESD (Enlightenment Sound Daemon) звуковой сервер.
PulseAudio от версии к версии обрастает рядом "новшеств", которые должны приятно удивлять пользователя, но в реальности получается, что новый звуковой сервер удивляет пользователя только неудержимым ростом потребляемой ОЗУ и дополнительными проблемами при воспроизведении звука.
Для повседневных нужд (воспроизведение звуковых файлов, видеороликов и общение через VoIP-телефонию) звуковой сервер PulseAudio не требуется. Удаление PulseAudio поможет освободить немного оперативной памяти и немного разгрузить операционную системы.

Зачем нужен PulseAudio и в чем его проблемы?


Общая идея, которая закладывалась разработчиками PulseAudio в свой продукт, заключалась в "правильном" управлении звуковыми потоками. К примеру, слушаете Вы громко музыку, а Вам звонят по Skype`у. В таком случае "правильный" звуковой сервер приглушит музыку и даст "комфортно" поговорить.
С помощью PulseAudio становится возможным транслировать звук одного компьютера на колонки других компьютеров, подключенных по сети. Это далеко не полный список.
Бесспорно, задумка разработчиков очень хорошая, но реализация PulseAudio пока далека от идеала.
Проблемы у PulseAudio есть. Очень частая проблема, когда звук проигрывается с частыми задержками, на довольно мощных компьютерах. Из встречающихся проблем можно выделить чрезмерное потребление оперативной памяти, приводящее к общей медлительности компьютера или вообще к отсутствию звука в операционной системе.
Для исправления этих проблем предлагается временно удалить звуковой сервер PulseAudio из системы, а когда его время придет установить его заново.

Удаление звукового сервера PulseAudio в Ubuntu


Сразу после пункта удаления PulseAudio отказываются работать мультимедийные клавиши клавиатуры, которые регулируют громкость звука. Эта проблема решатся обновлением пакетов из стороннего репозитория.
  1. Удаляем звуковой сервер PulseAudio:
    # sudo apt-get remove pulseaudio gstreamer0.10-pulseaudio
    # Удаление пакетов
    # killall pulseaudio
    # Останавливаем демон сервера
    Если в списке пакетов на удаление будет находится пакет ubuntu-desktop, то не стоит пугаться. Это мета-пакет, удаление которого не повредит ОС. Проверенно lynx.
  2. Подключаем дополнительный репозиторий, с исправленными пакетами для звукового апплета Gnome и OSD-уведомления. Перезагружаем компьютер:
    # echo "deb http://ppa.launchpad.net/dtl131/ppa/ubuntu `lsb_release -cs` main" | sudo tee -a /etc/apt/sources.list
    # Добавление дополнительного репозитория
    # echo "deb-src http://ppa.launchpad.net/dtl131/ppa/ubuntu `lsb_release -cs` main" | sudo tee -a /etc/apt/sources.list
    # Добавление дополнительного репозитория
    # sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com F76FFEBE && sudo apt-get update
    # Добавление ключа безопасности и обновление списка пакетов
    # sudo apt-get install gnome-applets gnome-media gnome-settings-daemon libcanberra0
    # Обновление пакетов
  3. Вызываем окно "Выбор мультимедийной системы" из консоли:
    gstreamer-properties
    В открывшемся окне везде выбираем ALSA (см. рис.).
    Удаление звукового сервера PulseAudio в Ubuntu
В итоге, после перезагрузки ОС, Вы получите работающую звуковую систему без звукового сервера PulseAudio. При этом будет работать стандартный Gnome-апплет управления уровнем громкости звука и его графическое отображение.




Статья составлена из следующих источников:
  1. http://itshaman.ru/articles/88/remove-sound-server-pulseaudio-in-ubuntu
  2. http://ru.wikibooks.org/wiki/
  3. Журнал Linux Format 130

Комментариев нет:

Отправить комментарий