Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Мини-HOWTO: Sound Blaster AWE 32/64

Marcus Brinkmann

Marcus.Brinkmann@ruhr-uni-bochum.de

Перевод: Станислав Рогин, SWSoft Pte Ltd.

версия 1.2, 11 января 1998

В этом документе описывается установка и настройка звуковой карты Sound Blaster 32 (SB AWE 32, SB AWE 64) фирмы Creative Labs на Linux-системе, с использованием Расширения Звукового Драйвера AWE автора Takashi Iwai. Он также описывает некоторые специальные утилиты и проигрыватели для SB серии AWE. Документ написан для дистрибутива Debian GNU/Linux, но также должно работать и на всех других дистрибутивах Linux.


Содержание
1. Введение
1.1. Благодарности
1.2. История изменений документа
1.3. Новые версии этого документа
1.4. Отзывы
1.5. Distribution Policy
1.6. Авторские права
2. Перед началом работы
2.1. Введение
2.2. Некоторые общие замечания о картах SB AWE
2.3. Некоторые общие замечания о Plug and Play картах
2.4. Некоторые общие замечания о загружаемых модулях ядра
2.5. Некоторые общие замечания о звуковом драйвере ядра
3. Как установить поддержку звуковых карт AWE
3.1. Что вам понадобится
3.2. Начало работы
3.3. Сборка ядра
3.4. Перезагрузка
4. Проверяем драйвер звука
4.1. /proc/devices, /dev/sndstat
4.2. Вывод - прямое (Raw) аудио-устройство
4.3. Вывод - Синтезатор OPL-2/OPL-3
4.4. Вывод - Синтезатор Wave Table
4.5. Микширование
4.6. Ввод - оцифровка с помощью прямого аудио-устройства
4.7. Порт MIDI
5. Программное обеспечение драйвера AWE
5.1. sfxload
5.2. drvmidi
6. Приложение
6.1. Дополнительная информация
6.2. Источники
6.3. Пример isapnp.conf

1. Введение

В этом документе описывается установка и настройка звуковой карты Sound Blaster. Здесь приведена полная информация о том, как извлечь максимум из вашего Sound Blaster 32 или лучше, включая синтезатор Wave Table. Этот документ описывает все звуковые карты SB от SB 32 и выше.

Серия звуковых карт Sound Blaster хорошо известна в сообществах DOS и Windows, и многие пользователи Linux тоже хотели бы использовать звуковые карты в своей работе. К сожалению, Creative Labs предоставляет драйвера только для Windows и DOS, поэтому не очень просто установить и использовать SB-карту в Linux. Этот документ пытается описать, как вы можете использовать возможности карт серии SB AWE под управлением Linux-а.


1.1. Благодарности

Этот документ содержит информацию, которую я почерпнул из AWE Driver FAQ и ISA PnP FAQ. Смотрите раздел "Источники", чтобы узнать об авторе и местоположении этого документа. Благодаря этим авторам, поддержка SB AWE стала возможной.

Большое количество очень полезной работы проведено Hannu Savolainen, который разработал драйвер звука, встроенный в ядро Linux. Большое спасибо!

Я хочу также поблагодарить Nicola Bernardelli за проверку вещей, касающихся AWE64. Без него многие ошибки так и остались бы не найденными.

Большое спасибо пакету SGML Tools, этот документ доступен в несколькоих форматах, и все они сгенерированы из общего исходного файла.


1.2. История изменений документа

Версия 1.0

Изначальная версия

Версия 1.1

Исправлены синтаксические ошибки (спасибо, Curt!), добавлены требования версии isapnp, теперь доступной через sunsite и большинство его зеркал

Версия 1.2

Доступна версия на французском!, небольшие изменения, исправлены синтаксические ошибки (спасибо программе ispell)


1.3. Новые версии этого документа

Последняя версия этого документа может быть найдена на моей Домашней Страничке, под именем Sound Blaster AWE HOWTO.

Новые версии этого документа будут загружаться на различные анонимные ftp-сервера, содержащих подобную информацию, включая ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/mini.

Гипертекстовые версии этого и других Linux HOWTO доступны на большом количестве WWW-сайтов, включая http://sunsite.unc.edu/LDP/. Most Linux CD-ROM distributions include the HOWTOs, often under the /usr/doc.

Спасибо Arnaud Launay zoro@lsol.tm.fr, за французскую версию этого документа! Последнюю версию этого документа можно найти через http или anonymous ftp.

Если вы переведете этот документ на другой язык, дайте мне знать, и я включу ссылку на это здесь.


1.4. Отзывы

Я возлагаю на вас, читатели, обязанность сделать этот документ полезным. Если у вас есть предложения, поправки или комментарии, посылайте их мне по адресу Marcus.Brinkmann@ruhr-uni-bochum.de, и я попытаюся вставить их в следующую версию.

Я буду особенно рад информации о стартовых процедурах (загрузочных скриптах и т.п.) других знаменитых дистрибутивов Linux, например Red Hat или SuSE Linux.

