Полезное для программистов:

Фриланс
Новости
Статьи
   
Рубрики:


Я вас плохо Слышу! (немного о звуке в линукс)

Поиск:
Пролог:
В данной статье используются многие термины, которые легко проследить в wikipedia.org, но если читатель нашел какой-то непонятный термин там не находящийся, просьба постучаться к мне на форуме винград, желательно по каналу личных сообщений с указанием ссылки на статью.
Вступление:
В линукс есть свобода выбора. это конечно хорошо, но не всегда.
напр. со звуком. в Линух на сегодня существует 2 основные архитектуры работы с аудио устройствами:
  • OSS
  • ALSA

Далее идёт серия вопрос-ответ ( В:О: )
===================
В: Что даёт звуковая "архитектура" ?
О:
во-первых, драйвер звуковых и более профессиональных карт
во-вторых, доступ программ к этим картам программным методом, т.е. API.
-------------------
В: Что такое Jack, PulseAudio?
O: это слои системы звуковой поддержки для доступа к звуковому устройству с нескольких "местонахождений", напр. с другого компьютера, параллельно с другого пользователя, из другой программы. Они обычно построены по архитектуре клиент-сервер. Когда в системе запущен сервер, а звуковые приложения - есть клиенты, к нему подключающиеся.
-------------------
В: Чем отличается ALSA от OSS ?
О: В хронологическом порядке...
С 1992 года, т.е. изначально появился OSS - кроссплатформенная  юниксовая подсистема звука. ее дом - фирма называлается 4Фронт технологии (4Front Technologies).
Первые версии разрабатывались на основе карт 1992 года, когда профессионалы-аудиофилы не то что не пользовались UNIX, тогда таких карт как сегодня просто не было в продаже. Первые версии были полностью открытыми, но в какой-то момент фирма решила создать коммерческий продукт для поддержки коммерческих устройств с закрытыми спецификациями. с тех пор ОSS - коммерческий продукт, который изначально продавался за 20-30 баксов и кооперировал со злыми капиталистами, т.е. производителями карт, подписывая NDA, и этим самым имея доступ к полным спецификациям продуктов.

В 1998 году, как протест такой ужасной реальности родилась ALSA. Не то чтобы это само по себе было знаменательным событием, но несколько весомых в мире программирования аудио людей повисли на ней, и по не совсем объективным причинам объявили ее мессией. Её цели (прямой копипаст с оф. сайта):
  • Эффективная поддержка различных видов аудио устройств от домашних до профессиональных мультиканальных
  • Полностью модуляризироованные драйвера
  • поддержка многопоточности и многопроцессорности
  • API ALSA посредством alsa-lib
  • OSS совместимость (с версиями 2.х)

И самое смешное: ALSA - националистка, она есть Advanced Linux Sound Architecture.
Исторически в дистрибутивах GNU/Linux была возможность выбора - либо использовать OSS либо ALSA, но ввиду политических давлений ALSA вытеснил OSS из официального ядра 2.6. Это было достижение для ребят из ALSA проекта.
В 2007 году фирма 4Фронт Технологии тихо публикует (т.е. открывает) новую 4-ю версию OSS архитектуры. На сегодняшний день есть версии этого пакета для всех основных UNIX систем.
Эта версия поддерживает больше карт, чем ALSA, имеет тот же простой, т.е. сделанный по принципу KISS интерфейс программирования, и даёт всё, что давала ALSA + проприетарные драйвера впридачу.
Сегодня - OSS даёт "из коробки" больше чем ALSA.
-------------------
В: Как настроить Ubuntu работать с OSS v.4.х
O: В данном ответе от читателя предполагается способность найти скачанные файлы из командной строки.
  • До установки нужны пакеты разработки, которые устанавливаются посредством:
    Код

    sudo aptitude install build-essentials kernel-headers

  • Качаем драйвера с офиц. сайта, можно скачать пакет deb. Инструкция существует в нескольких источниках, поэтому наверное повторяюсь.
  • Eсли вы пользователь скайпа, скачайте архив OSS версии данного пакета с офиц. сайта, для установки под вашим пользователем.
  • Прежде чем продолжать делать всё как тут написано, сохраните статью/распечатайте или лучше просматривайте ее с ДРУГОГО компьютера, т.к. тот, на котором мы будем работать будет неудобен для чтения данной статьи (всё можно, но не всем удобно прыгать от консоли к консоли в текстовом режиме). Поэтому остановитесь, приготовьтесь, и читайте далее.

    Из-за того, что в графическом режиме нередко программы запирают звуковое устройство без нашего ведома, лучше всего ставить пакет OSS когда GDM/KDM/XDM и т.д. грохнуты, т.е. в случае GDM:
    Код

    sudo invoke-rc.d gdm stop

  • Собственно установка, если у вас i386, просто:
    Код

    sudo dpkg -i oss-linux-<версия>-<ревизия>_i386.deb

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

