![]() |
|
|||
WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
ПК имеет как минимум одно звуковое устройство: встроенный
динамик (PC speaker). Вы также можете купить звуковую карту для
вашего ПК, обладающую большими звуковыми возможностями (см. Linux
Sound User's Guide или Sound-HOWTO для поддерживаемых звуковых карт).
Встроенный динамик часть консоли Linux и, поэтому является
символьным устройством. Как следствие, существуют запросы ioctl для
манипуляций с ним:
Генерирует сигнал beep заданной длительности, используя таймер ядра.
Пример: ioctl (fd, KDMKTONE,(long) argument).
Генерирует бесконечный beep или прерывает звучащий в настоящий момент.
Пример: ioctl(fd,KIOCSOUND,(int) tone). Третий аргумент первого примера содержит значение тона в нижнем
слове и сдвиг в верхнем. Тон это не частота. Таймер 8254 материнской
платы ПК заведен на 1.19 МГц и поэтому тон = 1190000/частота.
Сдвиг измеряется в шагах таймера. Оба вызова срабатывают немедленно,
поэтому вы можете порождать звуковые сигналы, не блокируя программу.
Для вас как для программиста важно знать, что современные
Linux-системы имеет встроенную звуковую карту. Один путь проверки:
испытать /dev/sndstat. Если открытие /dev/sndstat закончилось неудачно
и errno=ENODEV, то это означает, что ни один звуковой драйвер не
активирован, и вы не получите никакой помощи от звукового драйвера
ядра. Тот же результат может иметь попытка открыть /dev/dsp, если он
не связан с драйвером pcsnd.
Если вы хотите повозиться со звуковыми картами на уровне железа,
знайте, что комбинация вызовов outb() и inb() определит звуковую
карту, которую вы ищете.
Программы, использующие звуковой драйвер, будут хорошо
переноситься на другие i386 системы, поскольку некоторые умные люди
решили использовать один драйвер для Linux, isc, FreeBSD и большинства
других i386 архитектур. Звуковая карта уже не часть консоли Linux, а
специальное устройство. Звуковая карта предлагает три основных возможности:
Каждая из возможностей имеет свой драйвер устройства. Для
цифровых сэмплов это /dev/dsp, для модуляции частоты /dev/sequencer,
для midi интерфейса /dev/midi. Звуковые установки (volume, balance,
bass) контролируются через интерфейс /dev/mixer. В целях сравнения
существует устройство /dev/audio, которое может читать звуковые данные
SUN-law, но с преобразованием в сэмплы цифрового устройства.
Вы были правы, если подумали, что нужно использовать ioctl() для
работы с этими устройствами. Запросы ioctl() определены в
Вперед: 8 Символьная графика
Оглавление: Оглавление
Назад: 6 Межпроцессовые
коммуникации LINUX
7 Программирование звука
7.1 Программирование встроенного
динамика
KDMKTONE можно использовать для предупреждающих сигналов,
поскольку вам не приходится заботиться о его прекращении.
При помощи KIOCSOUND можно проигрывать мелодии, как это
демонстрируется в примере программы splay. Для остановки сигнала
значение тона устанавливается в 0.
7.2 Программирование звуковой
карты
Converted on:
Fri Mar 29 14:43:04 EST 1996
Найди своих коллег! |