Руководство Gentoo Linux ALSA


Ссылка на оригинал: http://www.gentoo.org/doc/ru/alsa-guide.xml

С версии: 1.0

Обновлено: 1.2

1. Введение


Что такое ALSA?


ALSA, или Advanced Linux Sound Architecture — продвинутая звуковая архитектура Linux, позволяет работать аудио и MIDI (Musical Instrument Digital Interface — Цифровой интерфейс музыкальных инструментов) в операционной системе Linux. ALSA является основной звуковой подсистемой в ядрах 2.6, заменяя собой OSS (Open Sound System — Открытая звуковая система), которая использовалась в ядрах 2.4.

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



ALSA в Gentoo


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


2. Установка ALSA


Варианты


Предупреждение: Способы, описываемые ниже, являются взаимно исключающими. Вы не можете одновременно собрать ALSA в ядре и установить media-sound/alsa-driver. Это не получится.


Два варианта установки ALSA драйверов:

  1. Использовать ALSA драйверы, предоставляемые вашим ядром. Этот метод предпочтительный и рекомендуемый.

  2. Использовать пакет media-sound/alsa-driver.

Драйверы, предоставляемые ядром, могут немного отличаться от предоставляемых пакетом alsa-driver; возможности и исправления одного могут оказаться всё ещё не включёнными в другой. Разработчики ALSA осознают ситуацию, но эти два драйвера по существу являются отдельными ветвями проекта ALSA; они не идентичны. Вы должны понимать, что они могут по-разному функционировать, поэтому если один из них у вас не работает, попробуйте другой! Мы бегло рассмотрим оба варианта перед принятием окончательного решения.

Преимущества и недостатки использования ALSA драйверов, предоставляемых ядром:

ALSA в ядре за и против

+ Нет необходимости устанавливать ещё один пакет; драйверы включены в ядро

+ Единое решение, никаких повторных команд emerge

- Может немного отличаться от alsa-driver



А если вы выберете alsa-driver, то:


Драйверы ALSA за и против

+ Самые свежие драйверы от проекта ALSA

+ Удобно, если вы собираетесь разрабатывать драйверы для аудио устройств

- Каждая пересборка ядра требует повторной переустановки alsa-driver

- Определенные параметры конфигурации ядра дожны быть отключены



Итак...


Как сказано выше, отличия между драйверами из пакета alsa-driver и ALSA драйверами, поставляемыми с ядром, очень незначительны. Так как между ними нет большой разницы, сначала попробуйте ALSA драйвера, поставляемые ядром, так как их проще использовать. Перед тем как сообщить о любой проблеме, связанной со звуком, в Gentoo Bugzilla, пожалуйста, попробуйте её воспроизвести, используя alsa-driver, и создайте запрос об ошибке вне зависимости от результата.


Перед тем как вы продолжите



Какие драйверы использует ваша карта. В большинстве случаев звуковые карты (встроенные и подключаемые) основаны на PCI, и lspci поможет вам раскопать необходимую информацию. Пожалуйста, если вы ещё не установили lspci, установите командой emerge sys-apps/pciutils. Если у вас USB звуковая карта, вам может помочь lsusb из sys-apps/usbutils. Для карт ISA попробуйте sys-apps/isapnptools. Кроме того, следующие ресурсы могут помочь владельцам ISA звуковых карт:



Примечание: Ради простоты в оставшейся части руководства мы предположим, что у пользователя звуковая карта, основанная на PCI.

Теперь мы попробуем найти информацию о звуковой карте.



Теперь мы попробуем найти информацию о звуковой карте.


Листинг 2.1: Подробности звуковой карты

# lspci -v | grep -i audio

0000:00:0a.0 Multimedia audio controller: Creative Labs SB Live! EMU10k1 (rev 06)


Теперь мы знаем, что звуковая карта, установленная в компьютере, — Sound Blaster Live!, а производителем является Creative Labs. Зайдём на страницу с таблицой звуковых карт ALSA и выберем Creative Labs из списка. В результате вы попадёте на страницу, содержащую таблицу продуктов Creative Labs, из которой вы можете узнать, что SB Live! использует модуль emu10k1. Эта та информация, которая нам и нужна. Если вам интересна более подробная информация, то вы можете перейти по ссылке «Details» на страницу, посвящённую emu10k1.