Если вы опибликуете этот документ на CD-ROM или на бумажном носителе, подарочный экземпляр тоже будет воспринят с радостью. Пишите мне на мой почтовый адрес. Также внесите пожертвование Проекту Документирования Linux (Linux Documentation Project) для поддержки бесплатной документации к Linux. Свяжитесь с координатором Linux HOWTO, Tim Bynum linux-howto@sunsite.unc.edu, за дополнительной информацией.


1.5. Distribution Policy

Copyright 1997 Marcus Brinkmann.

This HOWTO is free documentation; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This document is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See the GNU General Public License for more details.

You can obtain a copy of the GNU General Public License by writing to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.


1.6. Авторские права

Авторские права на русский перевод этого текста принадлежат © 2000 SWSoft Pte Ltd. Все права зарезервированы.

Этот документ является частью проекта Linux HOWTO.

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

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

Мы бы хотели распространить эту информацию по всем возможным каналам. Но при этом сохранить авторские права и быть уведомленными о всех планах распространения HOWTO. Если у вас возникли вопросы, пожалуйста, обратитесь к координатору проекта Linux HOWTO по электронной почте: или к координатору русского перевода Linux HOWTO компании SWSoft Pte Ltd. по адресу


2. Перед началом работы

2.1. Введение

Этот документ пытается помочь вам, установить и использовать Sound Blaster AWE 32 или Sound Blaster AWE 64 фирмы Creative Labs в вашей Linux-системе. Здесь описываются процедуры, проверенные для системы Debian GNU/Linux на платформе Intel i586, но это должно работать со всеми другими дистрибутивами Linux, равно как и со всеми платформами и звуковыми картами, поддерживаемыми драйвером звука Linux (различия будут упоминаться там, где они есть).

Прочтите внимательно "HOWTO: Звук в Linux" (Linux Sound HOWTO) (см. раздел "Дополнительная информация"). Я рассматриваю свой документ, как дополнение к этому HOWTO, и очень часто более полную информацию вы можете найти там, особенно то, что я мог упустить.


2.2. Некоторые общие замечания о картах SB AWE

Звуковая карта SB AWE 32 представляет из себя: прямое (raw) аудио-устройство, стандартный OPL-2/OPL-3 синтезатор, MIDI-порт MPU-401 и 32-голосный EMU 8000 WaveTable-синтезатор (для разъяснения значений этих и других терминов смотрите "HOWTO: Звук в Linux"). Одна из целей этого документа - помочь вам настроить нормальную работу всех этих функций.

В карту SB AWE 64 встроены все функции SB AWE 32 и дополнительный синтезатор Wave Guide, которым так гордится Creative Labs. Проблема для пользователей Linux состоит в том, что дополнительные 32 голоса генерируются программно и выводятся через прямые аудио устройства. Но, поскольку фирма Creative Labs не видит в Linux рынка сбыта драйверов, драйвер звука для синтезатора Wave Guide существует только для Windows 3.1 и Windows 95.

Учитывая это, с точки зрения пользователя Linux, карты SB AWE 32 и SB AWE 64 почти идентичны. С этого момента я буду упоминать только SB AWE вообще, и буду лишь упоминать о различиях, когда они возникают.


2.3. Некоторые общие замечания о Plug and Play картах

Многие современные карты на платформе Intel являются так называемыми ISA PnP картами, где PnP - это аббревиатура к сочетанию "Plug and Play" (Включи и работай). Это означает, что карта должна быть настроена операционной системой, и это должно производиться программой инициализации во время загрузки системы. В общем случае, существует как минимум три способа сделать это:

  1. У вас есть PnP Bios, что означает, что ваш BIOS осведомлен о возможном наличии PnP-карт и может их отконфигурировать. Если вы думаете, что можете использовать все функции вашего SB AWE PnP только потому, что у вас PnP Bios, то тут вам не повезло. Даже если BIOS заявляет, что поддерживает PnP карты, то он всего лишь настраивает набор портов и адресов, используемых картой. Вы, возможно, сможете играть прямой (raw) звук, но , например, не сможете воспользоваться MIDI-музыкой. Поэтому PnP BIOS не подходит для наших целей.

  2. У вас есть операционная система, поддерживающая PnP карты. Текущее стабильное ядро Linux версий 2.0.x - это не такая система, поэтому нам придется подождать будущих релизов ядра, которые будут поддерживать PnP устройства.

  3. У вас есть специальная программа, запускаемая в процессе загрузки системы, которая инициализирует ваши PnP- карты. Это как раз тот способ, который мы будем использовать.

Наиболее часто используемой программой, предназначенной для инициализации PnP карт под Linux, является пакет "isapnptools" (см. раздел "Источники" и "Начало работы"). Этот пакет обеспечивает предсказуемый способ инициализации всех ISA PnP карт на вашей машине, а не только звуковых.


2.4. Некоторые общие замечания о загружаемых модулях ядра

