2002 г
Даже плавая в дерьме.
Тимур Шаов
Для прослушивания музыки во FreeBSD 5-й ветки необходимости в перекомпиляции ядра может и не быть - к ядру GENERIC прилагается комплект модулей для большинства распространенных аудиочипов. Список оных можно посмотреть в каталоге /boot/kernel
(если ядро после инсталляции системы не пересобиралось) или в /boot/kernel.old
(если эту процедуру уже успели проделать). Модули поддержки аудиоустройств имеют вид snd_*.ko
.
Среди всяких разных "*" можно увидеть такие чипы, как Ensoniq137X (на них основаны обычно карты, известные под именем Sound Blaster AWE128), Solo, Maestro и т.д. (включая, конечно же, SB8 и SB16). Есть модули и для поддержки встроенного звука Intel'овских и VIA'шных чипсетов (AC'97; правда, не знаю, как они относятся к мостам ICH4/5 последних i845 и i865/i875 - буду признателен за информацию по сему предмету), а также универсальный модуль для большинства PCI-карт. Полный список чипов, поддержка которых доступна в виде модулей, можно просмотреть в дереве исходников ядра:
$ ls /usr/src/sys/modules/sound/driver
Для версии 5.X вывод этой команды будет (исключая make-файлы) примерно следующим:
ad1816/
als4000/
cmi/
cs4281/
csa/
driver/
ds1/
emu10k1/
es137x/
ess/
fm801/
ich/
maestro/
maestro3/
mss/
neomagic/
sb16/
sb8/
sbc/
solo/
t4dwave/
uaudio/
via8233/
via82c686/
vibes/
Так что если нет желания пересобирать ядро, а желание слушать музыку, напротив, есть, достаточно подгрузить соответствующий модуль командой kldload
, например, для SBAWE128 это будет выглядеть так:
$ kldload /boot/kernel/snd_es137x.ko
Процесс загрузки модуля поддержки звука можно автоматизировать, отредактировав файл /boot/loader.conf
. Как именно - легко догадаться, просмотрев "эталонный" файл /boot/defaults/loader.conf
- точнее, его секцию Sound modules.
Однако, по моему скромному мнению, процесс перекомпиляции ядра все равно неизбежен при индивидуальной настройке FreeBSD. И потому не вижу причин, почему бы благородному дону (и тем более благородной донье) не встроить поддержку звука непосредственно в ядро. Тем более, что для большинства PCI-карт на распространенных аудиочипах для этого достаточно одной строки
device pcm
Некоторые сложности могут возникнуть при настройке старых, в том числе высококлассных, ISA-карт. Лично я с ними дела не имел, и потому собственными впечатлениями поделиться не могу. Однако этот вопрос очень подробно описан на странице Андрея Лаврентьева, к коей и предлагаю обратиться заинтересованным лицам.
Из сказанного ясно, что общение со звуком во FreeBSD на элементарном уровне не требует каких-либо хитроумных манипуляций с ALSA-драйверами, как в Linux. Возможно, правда, что и результат оказывается несколько хуже, но для не принадлежащих к числу записных меломанов - вполне удовлетворительный (то есть удовлетворяющим кондициям).
Что же касается средств для того, чтобы воспользоваться достижениями аудиостроительства, то есть звуковых плееров всякого рода, - их есть в портах FreeBSD. Причем - ничуть не меньше, чем в любом дистрибутиве Linux, в чем легко убедиться командой
$ /usr/ports/audio
в выводе которой можно увидеть все mpeg-плееры, от простых консольных mpg123
и mpg321
до xmms со всеми его наворотами, проигрыватели CD, средства их о-grab'ления и конвертации. Так что останавливаться на этом не буду, тем паче что в своей книжке я уделил этому вопросу, думается, должное внимание.
Однако за время, прошедшее с ее написания, изрядную популярность приобрел истинно свободный аудиоформат - OGG. Так вот, для работы с ним во FreeBSD можно обнаружить порт vorbis-tools
, включающий средства для для кодирования (oggenc
) и декодирования (например, в raw-формат, - oggdec
) ogg-файлов, получения информации об оных (ogginfo
) и редактирования комментариев (vorbiscomment
), расщепления записанного ogg-потока на отдельные части (vcut
) и, конечно же, воспроизведения ogg-музыки (ogg123
).
Последняя программа унаследовала от своего mpeg-прототипа не только имя, но и простоту использования: команда
$ ogg123 /path/*
воспроизведет подряд все ogg-файлы из указанного каталога, причем, в отличие от mpg123, рекурсивно включая и вложенные подкаталоги. Последнего можно избежать, задав аргумент команды в виде маски /path/*.ogg
.
Процесс получения ogg-файлов (коими Сеть пока не перегружена) столь же прост:
$ oggenc *.wav
Превратит все wav'ы текущего каталога в ogg'и. Впрочем, никто не запрещает задать имя входного и выходного файла явным образом. Разумеется, имеется вдоволь опций, задающих битрейт, уровень качества, вставку комментариев и т.д. Однако даже при умолчальных настройках качество получаемого аудио вполне нормальное.
Чего еще не хватает для счастья FreeBSD-юзеру? Ну конечно же, проигрывателя аудио в Real-формате. Но это - тема отдельного разговора.