Если вы намереваетесь использовать MIDI, то перед установкой любых пакетов ALSA необходимо добавить midi к USE-флагам в файле /etc/make.conf. Ниже в руководстве мы продемонстрируем, как настроить MIDI.


Использование ALSA драйверов, предоставляемых ядром



Если вам нравится идти по пути наименьшего сопротивления, то этот способ для вас.


Примечание: Начиная с выпуска 2005.0, Gentoo Linux в качестве основного ядра использует ядра ветки 2.6. Пожалуйста, удостоверьтесь, что у вас ядро ветки 2.6. Этот способ не применим для ядер ветки 2.4.



А теперь давайте сконфигурируем ядро так, чтобы включить в нём ALSA.


Важно: Пользователи genkernel должны запустить genkernel --menuconfig all и следовать инструкциям из раздела Параметры ядра для ALSA.


Листинг 2.2: Погружение в исходные коды

# cd /usr/src/linux

# make menuconfig


Примечание: В только что приведённом примере предполагалось, что символическая ссылка /usr/src/linux указывает на исходные коды используемого вами ядра. Пожалуйста, перед тем как продолжить, проверьте, что у вас так оно и есть.



Теперь рассмотрим часть параметров конфигурации ядра 2.6, которые гарантируют работоспособность ALSA с нашей звуковой картой.

Обратите внимание, что во всех примерах мы собираем ALSA модулями. Мы советуем вам поступать так же, так как в дальнейшем это позволит использовать alsaconf, упрощающую настройку звуковой карты. Пожалуйста, не пропустите раздел Настройка. Если вы всё же решаете не использовать модули, удостоверьтесь, что вы соответствующим образом изменили вашу конфигурацию.



Листинг 2.3: Параметры ядра для ALSA

Device Drivers  --->

Sound --->


(Это необходимо включить)

<M> Sound card support


(Убедитесь, что OSS отключена)

Open Sound System --->

< > Open Sound System (DEPRECATED)


(Вернитесь на шаг назад и войдите в раздел ALSA)

Advanced Linux Sound Architecture --->

<M> Advanced Linux Sound Architecture

(Выберите, если вам нужен MIDI sequencing и routing)

<M> Sequencer support

(Поддержка старых /dev/mixer* и /dev/dsp*. Рекомендуется.)

<M> OSS Mixer API

<M> OSS PCM (digital audio) API


(Теперь вы можете выбрать устройства, поддержка которых вам требуется.

Обычно в системе есть только одна звуковая карта. Если у вас их несколько,

включите поддержу для каждой.)


(Для тестирования и разработки, обычным пользователям они не требуются,

только если вы знаете, что делаете...)

Generic devices --->


(Для звуковых карт ISA)

ISA devices --->

(Если у вас Gravis, включите этот параметр)

<M> Gravis UltraSound Extreme


(Перейдите на один уровень назад и войдите в раздел PCI-устройств.

Большинство современных звуковых карт являются таковыми)

PCI devices --->

(Теперь выберем драйвер emu10k1 для нашей карты)

<M> Emu10k1 (SB Live!, Audigy, E-mu APS)

(Или для карты Intel)

<M> Intel/SiS/nVidia/AMD/ALi AC97 Controller

(А может у вас карта на чипсете VIA?)

<M> VIA 82C686A/B, 8233/8235 AC97 Controller


(Вернитесь на один уровень назад и, если у вас звуковая карта USB, включите)

USB Devices --->



Теперь параметры вашего ядра установлены, и вы можете пересобрать ядро. Поддержка ALSA для вашей карты будет доступной сразу, после того как вы загрузитесь с новым ядром. Чтобы использовать новое ядро, не забудьте обновить конфигурацию вашего загрузчика. Теперь, чтобы проверить, что всё работает как должно, переходите к разделу Утилиты ALSA.


Использование пакета драйверов ALSA



Итак, вы решили использовать пакет alsa-driver. Тогда начнём. Нужно выполнить несколько небольших действий для того, чтобы был скомпилирован только необходимый вашей аудио карте драйвер. Хотя это и не требуется, это сократит количество лишних драйверов, которые в противном случае были бы собраны.

Если вы не знаете, какие драйверы для звуковой карты вам могут понадобиться, ознакомьтесь с разделом, посвящённым lspci этого руководства. Как только вы узнаете имя драйвера (emu10k1 в нашем примере), добавьте переменную ALSA_CARDS в файл /etc/make.conf.