Некоторые драйвера устройств могут быть построены в виде модулей, вместо встраивания их внутрь ядра. Вы можете найти дополнительную информацию о модулях в "HOWTO:Ядро" (Kernel HOWTO) и "HOWTO:Модули" (Module HOWTO) (см. раздел "Дополнительная информация").

Если у вас PnP карта, то установите поддержку звука в виде загружаемого модуля ядра. Это означает, что нельзя встраивать драйвер звука в ядро, вам, вместо этого, необходимо собрать этот драйвер в виде модуля, чтобы он мог загружаться в систему уже после загрузки ядра. Это необходимо по той причине, что ядро загружается до конфигурирования ваших ISA PnP карт, а ваш драйвер звука должен быть загружен после конфигурирования ISA PnP карт.

Модуль драйвера звука может быть загружен вручную командами insmod sound или modprobe -a sound или в соответствующем загрузочном скрипте вашего Linux-а (в Debian достаточно добавить строку sound в файл /etc/modules). Другой вариант - это запустить kerneld, демон (daemon), который устанавливает и выгружает модули ядра по необходимости.

Заметьте однако, что kerneld - это не лучшее решение для модуля драйвера звука SB AWE, потому что загрузка модуля в ядро занимает некоторое время, особенно, если вы хотите использовать WaveTable-синтезатор и загрузить в него большие звуковые банки (Sound Font banks), что придется делать каждый раз после установки модуля. По той причине, что kerneld удаляет неиспользуемые модули через одну минуту, то, наверное, правильнее установить модуль звука вручную или в процессе загрузки. Заметьте, что ручная установка модуля или его установка в процессе загрузки предохранит этот модуль от выгрузки kerneld. Кстати: вы можете вручную загрузить модуль драйвера звука и в то же время использовать kerneld. Эти два метода не конфликтуют, и kerneld не будет обращать внимания на модуль драйвера звука.

Это особенно полезно, когда настройки вашего микшера изменяются после удаления и переустановки модуля. Решение этой проблемы приведено разделе "Микширование" (там описано, как можно автоматически запускать микшер после загрузки модуля драйвера звука). Однако, загрузка модуля демоном kerneld, загрузка звуковых банков и запуск вашего микшера занимает длительное время, и по этой и по некоторым другим причинам все-таки лучше устанавливать модуль звука в процессе загрузки, и, таким образом, не давать kerneld его выгрузить.


2.5. Некоторые общие замечания о звуковом драйвере ядра

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

Как вы уже наверно поняли, придется пересобирать ядро. Я дам необходимые подсказки по этому поводу немного позднее. А теперь давайте поговорим о поддержке звука в исходных текстах ядра. Ядро поставляется с бесплатной (усеченной) версией звукового драйвера OSS (USS). Текущая версия этого драйвера (3.5.4) не полностью поддерживает SB AWE, но SB 16 - это часть AWE. Поэтому вам будут доступны прямое аудио-устройство и OPL-2/OPL-3 синтезатор, если вы используете этот драйвер, но вам будет недоступна MIDI-музыка, использующая WaveTable-синтезатор.

Если вы хотите использовать WaveTable-устройство, то купите коммерческий драйвер звука у компании 4Front Technologies (кто-нибудь, подтвердите, что их драйвер поддерживает AWE), или исправьте ядро патчем Звукового Драйвера AWE 32 автора Takashi Iwai. Первый не обозревается в этом документе, я же предполагаю, что вы будете использовать второй.

Звуковой Драйвер AWE32 (см. раздел "Источники") опубликован в соответствии с Лицензией GNU и поставляется с набором утилит, использующих EMU 8000 синтезатор карт SB AWE.

Программа awedrv также включена в новые исходные тексты ядер (начиная с некоторых версий ядра 2.1.x, но, возможно, когда вы захотите обновить исходные текста ядра, они уже немного устареют).


3. Как установить поддержку звуковых карт AWE

3.1. Что вам понадобится

Ниже приведен список того, что необходимо для установки поддержки SB AWE под Linux:

  • работающая Linux-система (например, дистрибутив Debian GNU/Linux),

  • SB AWE 32 или совместимая карта (например. SB32, SB32 PnP, SB AWE64, ...),

  • исходные тексты ядра Linux, включая драйвер звука OSS/Free (обычно включен в поставку, прочтите /usr/src/Linux/drivers/sound/Readme),

  • Звуковой Драйвер AWE 32.

Если у вас PnP-карта, вам также понадобится:

  • пакет утилит isapnptools.

Смотрите раздел "Источники", в котором описано, где можно найти эти программы.

Если у вас система Debian GNU/Linux - это означает, что нужны пакеты kernel-source-<версия>, awe-drv и, возможно, пакет isapnptools. Вы, наверное, также захотите установить другие awe-* пакеты, хотя они не так и важны для установки. Я настойчиво рекомендую установку пакета kernel-package для более простой компиляции и установки ядра.


3.2. Начало работы

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

