Информационные технологииStfw.Ru 🔍

Звук во FreeBSD

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

Если вы еще не читали раздел руководства администратора, посвященный мультимедиа (см. 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/documentation.html).

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.html, выберите понравившийся вам скин и загрузите его в каталог ~/.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.

Если вы установите штепсель «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'е и некоторых других программах, призванных расширить мультимедийные возможности вашего компьютера.

Unix   Теги: Freebsd

Читать IT-новости в Telegram
Информационные технологии
Мы в соцсетях ✉