Листинг 2.4: Добавление ALSA_CARDS в make.conf

(Для одной звуковой карты)

ALSA_CARDS="emu10k1"

(Для нескольких карт разделите имена пробелами)

ALSA_CARDS="emu10k1 via82xx"



Если вы уже собирали своё ядро и хотите использовать alsa-driver, пожалуйста, удостоверьтесь в следующем, перед тем как продолжить, иначе alsa-driver, скорее всего, не установится. Следующий перечень поможет вам провести проверку.


Примечание: Пользователи genkernel могут продолжить с установки alsa-driver, так как конфигурация их обновлённого ядра по умолчанию соответствует нижеприведённой.


  1. CONFIG_SOUND включён. (Общая поддержка звука включена)

  2. CONFIG_SOUND_PRIME выключен. (Встроенная поддержка OSS отключена)

  3. CONFIG_SND выключен. (Встроенная поддержка ALSA отключена)

  4. Символическая ссылка /usr/src/linux указывает на то ядро, в котором ALSA будет работать.




Листинг 2.5: .config checks

(Проверяем, что символическая ссылка указывает на нужное ядро.)

# cd /usr/src/linux

# grep SOUND .config

(Первый пункт выполнен)

CONFIG_SOUND=y

(Второй пункт выполнен)

CONFIG_SOUND_PRIME is not set

# grep SND .config

(Третий пункт выполнен)

CONFIG_SND is not set



Теперь всё, что вам нужно сделать, это набрать магические слова... нет, не абракадабру.




Листинг 2.6: Установка alsa-driver

# emerge alsa-driver


Важно: Помните, что вам придётся выполнять emerge alsa-driver каждый раз после (пере)сборки ядра, так как предыдущие драйверы будут удалены. Чтобы упростить эту задачу, вы можете воспользоваться пакетом module-rebuild, который будет вести учёт всем пакетам с модулями ядра и по необходимости пересобирать их. Сначала, чтобы создать список пакетов, выполните module-rebuild populate, а затем после (пере)сборки ядра просто запускайте module-rebuild rebuild, и все внешние модули ядра будут пересобраны.



3. Настройка/тестирование ALSA


Утилиты ALSA


Пакет alsa-utils составляет неотъемлемую часть ALSA и содержит множество крайне полезных программ, в том числе и сценарий инициализации ALSA. Поэтому мы настоятельно советуем вам установить alsa-utils.


Листинг 3.1: Установка alsa-utils

# emerge alsa-utils


Примечание: Eсли вы включили поддержку ALSA в вашем ядре, а не собрали её в качестве модулей, пожалуйста, перейдите в раздел сценарий инициализации ALSA. Всё, что осталось сделать всем остальным, это настроить ALSA. Сделать это очень просто благодаря утилите, входящей в состав alsa-utils — alsaconf.



Настройка


Последние версии udev (>=udev-103) в некоторой степени предоставляют автоматическое конфигурирование вашей аудио карты на уровне ядра. По возможности старайтесь полагаться на автоматическую настройку и позвольте ядру настроить вашу звуковую карту. В противном случае, чтобы настроить карту, используйте alsaconf, как это показано ниже.


Примечание: Пожалуйста, завершите все программы, которые могут обратиться к звуковой карте во время работы alsaconf.


Чтобы настроить вашу звуковую карту просто наберите alsaconf в командной оболочке с правами root.


Листинг 3.2: Запуск alsaconf

# alsaconf



Вы увидите изящный управляемый с помощью меню интерфейс программы, которая автоматически исследует ваши устройства и попробует найти вашу звуковую карту. Вас попросят выбрать вашу звуковую карту из списка. Как только это будет сделано, вас спросят разрешения автоматически сделать необходимые изменения в /etc/modules.d/alsa. После этого программа изменит настройки громкости на оптимальный уровень, выполнит update-modules и запустит службу /etc/init.d/alsasound. Как только alsaconf завершит работу, вы сможете продолжить с настройки сценария инициализации ALSA.


Сценарий инициализации ALSA


Мы почти завершили настройку. Вне зависимости от выбранного вами способа установки ALSA, вам понадобится что-то, что будет загружать модули или инициализировать ALSA и восстанавливать настройки громкости при загрузке системы. Сценарий инициализации ALSA, называемый alsasound, сделает всё это для вас. Добавьте его в загрузочный уровень исполнения.