Следующим шагом будет настройка инициализации карты в процессе загрузки (только если у вас PnP-карта). Следуйте документации в исходных текстах, соберите и установите пакет isapnptools (или используйте уже собранный пакет дистрибутива Debian), и, затем, наберите

# pnpdump > /etc/isapnp.conf

будучи root-ом. Эта команда сгенерирует нормальный конфигурационный файл для ваших PnP-карт, но с закомментированными устройствами. Аккуратно отредактируйте этот файл, сравнивая значения номеров DMA-каналов, базовых значений портов ввода-вывода и номера IRQ с соответствующими значениями под DOS или Windows, если это возможно (в Windows'95, изучите ресурсы, выделенные карте в пункте resources (ресурсы) в device manager) ("Свойства:Система")). Если у вас возникли проблемы, еще раз подробно прочтите документацию к пакету isapnptools.

Предостережение

ВНИМАНИЕ: isapnptools часто не могут правильно определить все три порта ввода-вывода устройства WaveTable карты SB AWE. Пожалуйста, сравните строку WaveTable в вашем файле isapnp.conf с тем, что приведено в примере в приложении к этому HOWTO. Настройте базы портов ввода-вывода, если это необходимо.

Предостережение

ВНИМАНИЕ: В соответствии с isapnp-faq, isapnp иногда неправильно программирует логический номер устройства. Если вы встретите сообщения об ошибках типа:

Error occurred executing request 'LD 2' on or around line...
Во время исполнения запроса 'LD 2' возникла ошибка в строке...

попробуйте добавить строку (VERIFYLD N) в начале файла isapnp.conf. Вам придется использовать версию 1.10 или новее, чтобы этот ключ сработал. Если у вас нет возможности использовать версию 1.10 или новее, вы также можете ПРОПИСАТЬ логический номер устройства напрямую. Читайте isapnp-faq для более полной информации по этому вопросу. Если и это не заработает, свяжитесь со мной (и ребятами, занимающимися isapnp, им тоже будет интересно, я думаю).

Предостережение

ВНИМАНИЕ: Убедитесь, что в последней строке написана команда (WAITFORKEY), которая иногда опускается старыми версиями pnpdump.

Пример файла isapnp.conf для одной PnP-карты (звуковой карты) вы можете найти в приложении к этому документу (см.раздел "Пример isapnp.conf").

Если у вас Debian-система, то никаких дополнительных настроек не потребуется. isapnp будет запускаться в процессе загрузки в файле /etc/init.d/boot той частью скрипта, которую вы наверно захотите добавить в свои загрузочные скрипты:
# Настройка ISA PnP карт до загрузки
# модулей. Это необходимо сделать ДО загрузки модулей, чтобы
# настроить и запустить PnP карты ДО того, как
# драйверы там все напутают.
#
if [ -x /etc/init.d/isapnp ]
then
  /etc/init.d/isapnp start
fi
где /etc/init.d/isapnp - это:
#! /bin/sh
# /etc/init.d/isapnp: конфигурация Plug and Play карт
test -x /sbin/isapnp || exit 0
/sbin/isapnp /etc/isapnp.conf
exit 0

Если у вас другой дистрибутив Linux, то все зависит от вас. Я не знаю, что делать в других дистрибутивах (кто-нибудь желает послать мне более точную информацию?). Просто убедитесь в том, что isapnp запускается до загрузки модулей (см. ниже).


3.3. Сборка ядра

До сборки ядра вам придется установить Звуковой Драйвер AWE в стандартный драйвер звука ядра. Даже если ваши исходные тексты ядра включают расширение awedrv (см.каталог /drivers/sound/lowlevel/), вы захотите обновить программу awedrv. Следуйте инструкциям по установке в каталоге исходных текстов awedrv. Вкратце, вам придется запустить скрипт, который произведет необходимые изменения в исходных текстах ядра.

Проверьте, обновились ли исходные тексты ядра после запуска этого скрипта. Он просто проверяет, существует ли конкретный файл - если он существует, то он ничего не делает. Вам лучше предварительно удалить файл drivers/sound/lowlevel/awe_wav.c до запуска этого скрипта.

Затем вам надо настроить ядро, включив в нем поддержку звука. Я надеюсь, что вы немного разбираетесь в сборке ядра; обращайтесь в "HOWTO: Звук в Linux" (Linux Sound HOWTO) и "HOWTO: Ядро" (Kernel HOWTO) за подробной информацией. Перейдите в каталог исходных текстов ядра (например /usr/src/linux) и наберите:

# make config

или make menuconfig, или make xconfig. Затем вам придется настроить ядро обычным образом. Используйте возможность создать маленькое и очень мощное ядро, собранное специально для вашей машины. Обязательно включите пункт "Поддержка загружаемых модулей" (Enable loadable module support), если вы собираетесь собрать драйвер звука в виде модуля (вы должны это сделать, если у вас PnP карта), но я уверен, что вы включите эту опцию в любом случае.

Затем вам будет задан вопрос о поддержке звука. Можно ответить Y или M здесь, если у вас не-PnP карта. Ответьте M здесь, если у вас PnP-карта. Вы должны собрать поддержку звуковой карты в виде модуля, при наличии PnP карты потому, что PnP карта должна быть инициализирована до загрузки модуля драйвера звука.

На следующие вопросы необходимо ответить Y, на все другие N:

Sound Blaster (SB, SBPro, SB16, clones) support (CONFIG_SB) [Y/n/?]
	(Поддержка Sound Blaster (SB, SBPro, SB16, clones) (CONFIG_SB) [Y/n/?])

Generic OPL2/OPL3 FM synthesizer support (CONFIG_ADLIB) [Y/n/?]
	(Поддержка Стандартного OPL2/OPL3 FM-синтезатора (CONFIG_ADLIB) [Y/n/?])

/dev/dsp and /dev/audio support (CONFIG_AUDIO) [Y/n/?]
	(Поддержка /dev/dsp и /dev/audio (CONFIG_AUDIO) [Y/n/?])

MIDI interface support (CONFIG_MIDI) [Y/n/?]
	(Поддержка MIDI-интерфейса (CONFIG_MIDI) [Y/n/?])

FM synthesizer (YM3812/OPL-3) support (CONFIG_YM3812) [Y/n/?]
	(Поддержка FM-синтезатора (YM3812/OPL-3) (CONFIG_YM3812) [Y/n/?])

lowlevel sound driver support [Y/n/?]
	(Поддержка звукового драйвера низкого уровня [Y/n/?])
 
AWE32 support (CONFIG_AWE32_SYNTH) [Y/n/?]
	(Поддержка AWE32 (CONFIG_AWE32_SYNTH) [Y/n/?]) 

Только последний вопрос касается WaveTable-синтезатора. Остальные касаются поддержки SB 16 драйвером звука OSS/Free.

В дополнение к этому, вам придется настроить порт ввода-вывода звуковой карты. Еще раз взгляните в файл isapnp.conf за подсказкой, если он есть. Для меня следующих стандартных значений достаточно. Заметьте, что стандартное значение, написанное в конфигурационном скрипте, может быть неверно (особенно значения SBC_IRQ и SB_MPU_BASE часто неверны для многих карт).

I/O base for SB Check from manual of the card (SBC_BASE) [220]
	(Номер базового порта для SB (сверьтесь с руководством по карте) (SBC_BASE) [220])

Sound Blaster IRQ Check from manual of the card (SBC_IRQ) [5]
	(Номер IRQ для SB (сверьтесь с руководством по карте)(SBC_IRQ) [5])

Sound Blaster DMA 0, 1 or 3 (SBC_DMA) [1]
	(Номер DMA для SB (SBC_DMA) [1])

Sound Blaster 16 bit DMA (_REQUIRED_for SB16, Jazz16, SMW) 5, 6 or 7
(use 1 for 8 bit cards) (SB_DMA2) [5]
	(Номер 16-битного DMA для SB (_ОБЯЗАТЕЛЬНО_ для SB16, Jazz16, SMW) 5, 6 or 7
	(используйте 1 для 8-битных карт) (SB_DMA2) [5]

MPU401 I/O base of SB16, Jazz16 and ES1688 Check from manual of the card (SB_MPU_BASE) [330]
	(Номер базового порта MPU401 для SB16, Jazz16 and ES1688 (сверьтесь с
	руководством по карте (SB_MPU_BASE) [330])

SB MPU401 IRQ (Jazz16, SM Wave and ES1688) Use -1 with SB16 (SB_MPU_IRQ) [-1]
	(SB MPU401 IRQ (Jazz16, SM Wave and ES1688) Используйте -1 для SB16 (SB_MPU_IRQ) [-1]) 

Теперь пересоберите ядро. Пользователь Debian должны использовать пакет kernel-package. Этот пакет позволяет собирать ядро так же просто, как и любой другой пакет в debian. Прочтите инструкцию в каталоге /usr/doc/kernel-package/. Подсказка:

# make-kpkg clean
# make-kpkg -revision custom.1.0 kernel_image

а затем dpkg -i /usr/src/kernel-image-2.0.29_custom.1.0_i386.deb.

Если у вас другой дистрибутив Linux, следуйте требованиям стандартных инструкций по сборке ядра. Не забудьте сделать make modules и make modules_install. Взгляните в "HOWTO: Звук в Linux" (Linux Sound HOWTO) и, возможно, в "HOWTO: Ядро" ( Kernel HOWTO) за подробной информацией.


3.4. Перезагрузка

После установки нового ядра вы должны перезагрузиться (убедитесь в том, что у вас есть под рукой работающий загрузочный флоппи-диск) Перекрестите пальцы :-).

Если у вас PnP-карта, убедитесь в запуске isapnp в загрузочном скрипте (как было описано выше) или вручную:

# /sbin/isapnp /etc/isapnp.conf
Board 1 has Identity 74 00 00 e3 10 48 00 8c 0e:  CTL0048 Serial No 58128
[checksum 74]

Теперь вы можете установить драйвер звука, если собрали его в виде модуля:

# modprobe -a sound
AWE32 Sound Driver v0.3.3e (DRAM 2048k)

Если вам кажется, что объем памяти неверный (У меня были сообщения о том, что в одной карте AWE64 было 4096 Кб, а "определялось" 28672 Кб), попытайтесь либо обновить пакет awedrv или указать объем памяти в файле /usr/src/linux/drivers/sound/lowlevel/awe_config.h, например:

#define AWE_DEFAULT_MEM_SIZE  4096   /* kbytes */

Извините, но после этого вам придется пересобрать ядро (возможно пересборки модулей будет достаточно, но я в этом не уверен).

Если все заработало, вы наверно захотите загружать модуль звука автоматически. Можно использовать kerneld (это плохая идея - причины описаны в разделе 1.4) или добавить одну строчку, содержащую слово sound в ваш файл /etc/modules (в Debian) или добавить строку /sbin/modprobe -a sound в ваш загрузочный скрипт.


4. Проверяем драйвер звука

4.1. /proc/devices, /dev/sndstat

Если поддержка звука встроена в ядро, то Вы увидите немного полезной информации при загрузке. Если поддержка звука собрана в виде модуля, вы можете увидеть эту же информацию (возможно после выгрузки модуля командой modprobe -r sound) при помощи команд

# modprobe -a sound trace_init=1
Sound initialization started

<Sound Blaster 16 (4.13)> at 0x220 irq 5 dma 1,5
<Sound Blaster 16> at 0x330 irq 5 dma 0
<Yamaha OPL3 FM> at 0x388
Sound initialization complete
AWE32 Sound Driver v0.3.3e (DRAM 2048k)

Если у вас есть виртуальная файловая система /proc, можно поискать устройство вывода звука командой

# cat /proc/devices
Character devices:
[...]
14 sound
[...]

Затем убедитесь, что у вас правильно настроены устройства в каталоге /dev/. Читайте "HOWTO: Звук в Linux" (Linux Sound HOWTO) для более полного описания. Затем запросите у /dev/sndstat статус модуля звука:

# cat /dev/sndstat
Sound Driver:3.5.4-960630 (Sat Oct 11 19:35:14 CEST 1997 root,
Linux flora 2.0.29 #1 Sat Oct 11 19:12:56 CEST 1997 i586 unknown)
Kernel: Linux flora 2.0.29 #1 Sat Oct 11 19:36:23 CEST 1997 i586
Config options: 0

Installed drivers:
Type 1: OPL-2/OPL-3 FM
Type 2: Sound Blaster
Type 7: SB MPU-401

Card config:
Sound Blaster at 0x220 irq 5 drq 1,5
SB MPU-401 at 0x330 irq 5 drq 0
OPL-2/OPL-3 FM at 0x388 drq 0

Audio devices:
0: Sound Blaster 16 (4.13)

Synth devices:
0: Yamaha OPL-3
1: AWE32 Driver v0.3.3e (DRAM 2048k)

Midi devices:
0: Sound Blaster 16

Timers:
0: System clock

Mixers:
0: Sound Blaster
1: AWE32 Equalizer

Если у вас не вышло на экран что-то подобное, то, возможно, у вас ошибка в вашей конфигурации. Найдите то, что не работает, затем вернитесь к шагу "Начало работы", проверяя все на каждом шаге.


4.2. Вывод - прямое (Raw) аудио-устройство

Найдите .au-файл (Рабочая станция Sun) или простой файл аудио-сэмпл (sample file), и наберите

# cat bell.au > /dev/audio

или, соответственно

# cat sample > /dev/dsp

Вы должны услышать результат через Audio Device 0: Sound Blaster 16 (4.3).


4.3. Вывод - Синтезатор OPL-2/OPL-3

Если вы хотите использовать OPL-2/OPL-3 FM-синтезатор для проигрывания MIDI-файлов при помощи вашей звуковой карты, попробуйте использовать программу playmidi (см. приложение 2). Запустите ее командой

# playmidi -f dance.mid

или

# playmidi -4 dance.mid

Первый даст вам OPL-2, второй OPL-3 MIDI-музыку. Если вам очень не понравился звук, не обвиняйте в этом playmidi: просто сам FM-синтезатор издает не очень приятные звуки.

Представьте, что вы бы имели только драйвер звука OSS/Free: Тогда бы у вас было только такое качество MIDI-музыки (опуская возможность программного синтезирования). К счастью, у вас SB AWE, и можно использовать возможности WaveTable при помощи Звукового Драйвера AWE.


4.4. Вывод - Синтезатор Wave Table

Звуковой Драйвер AWE поставляется с набором специальных утилит (awesfx) для того, чтобы сделать возможным использование Wave Table-синтезатор EMU 8000. Во-первых, вам надо загрузить Звуковые банки (Sound Font Bank) в вашу карту - даже если вы хотите использовать банки, прошитые в ПЗУ! Вы можете скопировать эти файлы из вашего Windows - ищите файлы, оканчивающиеся на *.sfb или *.sf2.

Образцы звуков из ПЗУ звуковой карты можно загрузить с помощью файла SYNTHGM.SBK, настоящие образцы находятся в SYNTHGS.SBK и SYNTHMT.SBK, а также в SAMPLE.SBK. Вы можете скачать другие Звуковые Банки (Sound Font Banks) по ftp или www, попробуйте домашнюю страницу EMU, WWW-сайт Creative Labs, и поищите набор образцов "Chaos" - они также достаточно хороши (убедитесь, что также проверили сайт драйвера AWE).

Попытайтесь загрузить стандартный GM-набор (из ПЗУ) при помощи команды

# sfxload -i synthgm.sbk

и затем попробуйте проиграть midi-file, поставляемый вместе с вашим SB AWE:

# drvmidi dance.mid

4.5. Микширование

Возьмите вашу любимую программу-микшер и запустите ее. Запустите прямой аудио-сэмпл и два MIDI-файла параллельно, и испробуйте настройки микшера. Поэкспериментируйте, это должно быть очень просто. Ниже приведен список устройств, и как они называются:

Yamaha OPL-3

WaveTable Синтезатор или FM

AWE32 Driver

WaveTable Синтезатор или FM (кто-нибудь видел микшер, в котором два последних разделены?)

Sound Blaster 16 (4.13)

PCM или DSP

PC Speaker (все еще жив :-()

Спикер

Другие настройки микшера относятся к CD-ROM, возможно подключенному к звуковой карте, к Общему Уровню (Master Volume), Низким Частотам (Bass), Верхним Частотам (Treble) и уровню записи (Recording Level) на разных входных линиях. Вы также можете выбрать, с каких линий оцифровывать звук.


4.6. Ввод - оцифровка с помощью прямого аудио-устройства

Вы можете записывать звук с различных источников: подключенного CD ROM, микрофона, подключенного к карте, а также со всего, что вы можете подключить к линейному входу вашей карты. Настройте микшер. Включите проигрывание звука и запишите его в файл, читая из прямого аудио устройства, например:

# cdplay
# dd bs=8k count=5 </dev/dsp >music.au
5+0 records in
5+0 records out
# cat music.au >/dev/dsp

записывает, а затем проигрывает 5 секунд звука из устройства ввода.


4.7. Порт MIDI

Извините, по MIDI-порту пока нет никакой информации!


5. Программное обеспечение драйвера AWE

5.1. sfxload

Вы можете загрузить образцы звуков в память вашей звуковой карты командой sfxload. Заметьте, что можно загрузить только один файл в банк, и банк 0 используется по умолчанию. Так, после команды sfxload synthgs.sbk, в памяти вашей звуковой карты будут только образцы набора GS. Если вы хотите загрузить дополнительные Звуковые Банки (Sound Font Banks), надо использовать опцию -b, например:

# sfxload synthgs.sbk
# sfxload -b1 sample.sbk
# drvmidi sfx.mid

Вы можете загружать стандартный Звуковой Банк автоматически в момент установки модуля. Просто добавьте строку вида

post-install sound /usr/bin/sfxload synthgm.sbk

в ваш файл /etc/conf.modules.

Смотрите также документацию, касающуюся sfxload.


5.2. drvmidi

При помощи программы drvmidi вы можете проигрывать MIDI-файлы через AWE-драйвер. Просто укажите имя файла в качестве аргумента команды:

# drvmidi waltz.mid

Смотрите также документацию, касающуюся drvmidi.


6. Приложение

6.1. Дополнительная информация

"HOWTO: Звук в Linux" (The Linux Sound HOWTO)

Автор: Jeff Tranter, <jeff_tranter@pobox.com>

Последняя версия: 1.17, 4 августа 1997

Пожалуйста, хорошо изучите этот HOWTO (доступно на sunsite.unc.edu и других сайтах). Там находится куча информации о сборке ядра с поддержкой звука, и объясняется многое о звуковых устройствах, программах и т.п.

Я воспринимаю мой документ как дополнение к "HOWTO: Звук в Linux" (The Linux Sound HOWTO).

"HOWTO: Проигрывание звука в Linux" (The Linux Sound Playing HOWTO)

Автор: Yoo C. Chung, <wacko@laplace.snu.ac.kr>

Последняя версия: 1.4, 13 мая 1997

Вы также должны взглянуть в "HOWTO: Проигрывание звука в Linux" (The Linux Sound Playing HOWTO). Там описывается проигрывание звуков в различных форматах, а также программы, их проигрывающие.

"FAQ: Драйвер AWE" (The AWE Driver FAQ)

Автор: Takashi Iwai <iwai@dragon.mm.t.u-tokyo.ac.jp>

Исходный текст: http://bahamut.mm.t.u-tokyo.ac.jp/~iwai/awedrv/awedrv-faq.html

Если у вас проблемы с установкой драйвера AWE или с использованием вашего Sound Blaster, тогда взгляните в этот документ.

"FAQ: ISA PnP" (The ISA PnP FAQ)

Автор: Peter Fox <fox@roestock.demon.co.uk>

Исходный текст: http://www.roestock.demon.co.uk/isapnptools/isapnpfaq.html

Если у вас проблемы с настройкой ISA PnP карты, тогда взгляните в эту книгу знаний.


6.2. Источники

isapnptools

Автор: Peter Fox <fox@roestock.demon.co.uk>

Последняя версия: 1.11

Источник: http://www.roestock.demon.co.uk/isapnptools/index.html

Если будете посылать патчи, сообщения об ошибках или проблемах, пожалуйста, вставьте строку 'isapnp' где-нибудь в теме сообщения и пишите по адресу isapnp@roestock.demon.co.uk.

awedrv

Автор: Takashi Iwai <iwai@dragon.mm.t.u-tokyo.ac.jp>

Последняя версия: 0.4.2c

Источник: http://bahamut.mm.t.u-tokyo.ac.jp/~iwai/awedrv/

Ядро Linux

Автор: Linus Torvald и многие другие

Последняя версия: В настоящий момент используйте 2.0.29

Источник: везде, где вы можете найти Linux :)

OSS/Free

Автор: Hannu Savolainen (Сначала смотрите http://www.4front-tech.com/usslite, затем пишите мне).

Последняя версия : У меня 3.5.5-beta1

Источник: исходные тексты ядра Linux

Информация: http://www.4front-tech.com/usslite или Зеркало в Европе.


6.3. Пример isapnp.conf

Файл конфигурации ISA PnP создается командой pnpdump, и отдельные части ваших PnP карт разделены на секции. В приведенном ниже примере обнаружена одна карта (звуковая) с четырьмя логическими устройствами:

  • LD 0: Аудио-устройство

  • LD 1: IDE-устройство

  • LD 2: WaveTable-устройство

  • LD 3: Устройство игрового порта

Я оставил LD 1 без изменений, потому что у меня нет устройств, подключенных к IDE-порту звуковой карты. Если у вашего SB нет IDE-порта, то LD 1 будет игровым устройством, а LD 3 не появится.

Обязательно прочтите раздел "Начало работы" для дальнейшей (очень важной!) информации об этом файле.

# $Id: Soundblaster-AWE.html,v 1.2 2000/12/19 15:23:41 pax Exp $
# This is free software, see the sources for details.
# This software has NO WARRANTY, use at your OWN RISK
#
# Это бесплатное программное обеспечение, см. исходные
# для более детального описания. Это обеспечение не несет
# НИКАКИХ ГАРАНТИЙ, используйте НА СВОЙ СТРАХ И РИСК
#
# For details of this file format, see isapnp.conf(5)
# Детально формат этого файла описан в isapnp.conf(5)
#
# For latest information on isapnp and pnpdump see:
# За последней информацией по isapnp и pnpdump обращайтесь по адресу:
# http://www.roestock.demon.co.uk/isapnptools/
#
# Compiler flags: -DREALTIME -DNEEDSETSCHEDULER
# Флаги компилятора: -DREALTIME -DNEEDSETSCHEDULER

(READPORT 0x0203)
(ISOLATE)
(IDENTIFY *)

# Try the following if you get error messages like
# Error occurred executing request 'LD 2' on or around line...
# Попробуйте включить следущую строку , если у вас выдаются ошибки вида
# Во время исполнения запроса 'LD 2' возникла ошибка в строке...

#(VERIFYLD N)

# ANSI string -->Creative SB32 PnP<--

(CONFIGURE CTL0048/58128 (LD 0
#     ANSI string -->Audio<--

  (INT 0 (IRQ 5 (MODE +E)))
  (DMA 0 (CHANNEL 1))
  (DMA 1 (CHANNEL 5))
  (IO 0 (BASE 0x0220))
  (IO 1 (BASE 0x0330))
  (IO 2 (BASE 0x0388))

  (ACT Y)
))

(CONFIGURE CTL0048/58128 (LD 1
#     ANSI string -->IDE<--

# (INT 0 (IRQ 10 (MODE +E)))
# (IO 0 (BASE 0x0168))
# (IO 1 (BASE 0x036e))

# (ACT Y)
))

(CONFIGURE CTL0048/58128 (LD 2
#     ANSI string -->WaveTable<--

  (IO 0 (BASE 0x0620))
  (IO 1 (BASE 0x0A20))
  (IO 2 (BASE 0x0E20))

  (ACT Y)
))

(CONFIGURE CTL0048/58128 (LD 3
#     ANSI string -->Game<--

  (IO 0 (BASE 0x0200))
  (ACT Y)
))

# Returns all cards to the "Wait for Key" state
# Возвращаем все карты в состояние "Ожидание Ключа"
(WAITFORKEY)