Звук во FreeBSD

Dru Lavigne
перевод Станислава Лапшанского
Впервые опубликован: http://www.computerra.ru.

21 июня 2005 г

Оригинал статьи находится по адресу: http://www.onlamp.com/pub/a/bsd/2002/09/19/FreeBSD_Basics.html.

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

Если вы еще не читали раздел руководства администратора, посвященный мультимедиа (см. http://www.freebsd.org/handbook/multimedia.html), вы будете приятно удивлены. Недавно он был полностью переработан и теперь это действительно то место, где в первую очередь можно выяснить, поддерживается ли ваша звуковая плата, и, если да, то как заставить ее работать под FreeBSD.

В моей машине установлен SoundBlaster PCI 128, поэтому для того, чтобы включить поддержку звука, мне надо добавить в файл конфигурации ядра только устройство pcm. Поскольку я собираюсь пользоваться DVD проигрывателем, я добавлю в конфигурацию пункт, оптимизирующий ядро для выполнения мультимедиа-приложений. Мультимедийные программы также используют нечто, называемое LDT, строка для включения которого может быть, а может и не быть в вашем конфигурационном файле. Если ее не было - добавьте. Вот три строки, которые я добавила в файл конфигурации ядра:
options CPU_ENABLE_SSE #используется при декодировании DVD
options USER_LDT #используется разнообразными приложениями
device pcm #используется для поддержки SoundBlaster

Затем я перекомпилировала ядро, используя инструкции, содержащиеся в соответствующей главе руководства администратора (см. http://www.freebsd.org/handbook/kernelconfig-building.html).

Вот несколько значений sysctl-переменных, которые могут повысить производительность мультимедийных операций. Две из них имеют атрибут "только чтение", поэтому вы должны поместить их в файле /boot/loader.conf:
hw.ata.atapi_dma="1"
hw.ata.ata_dma="1"

Следующие четыре переменные можно поместить в файл /etc/sysctl.conf. Обратите внимание, что в отличие от предыдущего файла, вы не должны использовать кавычки:
kern.ipc.shmmax=67108864
kern.ipc.shmall=32768
hw.snd.pcm0.vchans=4
hw.snd.maxautovchans=4

Если ваша звуковая карта не использует устройство pcm, не выключайте в файле /etc/sysctl.conf строку, содержащую эту аббревиатуру. Если вы используете pcm1 вместо pcm0, измените 0 на 1 в соответствующей строке. Так же обратите внимание, что вам придется перезагрузиться, чтобы изменения вошли в силу.

Первое время, после того, как я собрала новое ядро, при монтировании компакт-диска я получала странное сообщение. Вот оно:
cd9660: /dev/acd0c: Device not configured

Обычно это сообщение выводится, если приводе не установлен диск с данными. Однако в данном случае диск был. Поиск информации в списках рассылки показал, что такая ошибка происходит, если вы используете cvsup для обновления FreeBSD с версии 4.5 до версии 4.6, как и было в моем случае. Для решения возникшей проблемы, я обновила файл дискового устройства:
cd /dev
cp /usr/src/etc/MAKEDEV .
rm acd*
./MAKEDEV acd0


Заодно я решила изменить права доступа к устройству CD-ROM, для того чтобы иметь возможность прослушивать аудио компакт-диски не только под аккаунтом суперпользователя, но и под обычным пользователем:
chmod 666 /dev/acd0c

Теперь я могу начать сборку приложений для работы со звуком. Я испробовала большинство приложений из audio раздела коллекции портов, и могу честно сказать, что для проигрывания звука трудно найти утилиту лучше, чем xmms. Она поддерживает скины, хотя даже по умолчанию выглядит отлично. Для нее написана масса штепселей на любой вкус. Она умеет проигрывать mp3, mpeg, wav, shoutcast-файлы, а заодно и компакт диски, при этом используя CDDB сервера. Исчерпывающая документация, описывающая использование всех этих возможностей, находится на сайте программы http://www.xmms.org. Также на сайте можно найти скриншоты, штепсели и скины.

Для инсталляции этой программы напечатайте:
cd /usr/ports/audio/xmms
make install clean

Помимо этого я установила все штепсели к xmms, имеющиеся в коллекции портов. Поскольку их очень много, я собрала их в список, где указала, где находится штепсель, краткое описание того что он делает и где настраивается:

Эти штепсели после установки конфигурируются во вкладке Audio I/O plug-ins диалога Preferences:
/usr/ports/audio/xmms-a52dec #a52/a53 декодер
/usr/ports/audio/xmms-bonk
#bonk декодер
/usr/ports/audio/xmms-crossfade
#перетекание одной композиции в другую
/usr/ports/audio/xmms-fc
#декодер future composer файлов
/usr/ports/audio/xmms-mad
#позволяет использовать libmad
/usr/ports/audio/xmms-musepack
#mpegplus
/usr/ports/audio/xmms-osssurround
#поддержка surround звука
/usr/ports/audio/xmms-shn
#поддержка формата shorten
/usr/ports/audio/xmms-sid
#проигрыватель sid файлов
/usr/ports/graphics/smpeg-xmms
#поддержка mpeg видео
/usr/ports/audio/xmms-sndfile
#libsndfile файлы
/usr/ports/audio/xmms-tfmx
#поддержка формата tfmx

Эти штепсели после инсталляции конфигурируют во вкладке Effect/General Plug-ins диалога Preferences:
/usr/ports/x11-clocks/xmms-alarm
#будильник
/usr/ports/audio/xmms-crystality
#ремастеринг mp3 звука
/usr/ports/audio/xmms-ladspa
#предоставляет ladspa интерфейс
/usr/ports/audio/xmms-liveice
#поддержка потока icecast
/usr/ports/audio/xmms-pipe
#управление плейером при помощи именованного канала
/usr/ports/audio/xmms-quix3dn
#эффекты объемного звука
/usr/ports/audio/xmms-sndstretch
#позволяет менять высоту или скорость проигрывания
/usr/ports/audio/xmms-volnorm
#выравниватель уровня сигнала


Эти штепсели после установки конфигурируют во вкладке Visualization Plug-ins диалога Preferences:
/usr/ports/graphics/xmms-blursk #размытый дисплей
/usr/ports/graphics/xmms-finespectrum
#спектрометр из тоненьких полосок
/usr/ports/graphics/xmms-gforce
#визуализатор музыки
/usr/ports/graphics/xmms-goom
#крутой визуализатор музыки
/usr/ports/graphics/xmms-infinity
#полноэкранный генератор визуальных эффектов
/usr/ports/graphics/xmms-jess
#удивительный визуализатор музыки
/usr/ports/graphics/xmms-paranormal
#анализатор спектра

На момент написания статьи все порты, имеющие отношение к xmms, отлично устанавливались, за исключением:
/usr/ports/graphics/xmms-avi - отмечен как неработоспособный, но ведутся работы по устранению проблем
/usr/ports/graphics/xmms-xvs - выдавал мне ошибку библиотеки libxml
Исходные тексты /usr/ports/misc/xosd больше недоступны
Я установила /usr/ports/graphics/xmms-iris, но при попытке его активации xmms падал
Установив и /usr/ports/graphics/xmms-fishmatic, и /usr/ports/audio/xmms-gdancer, я так и не смогла добиться ни показа рыбок, ни танцующих героев комиксов. Если у вас получится, сообщите мне пожалуйста, как это сделать, чтобы я смогла рассказать об этом в следующей статье
Наконец, я даже не стала пытаться установить /usr/ports/audio/xmms-kde, поскольку он предназначен для KDE2, а я использую KDE3. Тем более, что мне нравится добавлять ярлыки прямо в мою панель, не используя меню KDE.

Давайте совершим краткую экскурсию по xmms. Вместо повторения стандартной информации об использовании xmms, которая хорошо задокументирована на сайте программы (см. http://www.xmms.org), я дам вам несколько советов, которые помогут вам начать использовать xmms. Я буду исходить из предположения, что ваша звуковая карта и привод компакт-дисков установлены и работают корректно и FreeBSD может с ними взаимодействовать.

Начнем с аудио компакт-дисков. При помощи вашего оконного менеджера запустите xmms и нажмите "Ctrl+P", при этом должно открыться окно настройки параметров программы ("Preferences"). Вы увидите несколько различных вкладок для конфигурации штепселей, которые были описаны мною выше, и были установлены вами из коллекции портов.

Во вкладке "Audio I/O" выделите пункт "CD Audio Player", а затем кликните на кнопку "Configure". Теперь во вкладке "Device" убедитесь, что устройство проигрывателя установлено на /dev/acd0c, а каталог на /cdrom. Если вы хотите сконфигурировать поддержку работы с CDDB сервером, щелкните на вкладку "CD Info". CDDB серверы - это великая вещь, они содержат информацию о содержимом аудио компакт-дисков, типа названия диска, имени артиста, а так же наименования всех композиций. Однако использование этих серверов требует подключения к Интернету, когда вы в первый раз загружаете компакт-диск в привод, для того чтобы загрузить о нем информацию с сервера. Если вам нравится эта функция, щелкните "Use CDDB" и введите название вашего любимого сервера. Я использую freedb.freedb.org.

Сохраните сделанные настройки, вставьте компакт-диск в привод, и дождитесь, пока на нем погаснет лампочка. Затем кликните в xmms на значок выталкивания диска. Вместо того, чтобы отдать вам диск, xmms выдаст всплывающее окно, где вы сможете выбрать файлы для проигрывания. Идите в каталог /cdrom, там вы должны увидеть список всех композиций, записанных на диске. (Если список пуст, вы, вероятно, забыли поменять права доступа к файлу устройства /dev/acd0c.) Нажмите кнопку "Add all files in directory" (добавить все файлы, содержащиеся в каталоге). Если у вас включена поддержка работы с CDDB сервером и этот музыкальный диск оказывается в вашем приводе первый раз, потерпите - процесс загрузки сведений о диске из Интернета занимает одну-две минуты. После того, как файлы будут добавлены, нажмите "Close" - в плейлисте вы увидите названия выбранных композиций. Если плейлист не отображается, вызовите его нажав кнопку "PL". Если вам непонятны некоторые из пиктограмм xmms, то для того, чтобы ознакомиться со списком имеющихся функций, потратьте немного времени на чтение документации (см. http://www.xmms.org/docs/readme.php).

Xmms может проигрывать не только компакт-диски. У меня довольно специфические музыкальные пристрастия, а это означает, что компакт-диски, которые мне понравились, достаточно сложно приобрести. К счастью для меня, Интернет является великолепным источником для поиска новой музыки. Если бы не Интернет, то как бы иначе я узнала, что мне понравятся еврейское регги, ближневосточная попса, блюзы западной Индии, электронные ремиксы классической музыки и даже кое-что из готического рока? Свое свободное время я обычно трачу на поиск и прослушивание новых mp3, так что у меня всегда есть список компакт-дисков, который я беру с собой в музыкальный магазин.

Я использую Mozilla, и, поскольку у меня уже установлен plugger (см. предыдущую статью), когда я нахожу интересный mp3, для его прослушивания мне достаточно просто кликнуть на ссылку "play". Вы можете настроить Mozilla таким образом, чтобы для проигрывания mp3 использовалась xmms. Для этого в Mozilla откройте меню Edit -> Preferences -> Helper Applications -> New Type. Впишите в первые три поля строку "mp3", а в поле "Application to use" строку "/usr/X11R6/bin/xmms".

Для хранения загруженных из Интернета mp3-файлов, я создала в моем домашнем каталоге подкаталог "mp3s". Для того, чтобы прослушивать эти файлы в xmms, я нажимаю комбинацию клавиш "Shift+L", после чего в открывшемся диалоге делаю двойной щелчок на каталоге "mp3s".

Если вы установили штепсель "xmms-liveice", вы можете прослушивать Shoutcast-поток. Сходите на сайт http://www.shoutcast.com, отыщите что-нибудь интересное, и кликните на кнопку "Tune In!". Когда браузер спросит вас, что делать с файлом такого типа, выберите пункт "Open using an application", и в качестве приложения выберите "/usr/X11R6/bin/xmms". Когда вам надоест слушать, нажмите кнопку "Stop" на панели xmms. Если вам не нравится каждый раз указывать xmms в качестве обработчика для shoutcast-потока, откройте меню Edit -> Preferences -> Helper Applications -> New Type. Впишите какое-нибудь описание типа файла, в качестве расширения используйте "pls", тип MIME "audio/x-scpls" и в качестве используемого обработчика впишите "/usr/X11R6/bin/xmms". Теперь я смогу вообще никогда не пользоваться радио!

Большое количество радиостанций можно найти на сайте http://www.icecast.org. Большинство из этих станций используют для трансляции другой тип MIME-контента, так что вам опять придется вернуться в окошко Helper Applications. На этот раз расширение будет "mpu", а тип "audio/mpegurl". Мне меньше повезло с этим типом вещания: некоторые станции звучали отлично, а некоторые издавали только щелчки. Если вы знаете, как с этим бороться, напишите мне, и я включу рассказ об этом в следующую статью.

Если во время прослушивания музыки вы хотите смотреть на красивые визуальные эффекты, нажмите "Ctrl+P", при этом откроется окно настройки параметров "Preferences", а затем кликните там на пункте "Visualization Plug-ins". Выделите любой из установленных штепселей, а затем нажмите кнопку "Enable Plug-in". Больше всех мне нравится штепсель "xmms-jess", на втором месте "xmms-gloom". Если вам надоело глядеть на цветомузыку, нажмите на кнопку "Enable Plug-In" еще раз, при этом штепсель будет отключен. Я заметила, что xmms виснет, если я включаю одновременно более одного цветомузыкального штепселя.

Поскольку мы заговорили о видеоэффектах, давайте вспомним о скинах. При первом запуске xmms, в вашем домашнем каталоге, для хранения скинов, был создан подкаталог .xmms/Skins. Зайдите на http://www.xmms.org/skins.php, выберите понравившийся вам скин и загрузите его в каталог ~/.xmms/Skins. Для того, чтобы нацепить загруженный скин на xmms, нажмите "Alt+S", и выделите его в списке, при этом xmms немедленно поменяет свой облик.

Еще одну очень хорошую коллекцию скинов я обнаружила на сайте http://www.spacefem.com/xmms.shtml. Если вы сами начнете искать скины, то вы очень скоро обнаружите, что подавляющее большинство имеющихся в Интернете скинов предназначены для проигрывателя WinAmp. Не бойтесь, смело загружайте их в свой каталог ~/.xmms/Skins. Как будто по волшебству, они будут отлично работать и в xmms. Например я отыскала в Интернете популярный скин "mooamp" и теперь в моей xmms есть "короволайзер" (совершенно отвязный скин, между прочим - прим. переводчика). Пусть вас не испугают расширения у загружаемых скинов - в моем каталоге есть файлы с расширениями .tar.gz, zip, wsz и png, которые прекрасно вместе уживаются и работают. Так что, с легким сердцем потратьте время на исследование сайта http://winamp-skins.com (от редактора: сайт этот мертв, но поиск скинов для WinAmp даст обильный улов - А.Ф.).

Если вы установите штепсель "smpeg-xmms", то сможете смотреть mpeg-фильмы. Просто нажмите клавишу "l" ("Эл") и выберите файл с фильмом. Этот штепсель может быть настроен на показ фильма в окне, центрованном по экрану, в окне двойного размера, а также в полноэкранном режиме. Для того чтобы попробовать его в действии, сходите в Библиотеку Конгресса, там есть целый ряд фильмов познавательного характера (см. http://lcweb.loc.gov/rr/mopic/ndlmps.html).

Одной из моих излюбленных функций является будильник, который появляется при установке штепселя "xmms-alarm". Для того, чтобы задать время срабатывания будильника, нажмите "Ctrl+P", при этом откроется окно "Preferences", выберите там вкладку "Effect/General Plug-Ins", выделите "Alarm" и нажмите кнопку "Configure". Не устанавливайте громкость на 100%, если не хотите выпрыгнуть из кровати. Если вы не выберите список музыки в настройках штепселя, то вас разбудит какая-нибудь песня из основного плейлиста, выбранная наудачу. Для того, чтобы быть разбуженным с утра, просто убедитесь, что перед тем как лечь спать, вы запустили xmms.

Для начала работы с xmms этого вполне должно хватить. В следующей статье я расскажу о проигрывании DVD-дисков, RealPlayer'е и некоторых других программах, призванных расширить мультимедийные возможности вашего компьютера.

Обновлено: 12.03.2015