Листинг 3.3: Добавление ALSA в загрузочный уровень исполнения

# rc-update add alsasound boot

* alsasound added to runlevel boot

* rc-update complete.



Теперь проверьте файл /etc/conf.d/alsasound и убедитесь, что переменная SAVE_ON_STOP установлена в значение yes, тогда ваши настройки звука при выключении системы будут сохраняться.


Группа audio


Перед тем как начать проверку звука, необходимо сделать одну последнюю важную вещь. Главное правило в операционных системах *nix гласит: «не запускай ничего с правами root, если этого не требуется». И в данной ситуации это правило тоже применимо ;) Каким образом? Пожалуй, большую часть времени вы будете работать под учётной записью пользователя, при этом слушать музыку или иметь доступ к звуковой карте. Чтобы вы могли это делать, вы должны быть в группе audio. Тут то мы и добавим пользователей в эту группу, чтобы у них не было проблем с доступом к аудио устройствам. Мы воспользуемся gpasswd, так что вы должны иметь права root, чтобы сделать это.

Листинг 3.4: Добавление пользователей в группу audio

(Замените <имя_пользователя> на необходимое имя)

# gpasswd -a <имя_пользователя> audio

Adding user <имя_пользователя> to group audio



Проверка громкости!



Теперь все настройки и необходимые предпосылки выполнены, так что давайте заставим ALSA работать. Если вы запускали утилиту alsaconf, то можете пропустить этот шаг, так как alsaconf уже всё сделал за вас.


Листинг 3.5: Запуск сервиса

/etc/init.d/alsasound start



Теперь мы позаботились обо всём, что может быть необходимым, нам нужно проверить громкость, так как в определённых случаях звук выключен. Для этого мы воспользуемся alsamixer.


Листинг 3.6: Запуск alsamixer

(Откройте в терминале. Будут отображены только необходимые настройки)

# alsamixer


Важно: Если у вас проблемы с запуском alsamixer и вы получаете ошибки, подобные этой: «alsamixer: function snd_ctl_open failed for default: No such file or directory», то, скорее всего, проблема в том, как демон udev инициализировал устройства. Выполните killall udevd; udevstart для перезагрузки устройств в /dev и попробуйте снова alsamixer. Это должно решить проблему.



Вот так может выглядеть микшер ALSA при первом запуске. Обратите внимание, что уровни каналов Master и PCM занижены и что под ними буквы MM. Это означает, что они выключены. Если вы попробуете что-нибудь проиграть, в то время пока alsamixer в таком состоянии, то вы ничего не услышите из ваших динамиков.


Для начала включим каналы и установим необходимые уровни громкости.


Предупреждение: Оба канала Master и PCM должны быть включены и установлены в слышимый уровень громкости, если вы хотите услышать что-нибудь из ваших динамиков.


Примечание: Будьте осторожны при установке значений для Bass и Treble. Обычно для обоих оптимально значение 50. Слишком высокие значения Bass могут вызвать дребезжание неспособных воспроизводить глубокие басы динамиков.




После того как вы всё сделаете, ваш микшер ALSA должен выглядеть, так, как это показано ниже. Заметьте, что вместо MM стоит 00 и уровни громкости в оптимальном значении.



Проверка звука!


Наконец-то. Какие-нибудь звуки. Если всё прошло успешно, то теперь вы сможете услышать музыку. Быстрый способ проверить — это воспользоваться консольной командой, наподобие media-sound/madplay. Вы также можете использовать что-нибудь более известное, например, mpg123. Если вы поклонник формата OGG, используйте программу ogg123 из пакета media-sound/vorbis-tools. Используйте любой удобный для вас плеер. Как всегда, emerge — всё что вам нужно.


Листинг 3.7: Получение программ

(Установка необходимых приложений)

# emerge madplay mpg123

(Для проигрывания ogg-файлов)

# emerge vorbis-tools



А теперь проиграем ваш любимый саундтрек...


Листинг 3.8: Проигрывание музыки

# madplay -v /mnt/shyam/Music/Paul\ Oakenfold\ -\ Dread\ Rock.mp3

MPEG Audio Decoder 0.15.2 (beta) - Copyright (C) 2000-2004 Robert Leslie et al.

Title: Dread Rock

Artist: Paul Oakenfold

Album: Matrix Reloaded

Year: 2003

