Это наиболее "стандартные" имена файлов устройства, некоторые пакеты
Linux могут использовать немного отличные имена.
/dev/audio
обычно ссылка на файл /dev/audio0
/dev/audio0
устройство звука совместимое с устройством на
рабочей станцией Sun (только частичная реализация, не
поддерживается ioctl-интерфейс фирмы Sun, только u-law кодер)
/dev/audio1
второе аудио-устройство (если поддерживается
звуковой картой или у вас установлено больше одной звуковой карты)
/dev/dsp
обычно ссылка на файл /dev/dsp0
/dev/dsp0
первое устройство цифровой дискретизации
/dev/dsp1
первое устройство цифровой дискретизации
/dev/mixer
обычно ссылка на файл /dev/mixer0
/dev/mixer0
первый микшер звука
/dev/mixer1
второй микшер звука
/dev/music
высокоуровневый интерфейс sequencer
/dev/sequencer
низкоуровневый доступ к MIDI, FM, и GUS
/dev/sequencer2
обычно ссылка на файл /dev/music
/dev/midi00
1-й порт необработанных данных MIDI
/dev/midi01
2-й порт необработанных данных MIDI
/dev/midi02
3-й порт необработанных данных MIDI
/dev/midi03
4-й порт необработанных данных MIDI
/dev/sndstat
выводит состояние звукового драйвера при
чтении (также доступен как /proc/sound)
Драйвер PC speaker обеспечивает следующие устройства:
Звуковые файлы рабочей станции Sun (.au) могут быть проиграны
копированием их на устройство /dev/audio. Необработанные
(сырые) данные могут быть посланы на устройство /dev/dsp. Это
в общем дает правильные результаты, однако предпочтительно использование
программ таких как play, так как они будут распознавать
большинство типов файлов и устанавливать правильные параметры звуковой
карты -- скорость дискретизации и т.п.
Программы подобные wavplay или vplay (из пакета snd-util) будут давать
наилучшие результаты с файлами WAV files. Однако они не
распознают WAV-файлы Microsoft, сжатые по технологии
ADPCM. Также старые версии программы play (из пакета Lsox) не
работают нормально с 16-битными WAV-файлами.
Команда splay, включенная в пакет the snd-util, может быть использована
для проигрывания большинства звуковых файлов, если правильные параметры
будут вручную введены в командной строке.
При чтении устройств /dev/audio или /dev/dsp
будут возвращаться оцифрованные данные, которые могут быть перенаправлены в
файл. Программы, такие как vrec делают этот процесс легче,
контролируя скорость дискретизации, продолжительность и т.п. Вам может
также понадобится программа микширования для выбора нужного устройства
ввода.
В настоящее время звуковой драйвер позволяет иметь несколько
одновременно установленных в системе карт SoundBlaster, SoundBlaster/Pro,
SoundBlaster16, MPU-401 или MSS. Установка двух карт SoundBlaster возможно,
но требует определения макросов SB2_BASE, SB2_IRQ, SB2_DMA и (в некоторых
случаях) SB2_DMA2, путем редактирования файла local.h
вручную. Также возможно установить SoundBlaster одновременно с PAS16.
С ядрами 2.0.x и более новыми, которые настраивают звук используя make
config, вместо local.h, вам необходимо отредактировать файл
/usr/include/linux/autoconf.h. После секции содержащей
строки:
Вам необходимо создать файлы устройства драйвера звука. Сотрите раздел о
создании файлов устройства. Если вы имеете файлы устройства, убедитесь, что
они имеют правильные первичные (major) и вторичные (minor) номера
(Некоторые старые дистрибутивы Linux могут не создавать правильные файлы
устройства в течении установки).
Либо вы не загрузили ядро содержащее драйвер звука, либо настройки
адресов портов ввода/вывода не соответствуют вашему
оборудованию. Проверьте, что вы загрузили скомпилированное ядро и
проверьте, что параметры которые вы ввели, когда настраивали драйвер звука,
соответствуют настройкам вашего оборудования.
Это может случится, если вы попытаетесь записать данные в файлы
/dev/audio или /dev/dsp без создания необходимых
файлов устройства. В настоящее время устройство звука является регулярным
устройством и заполняет часть вашего диска. Вам необходимо запустить
скрипт, описанный в разделе Создание файлов устройства этого
документа.
Это также может случаться с Linux 2.0 и более поздними если они не имеют
достаточное количество свободной памяти, когда устройство открыто. Драйвер
звука требует по крайней мере двух страниц (8k) непрерывной оперативной
памяти для каждого канала DMA. Это случается иногда на машинах, которые
имеют меньше чем 16M оперативной памяти или тех которые работают длительное
время. Возможно освободить некоторое количество памяти откомпилировав и
запустив следующую C-программу до открытия устройства снова:
main() {
int i;
char mem[500000];
for (i = 0; i < 500000; i++)
mem[i] = 0;
exit(0);
}
Только один процесс может открыть звуковое устройство. Скорее всего
какой-то другой процесс использует устройство. Один из путей определить
это -- использование команды fuser:
В вышеприведенном примере, команда fuser показывает, что процесс
265 открыл устройство. Ожидание пока процесс не завершится или его
завершение (kill) позволит иметь доступ к устройству звука. Вы должны
запустить команду fuser как администратор для того чтобы получить
информацию об использовании другими пользователями.
В некоторых системах вы должны быть администратором, для запуска программы
fuser, для того, чтобы увидеть процессы других пользователей.
Согласно сведениям Brian Gough, для карт SoundBlaster, которые
используют DMA-канал 1, существует потенциальный конфликт с драйвером ленты
QIC-02, который также использует DMA 1, вызывая ошибки "device busy
(устройство занято)". Если вы используете FTAPE, у вас может быть разрешен
этот драйвер. Согласно информации в FTAPE-HOWTO, драйвер QIC-02 не является
необходимым для использования FTAPE; требуется только драйвер QIC-117.
Перенастройка ядра для использования QIC-117, а не QIC-02 позволит
сосуществовать FTAPE и драйверу звука.
Обычный симптом -- звуковой пример играет около секунды и затем
останавливается полностью или выдает сообщение об ошибке "missing IRQ
(пропавшее IRQ)" или "DMA timeout (таймаут DMA)". Вероятнее всего у вас
неправильные настройки IRQ или каналов DMA. Проверьте, что настройки ядра
соответствуют установкам звуковой карты и что они не конфликтуют с другими
картами.
Другой симптом зацикливание звука. Это обычно вызывается
конфликтом IRQ.
Проигрывание MOD-файлов требует значительных мощи процессора. У
вас может быть запущено слишком много процессов или ваш компьютер может
быть слишком медленным для проигрывания в реальном времени. Вы можете
сделать следующее:
попытаться проигрывать с более низкой скоростью дискретизации
или в моно режиме
убрать другие процессы
купить более мощный компьютер
купить более мощную звуковую карту (например Gravis UltraSound)
Если у вас карта Gravis UltraSound, вы должны использовать один из
проигрывателей mod-файлов написанных специально для GUS (например
gmod).
Версия 1.0c драйвера звука и более ранние использовали другую и
несовместимую схему ioctl(). Возьмите более свежую версию драйвера
звука или сделайте необходимые изменения для адаптации приложений к новому
драйверу звука. Для деталей смотрите файл Readme из поставки
звукового драйвера.
Также убедитесь, что вы используете последние версии файлов
soundcard.h и ultrasound.h при компиляции
приложения. Смотрите инструкции по инсталляции в начале этого текста.
В настоящее время наилучшей документацией кроме исходного кода является
доступная с сервера 4Front Technologies
http://www.opensound.com. Другой источник документации --
Linux Multimedia Guide, описанное в разделе ссылок.
На этот вопрос не легко ответить, так как это зависит от:
используете вы PCM дискретизацию или FM-синтез
скорость дискретизации и размер примера
какое приложение используется для проигрывания или записи
оборудование звуковой карты
скорость ввода/вывода диска, скорость процессора, размер
кэша, и т.п.
В общем, любая 386 машина легко должна проигрывать примеры или
FM-синтезированную музыку на 8-битной звуковой карте.
Однако проигрывание MOD-файлов требует значительных ресурсов
процессораs. Некоторые экспериментальные измерения показывают, что
проигрывание на 44kHz требует более чем 40% скорости машины 486/50 и 386/25
может проигрывать едва быстрее чем 22 kHz (это все ч 8-битной звуковой
картой такой как SoundBlaster). Такие карты как Gravis UltraSound выполняют
больше функций сами, в железе, и будут требовать меньших ресурсов
процессора.
Эти выводы предполагают, что компьютер не выполняет другие ресурсоемкие
задачи.
Преобразование звуковых файлов или добавление эффектов, используя утилиты,
такие как sox также быстрее, если у вас установлен
математический сопроцессор (или CPU со встроенным FPU). Драйвер
сам не выполняет любых вычислений с плавающей точкой.
(следующее объяснение было сделано seeker@indirect.com)
Linux распознает адаптер 1542 только на адресе 330 (по умолчанию) или 334,
и PAS разрешает эмуляцию MPU-401 только на адресе 330. Даже когда вы
программно запретите MPU-401, что-нибудь захочет конфликтовать с адаптером
1542 если выбран адрес по умолчанию. Перестановка адаптера 1542 на адрес
334 сделает всех счастливыми.
В качестве дополнения, и адаптер 1542 и PAS-16 используют 16-битное DMA,
так что если вы используете 16-bit 44 KHz стерео-звук и сохраняете файл на
SCSI-диск, установленный на адаптер 1542, вы будете иметь проблемы. Каналы
DMA перекрываются и не остается достаточного времени для обновления
оперативной памяти, так что вы получите ужасное сообщение ``PARITY ERROR -
SYSTEM HALTED (ОШИБКА ЧЕТНОСТИ - СИСТЕМА ОСТАНОВЛЕНА)'', без объяснений что
вызвало ее. Это ухудшается потому-что некоторые продавцы рекомендуют для
ленточных устройств QIC-117 времена on/off шины, такие что даже для 1542
они дольше, чем нормальные. Возьмите программу SCSISEL.EXE с Adaptec BBS
или с нескольких мест в internet, и уменьшайте время BUS ON или
увеличивайте время BUS OFF до тех пор пока проблема не исчезнет. SCSISEL
изменяет установки EEPROM, так что это более постоянно чем заплатка (patch)
к строке драйвера DOS в CONFIG.SYS, и будет работать правильно если вы
загрузитесь в Linux (в отличии от заплатки к DOS). Следующая проблема
решена.
Последняя проблема - старые наборы микросхем Symphony резко уменьшали
синхронизацию циклов ввода/вывода для ускорения доступа к шине. Ни одна из
разных карт, которые я пробовал не имеет ни какой проблемы с
уменьшенной синхронизацией, исключая PAS-16. На BBS Media Vision есть
SYMPFIX.EXE, который используется для решения этой проблемы путем изменения
диагностического бита в контроллере шины Symphony, но это не дает твердой
гарантии. Вы можете нуждаться в следующем:
заставьте продавца материнской платы заменить старую версию
контроллера шины,
заменить материнскую плату, или
купить другой тип звуковой платы.
Young Microsystems обновляет импортируемые карты примерно за $30
(US); другие продавцы могут делать подобное, если вы сообщите кто произвел
или импортировал материнскую плату (желаю удачи). Что касается меня, то
проблема в микросхеме интерфейса шины ProAudio; никто не покупает
$120 звуковую карту и засовывает ее в 6MHz AT. Большинство их
используется в 25-40MHz 386/486 машинах, и должны по крайней мере
обслуживать скорость шины 12MHz, если микросхемы спроектированы правильно.
Первая проблема зависит от набора микросхем, используемых на вашей
материнской плате, какая скорость шины и других настроек BIOS, а также фазы
луны. :-) Вторая проблема зависит от ваших настроек обновления памяти
(скрытая или синхронная), скорости DMA адаптера 1542 и (возможно) скорости
ввода/вывода шины. Третья может быть определена вызвав службу Media Vision
и спросив какой тип микросхемы Symphony несовместим с их замедленным
дизайном. Будьте осторожны, 3 из 4-х техников в которыми я говорил имеют
"повреждение мозга". Должен ли я доверять всему, что они сказали о
каком-то другом оборудовании, если они даже не знают свое собственное.
Драйвера некоторых звуковых карт поддерживают полнодуплексный
режим. Посмотрите документацию доступную с 4Front Technologies для
получения информации о том как его использовать.
Это случается после "теплой" перезагрузки в DOS. Иногда сообщение об
ошибке обманчива показывает на плохой файл CONFIG.SYS.
Большинство современных звуковых карт имеют программируемые настройку IRQ и
DMA. Если вы используете различные настройки в Linux и MS-DOS/Windows, это
может вызвать проблемы. Некоторые звуковые карты не принимают новые
параметры без полного сброса предыдущих (т.е. переключения питания или
использования кнопки сброса).
Для быстрого решения этой проблемы необходимо выполнить полную перезагрузку
используя кнопку сброса (reset) или переключив питание вместо "теплой"
перезагрузки (например Ctrl-Alt-Del).
Правильное решение убедится, что вы используете те же самые настройки IRQ и
DMA в MS-DOS и Linux (или не используйте DOS :-).
Пользователям игры DOOM компании ID software (версия для
Linux) могут быть интересны эти сведения.
Для правильного вывода звука вам нужен звуковой драйвер версии 2.90 или
более поздней; он имеет поддержку для DOOM режимаx реального
времени.
Звуковые примеры являются 16-битными. Если у вас 8-битная звуковая карта вы
все равно можете иметь звук, используя разные программы, доступные на
ftp://metalab.unc.edu/pub/Linux/games/doom.
Если производительность DOOM в вашей системе плоха, то запрет звука
(переименованием файла sndserver) может улучшить ее.
По умолчанию DOOM не поддерживает музыку (как в версии DOS). Программа
musserver добавит поддержку музыки в DOOM для Linux. Она может
быть найдена на
ftp://pandora.st.hmc.edu/pub/linux/musserver.tgz.
Использование хороших, качественно изолированных кабелей и попытка
использования звуковой платы в разных слотах может помочь уменьшить
шум. Если звуковая карта имеет контроль громкости, вы можете
попытаться использовать разные настройки (вероятно максимальное значение
будет наилучшим). Используя программу микширования вы можете
убедится, что уровни устройств ввода (например микрофон) установлены в
нулевое значение.
Philipp Braunbeck рассказал, что звуковые карты ESS-1868 имели
переключатель, для отключения встроенного усилителя, который помогал
уменьшить шум.
В конце замечу, что на одной системе с процессором 386 я обнаружил, что
опция командной строки ядра no-hlt уменьшает уровень шума. Она
сообщает ядру, чтобы оно не использовало инструкцию halt при выполнении
цикла ожидания процессов. Вы можете попробовать это вручную или установить
используя команду append="no-hlt" в вашем файле конфигурации LILO.
Некоторые звуковые карты просто не спроектированы с хорошей защитой и
заземлением и выдают шум.
Если вы можете проигрывать звук, но не можете записывать, попробуйте
сделать следующие шаги:
используйте программу микширования для выбора необходимого
устройства (например микрофона)
используйте микшер для установки уровней ввода на максимум
Если вы можете, попытайтесь протестировать работу записи
звуковой карты под MS-DOS для того, чтобы определить может это
аппаратная проблема
Иногда для записи и проигрывания звука используются разные каналы DMA. В
этом случае наиболее вероятная причина в том, что канал DMA для записи
установлен неправильно.
В большинстве случаев карты "совместимые с SoundBlaster" будет работать
лучше под Linux если ее настроить под драйвер отличный от
SoundBlaster. Большинство звуковых карт объявлено совместимыми (например
"совместимая с 16-битным SB Pro" or "SB совместимая 16 бит"), но обычно
этот режим SoundBlaster всего лишь "hack" сделанный для совместимости с
играми для DOS. Большинство карт имеют собственный 16-битный режим, который
скорее всего поддерживается недавними версиями Linux (2.0.1 и поздними).
Только с некоторыми (обычно довольно старыми) картами необходимо попытаться
заставить работать их в режиме SoundBlaster. Только новейшие карты, которые
являются исключением из этого правила, являются картами основанными на
Mwave.
16-битные звуковые карты описанные как совместимые с SoundBlaster в
действительности совместимы только с 8-битной SoundBlaster Pro.
Типично они имеют 16-битный режим, который не совместим с
SoundBlaster 16 и не совместим с драйвером звука Linux.
Вы можете заставить карту работать в 16-битном режиме используя драйвер
MAD16 или MSS/WSS.
Пакет modutils имеет пример программы и заплатку (patch)
для ядра, которая поддерживает вызов произвольной внешней программы
для генерации звука, когда требуется ядром.
В качестве альтернативы на некоторых звуковых картах вы можете
соединить вывод PC speaker'а к звуковой карте, так что все звуки
будут выводится на динамики звуковой карты.
Коммерческая версия звуковых драйверов, продаваемых компанией 4Front
Technologies была ранее известна под другими названиями, такими как
VoxWare, USS (Unix Sound System), и даже TASD
(Temporarily Anonymous Sound Driver). Теперь он продается как OSS
(Open Sound System). На версию, включенную в ядро Linux часто
ссылаются как на OSS/Free.
Для большей информации смотрите страницу 4Front Technologies по
адресу
http://www.4front-tech.com/. Я написал обзор
OSS/Linux в выпуске за Июнь 1997
Linux Journal.
Изменения в драйвере звука в версии 1.3.67 некоторые программы проигрывания
звука, которые (неправильно) проверяли, что результат из ioctl
SNDCTL_DSP_GETBLKSIZE был больше чем 4096. Последние версии драйвера звука
были также исправлены, чтобы избегать выделения фрагментов короче чем 4096
байтов, которое решило эту проблему для старых утилит.
Вы можете скомпилировать драйвер звука как загружаемый модуль и
использовать kerneld для того чтобы автоматически загружать и
выгружать его. Это может представить одну проблему - когда модуль
перезагружается установки микшера устанавливаются в значения по
умолчанию. Для некоторых звуковых карт это может быть слишком шумным
(например SoundBlaster16) или слишком тихим. Markus Gutschke
(gutschk@uni-muenster.de) нашел решение. Используйте подобную
строку в вашем файле /etc/conf.modules:
Это запустит вашу программу микширования (в этом случае setmixer)
немедленно после загрузки звукового драйвера. Параметр
dma_buffsize это просто значение, необходимое потому-что команда
option требует опцию командной строки. Измените эту строку как необходимо
для соответствия вашей программе микширования и установкам уровней.
Если вкомпилировали ваш драйвер звука в ядро и хотите установить уровни
микширования во время загрузки, вы можете поместить вызов вашей программы
микширования в стартовый файл системы такой как
/etc/rc.d/rc.local.
По умолчанию скрипт в файле Readme.linux, который создает файлы устройства
звука, разрешает чтение устройств только пользователю root. Это
затыкает потенциальную дыру в защите. В сетевой среде внешний пользователь
может удаленно войти в систему с звуковой картой и микрофоном и
подслушивать. Если вы не заботитесь об этом, вы можете изменить разрешения,
используемые в скрипте.
С настройками по умолчанию, пользователи могут проигрывать звуковые
файлы. Это не риск безопасности, но потенциальная досада.
Информация о том как использовать звуковую карту mwave на портативном
компьютере IBM ThinkPad под Linux может быть найдена в файле
/usr/src/linux/Documentation/sound/mwave, который является
частью дистрибутива исходного кода ядра.
Некоторый старые 8-битные карты SoundBlaster не имеют устройства
микширования. Некоторые звуковые приложения требуют возможности открыть
устройство микширования и поэтому не работают на таких картах. Jens Werner
(
werner@bert.emv.ing.tu-bs.de) предложил решение, заключающееся в
создании ссылки с /dev/mixer на /dev/null и все должно
работать нормально.
Кажется, что есть новый тип Soundblaster - он продается как SB16 - номер модели на
карте равен CT4170. Эти штуки имеют только один канал DMA, так что если вы
попытаетесь настроить ее, то у ядра будут проблемы с доступом к 16-битному каналу
DMA. Решением этой проблемы будет установка значения второго канала DMA равным 1,
так что карта будет вести себя как заявлено.
Я просмотрел много информации в internet и в документации на звуковую
систему, на предмет того как сделать такую простую вещь как подключение
MIDI-вывода с основной (master) клавиатуры к MIDI-вводу на звуковой карте. Я не
нашел ничего. Проблема в том, что они используют одно и тоже устройство,
/dev/midi, по крайней мере при использовании звуковой системы OSS. Я нашел
способ сделать это, которым я хочу поделится. Это создает очень простой
синтезатор, с полной поддержкой MIDI:
ПОДКЛЮЧЕНИЕ MIDI MASTER-КЛАВИАТУРЫ НАПРЯМУЮ К ЗВУКОВОЙ КАРТЕ С MIDI
MIDI master-клавиатура --- это клавиатура без любого синтезатора, и только
с разъемом MIDI-вывода. Он может быть подключен к 15-штырьковому D-SUB
порту на большинстве звуковых карт, с помощью подходящего кабеля.
Таким образом клавиатура может использоваться для управления устройством
синтезирования MIDI карты, создавая таким образом простой, контролируемый с
клавиатуры синтезатор.
Откомпилируйте следующую программ с помощью команды 'gcc -o prog prog.c', и
запустите ее:
Информация о том, как заставить работать карту Ensoniq PCI 128.
Проблема проявлялась в том, что карта по умолчанию использовала
прерывание 15 (за это отвечала подсистема Plug and Pray). Это прерывание
используется дополнительным контроллером ide, и не может быть
использоваться другими устройствами. Вам необходимо как то заставить es1370
использовать другое прерывание (например использовать прерывание 11, как
это делается в Windows).
Я определил это для себя, вы можете верить или нет.
Что я для этого сделал:
a) в BIOS, вы должны указать, что у вас не Plug and Play операционная
система. Я нашел это в меню advanced options в моем BIOS.
b) в меню PCI settings в BIOS, скажите компьютеру зарезервировать
прерывание 15 для обычных устройств ISA. В моем bios, под разделом
advanced options, есть раздел для настройки PCI. В нем есть область
Resource Exclusion и эта операция делается там.
После загрузки в linux вы сможете использовать звук. (Я не помню,
показывается ли это в сообщениях при загрузке или нет). Для того, чтобы
быть уверенным, я запустил sndconfig, так что он должен был проиграть
тестовое сообщение, которое звучит не совсем хорошо, но оно есть. Однако
когда проиграл CD, он звучал великолепно.
Не беспокойтесь о Windows, я попробовал обе мои карты: ISA Modem, и
звуковую карту, и они работали без каких либо погрешностей.
Может быть так, что ваш BIOS будет отличаться от моего, но вы должны найти
место, где находятся эти настройки. Всего хорошего.
SoftOSS --- это программный wavetable синтезатор, включенный в драйвер
звука ядра, так что он совместим с картой Gravis Utrasound. Для управления
драйвером вам нужны совместимые с GUS файлы заплаток для MIDI. В
документации отмечено, что "свободно доступные MIDI-заплатки доступны с
разных ftp серверов".
Emanual.ru – это сайт, посвящённый всем значимым событиям в IT-индустрии: новейшие разработки, уникальные методы и горячие новости! Тонны информации, полезной как для обычных пользователей, так и для самых продвинутых программистов! Интересные обсуждения на актуальные темы и огромная аудитория, которая может быть интересна широкому кругу рекламодателей. У нас вы узнаете всё о компьютерах, базах данных, операционных системах, сетях, инфраструктурах, связях и программированию на популярных языках!