После установки:
  • Стоит изменить проигрывающий скрипт GDM чтобы он проигрывал этод "бррынн" когда поднимается, достаточно изменить его (/usr/lib/gdmplay)
    Код

    /usr/bin/aplay -q -N $@ 2> /dev/null
    # т.е. игралка ALSA

    былО:
    Код

    /usr/bin/osslay -q $@ 2> /dev/null
    # т.е. игралка OSS

  • Нужно перегрузить компьютер, т.к. иногда после отгрузки драйверов ALSA, новые драйвера не загружаются корректно
  • Если используется GStreamer/ARTS и т.д., нужно первым делом выбрать подсистему OSS для их изпользования
  • Если используется несколько карт, нужно "пройтись" по приложениям и выбрать правильные устройства для них

В: Что лучше: OSS или ALSA ?
O: не знаю. Я склонен думать, что OSS:
  • есть больше карт с которыми ALSA даёт хреновое качество звука
  • API к ALSA не из наиприятнейших, и в доказательство - основные программисты приложений, использующие продвинутые возможности ALSA - программисты самогО проекта ALSA (проекты Jack, Ardour, LADSPA)
  • ALSA не сможет дать качественные драйвера на коммерческие, закрытые карты, а ожидать от производителей этих карт открытия их спецификаций - наивность

Кроме того OS-"национализм" - не самая хорошая идея в UNIX :)


Всем Мира.
Автор: bilbobagginz
Сайт: http://forum.vingrad.ru






Просмотров: 5223

 

 

Новые статьи:


Популярные:
  1. Как сделать цикличным проигрывание MIDI-файла?
  2. Создание AVI файла из рисунков
  3. Как устройство "отключить в данной конфигурации"?
  4. Kто в данный момент присоединен через Сеть?
  5. Как узнать количество доступной памяти?
  6. Как реализовать в RichEdit разноцветный текст?
  7. Как скрыть свое приложение от ProcessViewer
  8. Как программно нажать/скрыть/показ кнопку "Start"?
  9. Модуль работы с ресурсами в PE файлах
10. Функции вызова диалоговых окон выбора
11. Проверка граматики средствами Word'а из Delphi.
12. Модуль для упрощенного вызова сообщений
13. Функции для записи и чтение своих данных в, ЕХЕ- файле
14. Рекурсивный просмотр директорий
15. Network Traffic Monitor
16. Разные модули
17. Универсальная функция для обращения к любым экспортируем функциям DLL
18. Библиотека от VladS
19. Протектор для UPX'а
20. Еще об ICQ, сообщения по контакт листу?
21. Использование открытых интерфейсов
22. Теория и практика использования RTTI
23. Работа с TApplication
24. Примеры использования Drag and Drop для различных визуальных компонентов
25. Что такое порт? Правила для работы с портами
26. Симфония на клавиатуре
27. Загрузка DLL
28. Исправление автоинкремента
29. Взаимодействие с чужими окнами
30. Проверить дубляжи в столбце


 

 

 
 
На главную