Genre: Soundtrack

Soundtrack

00:04:19 Layer III, 160 kbps, 44100 Hz, joint stereo (MS), no CRC


# ogg123 Paul\ Oakenfold\ -\ Dread\ Rock.ogg

Audio Device: Advanced Linux Sound Architecture (ALSA) output


Playing: Paul Oakenfold - Dread Rock.ogg

Ogg Vorbis stream: 2 channel, 44100 Hz

Genre: Soundtrack

Transcoded: mp3;160

Title: Dread Rock

Artist: Paul Oakenfold

Date: 2003

Album: Matrix Reloaded

Time: 00:11.31 [04:28.75] of 04:40.06 (200.6 kbps) Output Buffer 96.9%



ALSA и USE


Теперь, для того чтобы приложения, поддерживающие ALSA, были собраны с поддержкой оной, вам нужно добавить USE-флаг alsa в файл /etc/make.conf. Некоторые архитектуры, например, x86 и amd64, включают этот флаг по умолчанию.


Проблемы?


Если по каким-либо причинам вы не слышите звука, перво-наперво проверьте настройки alsamixer. 80% всех проблем заключаются в выключенных каналах или низкой громкости. Кроме того, проверьте звуковой апплет вашего оконного менеджера и удостоверьтесь, что громкости каналов установлены на слышимом уровне.

/proc — ваш друг. В этом случае, /proc/asound — ваш лучший друг. Мы бегло просмотрим, сколько полезной информации доступно нам здесь.



Листинг 3.9: Развлечение с /proc/asound

(Прежде всего, если /proc/asound/cards отображает вашу карту, то ALSA

распознала вашу звуковую карту.)

# cat /proc/asound/cards

0 [Live ]: EMU10K1 - Sound Blaster Live!

Sound Blaster Live! (rev.6, serial:0x80271102) at 0xb800, irq 11


(Следующая команда оторбразит текущую версию ALSA)

# cat /proc/asound/version

Advanced Linux Sound Architecture Driver Version 1.0.8 (Thu Jan 13 09:39:32 2005 UTC).


(Подробности эмуляции OSS в ALSA)

# cat /proc/asound/oss/sndstat

Sound Driver:3.8.1a-980706 (ALSA v1.0.8 emulation code)

Kernel: Linux airwolf.zion 2.6.11ac1 #2 Wed May 4 00:35:08 IST 2005 i686

Config options: 0


Installed drivers:

Type 10: ALSA emulation


Card config:

Sound Blaster Live! (rev.6, serial:0x80271102) at 0xb800, irq 11


Audio devices:

0: EMU10K1 (DUPLEX)


Synth devices: NOT ENABLED IN CONFIG


Midi devices:

0: EMU10K1 MPU-401 (UART)


Timers:

7: system timer


Mixers:



Другой очень распространённой проблемой среди пользователей является странная ошибка «Unknown symbol in module» («Неизвестный символ в модуле»). Пример её появления показан ниже.


Листинг 3.10: Ошибка: неизвестный символ в модуле

# /etc/init.d/alsasound start

* Loading ALSA modules ...

* Loading: snd-card-0 ... [ ok ]

* Loading: snd-pcm-oss ...

WARNING: Error inserting snd_mixer_oss

(/lib/modules/2.6.12-gentoo-r6/kernel/sound/core/oss/snd-mixer-oss.ko): Unknown

symbol in module, or unknown parameter (see dmesg) FATAL: Error inserting

snd_pcm_oss

(/lib/modules/2.6.12-gentoo-r6/kernel/sound/core/oss/snd-pcm-oss.ko): Unknown

symbol in module, or unknown parameter (see dmesg)

[ !! ]

* Loading: snd-mixer-oss ...

FATAL: Error inserting snd_mixer_oss

(/lib/modules/2.6.12-gentoo-r6/kernel/sound/core/oss/snd-mixer-oss.ko): Unknown

symbol in module, or unknown parameter (see dmesg)

[ !! ]

* Loading: snd-seq ... [ ok ]

* Loading: snd-emu10k1-synth ... [ ok ]

* Loading: snd-seq-midi ... [ ok ]

* Restoring Mixer Levels ... [ ok ]


И если, как советуют, просмотреть вывод dmesg, то, скорее всего, можно увидеть следующее:


Листинг 3.11: Вывод dmesg

(Показаны только относящиеся к делу части вывода)

# dmesg | less

ACPI: PCI Interrupt 0000:02:06.0[A] -> Link [APC3] -> GSI 18 (level, low) -> IRQ 209

snd_mixer_oss: Unknown symbol snd_unregister_oss_device

snd_mixer_oss: Unknown symbol snd_register_oss_device

snd_mixer_oss: Unknown symbol snd_mixer_oss_notify_callback

snd_mixer_oss: Unknown symbol snd_oss_info_register

snd_pcm_oss: Unknown symbol snd_unregister_oss_device

snd_pcm_oss: Unknown symbol snd_register_oss_device

snd_pcm_oss: Unknown symbol snd_mixer_oss_ioctl_card

snd_pcm_oss: Unknown symbol snd_oss_info_register

snd_mixer_oss: Unknown symbol snd_unregister_oss_device

snd_mixer_oss: Unknown symbol snd_register_oss_device

snd_mixer_oss: Unknown symbol snd_mixer_oss_notify_callback

snd_mixer_oss: Unknown symbol snd_oss_info_register




Эта проблема вызвана переключением с alsa-driver на драйверы, предоставляемые ядром, потому что когда вы удаляете alsa-driver, то файлы модулей сохраняются системой защиты конфигурации. И поэтому, когда вы переходите на встроенные в ядро драйверы, попытка modprobe выдаст вам смесь модулей из alsa-driver и встоенных в ядро, вызывая приведённые выше ошибки.

Решение очень простое. Удалите вызывающий проблемы каталог после удаления alsa-driver. Проверьте, что удаляете модули правильной, но не текущей версии ядра!



Листинг 3.12: Удаление модулей alsa-driver

# rm -rf /lib/modules/$(uname -r)/alsa-driver



Другой причиной подобных сообщений может являться файл в /etc/modules.d, содержащий параметр device_mode, в то время как он не требуется. Проверьте, так ли это, и выясните, какой файл является источником проблем.


Листинг 3.13: Подтверждение проблемы и поиск device_mode

(Проверим вывод dmesg для идентификации проблемы)

# dmesg | grep device_mode

snd: Unknown parameter `device_mode'

(И теперь найдём источник проблемы)

# grep device_mode /etc/modules.d/*



Обычно это файл с именем alsa, в котором присутствует строка options snd device_mode=0666. Удалите эту строку и перезапустите службу alsasound. Это должно решить проблему.


4. Другие возможности ALSA


Настройка поддержки MIDI


Сначала проверьте, что у вас включён USE-флаг midi в файле /etc/make.conf. Если вы до сих пор этого не сделали, то сделайте это сейчас. Помимо этого вам потребуется пересобрать все пакеты ALSA, использующие флаг midi: alsa-lib, alsa-utils и alsa-driver.

Если ваша карта имеет встроенный MIDI синтезатор и вы хотите слушать *.mid файлы, вам придётся установить пакет awesfx, содержащий основной набор программ для управления драйвером AWE32. Сначала вам надо установить его. Если у вас нет синтезатора, вы можете использовать виртуальный. Обратитесь к разделу виртуальные синтезаторы для дополнительной информации.


Листинг 4.1: Установка awesfx

# emerge awesfx


Примечание: Вам понадобится скопировать файлы банка звуков (SoundFont: SF2) с компакт-диска с драйверами для вашей звуковой карты или установленные в Windows в каталог /usr/share/sounds/sf2/. Например, файл банка звуков для карты Creative SBLive! может называться 8MBGMSFX.SF2.



После копирования файлов банка звуков мы сможем проигрывать midi-файлы. Также, для того чтобы банк звуков загружался каждый раз при загрузке системы, вы можете добавить команду asfxload в /etc/conf.d/local.start.


Примечание: Использованные ниже пути, начинающиеся с /mnt, не применимы для вашего компьютера. Они являются примерами. Пожалуйста, будьте осторожны при изменении путей на соответствующие вашей системе.



Листинг 4.2: Загрузка сэмплов

(Сначала копируем файл с банком звуков)

# cp /mnt/win2k/Program\ Files/CreativeSBLive2k/SFBank/8MBGMSFX.SF2 /usr/share/sounds/sf2/

(Или берём его с компакт-диска SoundBlaster)

# cp /mnt/cdrom/AUDIO/ENGLISH/SFBANK/8MBGMSFX.SF2 /usr/share/sounds/sf2/

(Загружаем определённый банк звуков)

# asfxload /usr/share/sounds/sf2/8MBGMSFX.SF2


Теперь вы можете проигрывать midi-файлы, используя программу, подобную aplaymidi. Запустите aplaymidi -l, чтобы получить список доступных портов, а затем задействуйте один из них для проигрывания файла.


Листинг 4.3: Проигрывание MIDI

(Проверка открытых портов)

# aplaymidi -l

Port Client name Port name

64:0 EMU10K1 MPU-401 (UART) EMU10K1 MPU-401 (UART)

65:0 Emu10k1 WaveTable Emu10k1 Port 0

65:1 Emu10k1 WaveTable Emu10k1 Port 1

65:2 Emu10k1 WaveTable Emu10k1 Port 2

65:3 Emu10k1 WaveTable Emu10k1 Port 3

(Выбираем порт и проигрываем mid-файл)

# aplaymidi --port=65:0 /mnt/shyam/music/midi/mi2.mid




Виртуальные синтезаторы


Если у вашей карты отсутствует встроенный синтезатор, вы можете использовать виртуальный, например, timidity++. Установка происходит на одном дыхании.


Листинг 4.4: Установка timidity++

# emerge timidity++



Чтобы timidity воспроизводил звуки, ему нужен набор сэмплов (или банк звуков). К счастью, вместе с пакетом устанавливаются несколько банков звуков. Есть ещё несколько пакетов с банками звуков в Portage, например, timidity-freepats и timidity-eawpatches. Вы можете установить несколько банков звуков, а также можете разместить собственный банк звуков в каталог /usr/share/timidity/. Для переключения timidity между разными банками звуков используйте eselect.

Листинг 4.5: Изменение конфигураций

# eselect timidity list

# eselect timidity set eawpatches



Не забудьте добавить timidity в основной уровень исполнения.


Листинг 4.6: Добавление timidity в основной уровень исполнения

# rc-update add timidity default

# /etc/init.d/timidity start



Теперь вы можете попробовать проиграть MIDI файлы.


Утилиты и Firmware


Для некоторых звуковых карт могут быть полезны утилиты из пакетов alsa-tools и alsa-firmware. Вы можете установить любой из этих пакетов, просто запустив emerge.

Листинг 4.7: Установка утилит ALSA

# emerge alsa-tools


Несколько звуковых карт

Вы можете использовать больше одной звуковой карты, при условии что вы собрали ALSA как модули ядра (или из пакета alsa-driver). Сначала в файле /etc/modules.d/alsa вам следует лишь указать, какая из карт должна быть запущена первой. В этом файле карты идентифицируются по именам своих драйверов. 0 означает первую карту, 1 — вторую, и так далее. Вот пример для системы, в которой присутствуют две звуковые карты.

Листинг 4.8: Две карты в файле /etc/modules.d/alsa

options snd-emu10k1 index=0

options snd-via82xx index=1



Или если у вас две карты, использующие один и тот же драйвер, то их следует указать на одной строке, разделяя цифры запятой. Ниже приведён пример системы, в которой установлено три звуковые карты, две из которых являются картами Intel High Definition Audio.

Листинг 4.9: Несколько звуковых карт в /etc/modules.d/alsa

options snd-ymfpci index=0

options snd-hda-intel index=1,2





Модули расширения

Для расширения возможностей ALSA вы можете установить дополнительные расширения. Пакет alsa-plugins является собранием полезных модулей расширения, который включает: модуль вывода PulseAudio, конвертер частоты дискретизации, jack (аудио сервер с малым временем задержки) и кодек, позволяющий вам выводить шестиканальный звук через цифровой S/PDIF-вывод (оптический или коаксиальный). Вы можете выбрать те расширения, которые вы хотите установить, добавив соответствующие USE-флаги в /etc/portage/package.use.

Листинг 4.10: Установка alsa-plugins

# emerge -avt alsa-plugins



Огромное спасибо вам всем...

Всем, кто принимал участие в написании ранних версий руководства ALSA в Gentoo: Vincent Verleye, Grant Goodyear, Arcady Genkin, Jeremy Huddleston, John P. Davis, Sven Vermeulen, Benny Chuang, Tiemo Kieft и Erwin. А также Dr][aM за перевод ранней версии руководства на русский язык.

Ссылки