К сожалению, у меня нет времени на дальнейшую работу над этим проектом.

same page in English

С 2004/01/11 02:30:56 PST FreeBSD 5.x поддерживает Audigy (Audigy2), поддержка включена в драйвер emu10k1. Он основывается на работе Orlando Bassotto. Если вам не нужен MIDI и вы используете только пару колонок - попробуйте сначала его.

Драйвер для Linux вы можете взять на сайте ALSA Project
Для Windows существует интересный драйвер KX Project. Если вам не нравится штатный драйвер от Creative - можете попробовать.

Драйвер emu10kx - только для FreeBSD!

ПРЕДУПРЕЖДЕНИЕ: -CURRENT после 2004/05/31 23:22:59 PDT не содержит подсистемы MIDI!
NEWMIDI был удалён без какой-либо замены.

ПРЕДУПРЕЖДЕНИЕ: в -CURRENT после 2004/07/16 изменены имена модулей звуковой подсистемы! Новая схема именования драйверов поддерживается начиная с версии 2004-07-16a.

  1. Новости
  2. Сборка и загрузка драйвера emu10kx
  3. MIDI
  4. Цифровой и аналоговый режимы работы
  5. Используемые разъемы
  6. Маршрутизация звукового сигнала
  7. S/PDIF ввод/вывод
  8. Запись
  9. Советы по реению некоторых проблем
  10. Если ничего не помогло
  11. Известные проблемы
  12. Планы
  13. исходные тексты
  14. утилитки
  15. Контактная информация

Новости

  1. [2005-10-15] Теперь под именем emu10kx-<date>.tar.bz2 будут выпускаться более-менее оттестированые версии. Промежуточные версии будут доступны как emu10kx-snap.tar.bz2 (без указания даты).
  2. [2005-10-15] Подправлены настройки микшера для платы Audigy 2 Value.
  3. [2005-10-15] Добавлена возможность установки глобального уровня записи из emuctrl. Програмная эмуляция микшера кодека AC97 работает несколько некорректно, что приводит к отсутсвию возможности изменять уровень записи через mixer rec. В качестве обходного пути используйте emuctrl rset mix0 XX:YY для установки уровня записи XX:YY.
  4. [2005-10-14] Куплена Audigy 2 Value. Работает. Вы должны установить ненулевую громкость на выходе DIGITAL:Front.
  5. [2005-09-24] Новая команда emuctrl: save. Также добавлен rc.d скрипт emuctrl (автоматически по make install не устанавливается!) который сохраняет / восстанавливает настройки драйвера между перезагрузками.
  6. [2005-09-16] В ports collection создан порт audio/emu10kx. Я против "оживления" этого драйвера, но так уж получилось. Если найдутся ошибки - попробуем исправить.
  7. [2005-04-23] Переписана эмуляция микшер AC97 кодека для Audigy
  8. [2005-04-23] Добавлена аозможность изменять Main Mix из emuctrl.
  9. [2005-04-21] Добавлена поддержка Audigy 2 Value.

Сборка и загрузка драйвера emu10kx

  1. У вас должны быть установлены исходные тексты FreeBSD в /usr/src. Используемое вами ядро должно быть той версии FreeBSD, исходные тексты которой наодятся в /usr/src.
  2. Если вы планируете использовать midi2: скачайте и инсталлируйте midi2. Проверьте раздел Поддерживаемая конфигурация если вы не уверены, нужно ли вам это. Инструкция по установке midi2 (на английском языке) есть внутри архива midi2.
  3. Скачайте и распакуйте архив emu10kx.
  4. Включите поддержку MIDI в Makefile если вам нужен MIDI.
  5. make clean, make, make install.
  6. Если вы не используете devfs: создайте файлы устройств в /dev. По умолчанию emu10kx0 использует major 201, minor 0. Если у вас есть другие устройства, использующие эти номера измените Makefile и перекомпилируйте драйвер. Если у вас несколько плат SBLive! / Audigy, то вторая использует minor 1, 3-я - minor 2 итд. Для создания файла используйте команду
    /sbin/mknod /dev/emu10kx0 c <major> <minor>
    
  7. Выберите способ загрузки драйвера:
    1) через loader.conf, в случае если вы не используете midi2:
    добавьте
    #snd_pcm_load="YES"		# Digital sound subsystem , FreeBSD 4 and 5 before
    						# snd_pcm -> sound change
    sound_load="YES"		# FreeBSD 5 with new sound naming
    midi_load="NO"			# Do not load midi2 - read Known Bugs section.
    snd_emu10k1_load="NO" 		# do not load Creative Sound Blaster Live
    snd_emu10kx_load="YES" 		# Creative Sound Blaster Live / Audigy
    
    в ваш файл /boot/loader.conf. Вы должны запретить загрузку драйвера emu10k1, так как он также может поддерживать ваше оборудование.
    2) через rc.local: добавьте
    # Add if you use midi2. 
    /sbin/kldload midi		
    # Creative Sound Blaster Live / Audigy
    /sbin/kldload snd_emu10kx	
    
    в ваш файл /etc/rc.local.
  8. При загрузке драйвера вы должны увидеть на системной консоли следующую информацию (или что-то похожее):
    emu10kx0: <Creative EMU10K2 (Audigy)> port 0xd000-0xd01f irq 12 at device 10.0 on pci0
    midi0: <EMU10Kx MIDI Interface (midi2)> on emu10kx0
    midi0: midi interrupt 00000080 without interrupt handler, force mread!
    midi0: midi interrupt 00000080 without interrupt handler, force mread!
    midi1: <EMU10Kx MIDI Interface (midi2)> on emu10kx0
    midi1: midi interrupt 08000000 without interrupt handler, force mread!
    midi1: midi interrupt 08000000 without interrupt handler, force mread!
    pcm0: <EMU10Kx PCM Interface> on emu10kx0
    pcm0: <TriTech TR28602 AC97 Codec>
    
    , если вы используете midi2, или
    emu10kx0: <Creative EMU10K2 (Audigy)> port 0xd000-0xd01f irq 12 at device 10.0 on pci0
    midi0: <EMU10Kx MIDI Interface (NEWMIDI)> on emu10kx0
    midi1: <EMU10Kx MIDI Interface (NEWMIDI)> on emu10kx0
    pcm0: <EMU10Kx PCM Interface> on emu10kx0
    pcm0: <TriTech TR28602 AC97 Codec>
    
    если вы используете NEWMIDI.
  9. Установите режим работы карты и уровни громкости: например, добавьте
    # Set card in analog mode
    /usr/sbin/emuctrl mode analog
    # Set AudigyDrive Headphones (out3) to full volume
    /usr/sbin/emuctrl set out3 100
    # Enable MIDI IR events
    /usr/sbin/emuctrl ir enable
    
    
    в файл /etc/rc.local. Запустите emuctrl list, чтобы увидеть список контролируемых соединений. Уровень PCM-звука в драйвере emu10kx ниже, чем при использовании драйвера emu10k1. Это происходит из-за того, что в emu10k1 звук дополнительно усиливается в коде DSP путём умножения всех сэмплов на 4.

MIDI

Этот драйвер может быть скомпилирован с поддержкой MIDI I/O. Он поддерживает только ввод / вывод MIDI сообщений и не может быть использован для звукового воспроизведения MIDI файлов без внешнего синтезатора. На платах серии Live! вы получаете один порт MIDI, на платах серии Audigy - два. Один из них - для разъема DB15 на плате, второй - для портов на блоке AudigyDrive.

  1. Поддерживаемые конфигурации
    Переменная Makefile vs версия FreeBSD FreeBSD 4.x,
    MIDI отсутсвует
    FreeBSD 5.x,
    -CURRENT с NEWMIDI
    FreeBSD 5.x,
    -CURRENT без NEWMIDI
    FreeBSD 5.x,
    -CURRENT с midi2 (*)
    EMU10KX_WITH_MIDI=yes
    (NEWMIDI MIDI I/O)
    Нет Да,
    требуется device midi. Драйвер не может быть выгружен из памяти.
    Нет Нет
    EMU10KX_WITH_MIDI2=yes
    (midi2 MIDI I/O)
    Нет Да(**),
    необходимо установить midi2
    Да(**),
    необходимо установить midi2
    Да(**)
    Без поддержки MIDI I/O Да Да Да Да

    (*) пока что не включен -CURRENT, ожидается примерно 17-го июля.
    (**) Не может быть загружен вместе с ядром через loader.conf. Прочитайте Известые проблемы для более полной информации.
  2. Вы должны включть "device midi" в использумемое вами ядро для использования драйвера emu10kx с поддержкой NEWMIDI. Ядро GENERIC не включает в себя это устройство, поэтому вам нужно создать новый файл конфигурации ядра, скомпилировать, установить и загрузить новое ядро.
  3. Вы не должны включать "device midi" в использумемое вами ядро для использования драйвера emu10kx с поддержкой midi2. Ядро GENERIC не включает в себя это устройство, поэтому вам не обязательно создавать новый файл конфигурации ядра, компилировать, устанавливать и загружать новое ядро.
MIDI и IR

IR приемник на Live!Drive и AudigyDrive является MIDI устройством. Чтобы использовать его, попробуйте rcenter и xmmspipe Bejamin Lynn-а - этот набор программ позволяет управлять xmms (или какой-либо иной программой) с вашего пульта.
Устройство MIDI для инфракрасного приемника на Audigy platinum - /dev/midi1 при работе с NEWMIDI и /dev/midi1.0 для midi2.

Для включениия ИК-приемника используйте командуemuctrl ir enable.

ИК приемник не может быть выключен.

Цифровой и аналоговый режимы работы

Звуковые карты на основе DSP EMU10K от Creative могут работать в двух режимах: аналоговом и цифровом. Когда вы загружаете драйвер emu10kx для Audigy, он переводит плату в цифровой режим, за исключением случаев, когда известно, что плата некорректно работает в этом режиме (тогда плата переводится в аналоговый режим). SB Live! всегда инициализируется в аналоговом режиме. Вы можете уточнить текущий режим работы платы, используя комманду emuctrl mode и переключить режим с помощью команды emuctrl mode [analog|digital].

На всех платах режим работы влияет на использование разъема 'Analog/Digital Out'. На платах семкйства SB Live! он ткже влияет на использование разъема 'Rear Out'.

Используемые разъемы

SB Live!
название выхода в emuctrl аналоговый режим цифровой режим
AC97 (Front Speakers) Line Out Line Out,
Analog/Digital Out(?)
TOS Link D/K D/K
DIGITAL: Center Silent Analog/Digital Out
DIGITAL: Subwoofer Silent Analog/Digital Out
Headphones Live!Drive Headphones(?) D/K
Rear Speakers Rear Out Analog/Digital Out
Center Analog/Digital Out Silent
Subwoofer Analog/Digital Out Silent

Где 'D/K' означает 'Неизвестно куда попадает', 'Silent' означает, что сигнал, управляемый этим уровнем emuctrl не подается на какой-либо разъем платы. Остальное - название разъемов из 'Getting Started' от Audigy

Audigy
название выхода в emuctrl аналоговый режим цифровой режим
DIGITAL: Front D/K Analog/Digital Out
DIGITAL: Center D/K Analog/Digital Out
DIGITAL: Subwoofer D/K Analog/Digital Out
Headphones AudigyDrive Headphones AudigyDrive Headphones
DIGITAL: Rear D/K Analog/Digital Out
Front Line Out Line Out
Center Analog/Digital Out Silent
Subwoofer Analog/Digiatl Out Silent
Rear Rear Out Rear Out
AC97 ?? D/K D/K

Где 'D/K' означает 'Неизвестно куда попадает', 'Silent' означает, что сигнал, управляемый этим уровнем emuctrl не подается на какой-либо разъем платы. Остальное - название разъемов из 'Getting Started' от Audigy

скорее всего и в цифровом и в аналоговом режиме на разъемах S/PDIF на AudigyDrive вы получите звуковой (цифровой) сигнал.

Маршрутизация звукового сигнала

Все регуляторы громкости, кроме "Master Vol" и "Master Rec Vol" управляются из emuctrl.
На Audigy "Master Vol" и "Master Rec Vol" управляются из стандартного микшера FreeBSD mixer через регуляторы "vol" и "rec". Регулятор fx0 может быть изменен как из emuctrl ("FX BUS 0") так и из mixer ("pcm").
На SBLive! "Master Vol" и "Master Rec Vol" могут быть изменены из emuctrl.

Воспроизведение:

         [InVolume0]
              |
              V                        [OutVol0]
[input0]---->[*]-----\                      |
   .                 |                      V
   .     [InVolumeN] .  [Master Vol]   /---[*]---->[output0]
   .          |      |       |        /
   .          V      V       V       /
[inputN]---->[*]--->[+]====>[*]======------>[*]---->[outputP]
                     ^                       ^
                     |                       |
[fx0]------->[*]--->[+]                    [OutVolP]
  .           ^      ^
  .           |      |
  .      [FxVolume0] |
[fxM]------->[*]----/
              ^     
              |      
         [FxVolumeM]  

где output0..P - разъемы платы и внешнего модуля.

Если вы хотите услышать звук с кодека AC97 (например, CD Audio) на Audigy вы должны установить регулятор "AC97 Codec" (обычно это in0) в ненулевое положение (например, 75).

Монофонические выходы (центр и саб) вычисляются как (Left + Right)/2.

Запись:

       [InRecVolume0]
              |
              V                         
[input0]---->[*]-----\                  
   .                 |                  
   .  [InRecVolumeN] . [Master Rec Vol] 
   .          |      |       |        
   .          V      V       V       
[inputN]---->[*]--->[+]====>[*]======------>[*]---->[outputX]
                     ^                       ^
                     |                       |
[fx0]------->[*]----[+]                  [OutRecVolX]
  .           ^      |
  .           |      |
  .   [FxRecVolume0] |
[fxM]------->[*]----/
              ^     
              |      
      [FxRecVolumeM]  

где outputX - STEREO выход DSP, предназначеный для записи (обычно называется "A/D converder (REC)"). Запись с MONO выхода DSP ("Mic (REC)") не поддерживается. Для записи вы должны установить уровень записи в emuctrl (регулятор "A/D converter") и уровень "rec" mixer (который контролирует "Master Rec Vol" на Audigy и уровень записи кодека AC97 на SBLive!) в ненулевое значение.

S/PDIF ввод/вывод

Вход AudigyDrive 'SPDIF IN' в emuctrl обозначен как 'Optical S/PDIF'. К сожалению, мне неизвестно, что подключено к входу DSP, который в emuctrl обозначен как 'Coaxial S/PDIF'.

Вход S/PDIF работает в режиме 24bit/96kHz, PCM (декодера DolbyDigital&tm; в драйвере нет, как нет и возможности передать программе исходный цифровой поток без изменений).

Вы должны установить усиление в '1' чтобы избежать переполнения внутренних регистров, вызывающее 'clipping'.

Запись

Для записи вам необходимо сделать следующие настройки:

  1. (Только Audigy) Установите основной уровень записи, используя команду mixer rec <level> (например mixer rec 100). На SBLive! основной уровень записи всегда составляет 100%.
  2. (Только SBLive!) Установите уровень записи кодека AC97 используя команду mixer rec <level> (например mixer rec 100). На Audigy уровень записи кодека AC97 всегда составляет 0%. На этих платах вы записываете сигнал, который воспроизводится через кодек AC97.
  3. Установите уровень выхода "REC" используя emuctrl set outX <level>, где X равен 6 на SBLive! и 13 на Audigy. Лучше всего начать с 100%.
  4. Если вы записываете со входа, подключенного к кодеку AC97 вам необходимо установить необходимый уровень записи используя команду mixer. Учтите, что на Audigy вы записываете с выхода "воспроизведение" кодека AC97. На Audigy не имеет значения, что вы выберете в качестве "источника для записи" (через команду mixer =rec ...).
  5. Установите уровень записи для нужного входа DSP используя emuctrl rset inX <level>.

Пример: запись со входа AUX2 (на AudigyDrive) на Audigy

mixer rec 100		## установка общего уровня записи
emuctrl amp 4		## общее усиление
emuctrl set out13 100	## установка уровня выхода "REC" сигнального процессора
emuctrl rset in6 100	## установка уровня входа AUX2 DSP
wavrec test.wav		## записываем 10сек используя wavrec из ports/audio/wavplay.

Советы по реению некоторых проблем

Я надеюсь, что этот параграф поможет вам решить ваши проблемы самостоятельно.

Существует ли файл /dev/emu10kx0?

Да: посмотрите на содержимое этого файла ( cat /dev/emu10kx0 ). Вы должны увидеть что-то похожее на:

FreeBSD EMU10Kx Audio Driver

Hardware resource usage:
DSP General Purpose Registers: 154 used, 512 total
DSP Instruction Registers: 168 used, 1024 total
Card supports AC97 codec and 5.1 output, Audigy DSP code

Installed devices:
EMU10Kx Mixer Interface on emu10kx0
	          FX BUSes  Inputs    Outputs   
	Playback  1         8         18       
	Recording 1         8         0        
EMU10Kx PCM Interface on pcm0
	Digital mode, S/PDIF output is PCM stereo

Если вы видите этот (или похожий) текст, значит драйвер загружен. Вам необходимо установить нужный уровень громкости и/или нужный режим работы платы, используя программу emuctrl. Для того, чтобы показать скрытые регуляторы в emuctrl запустите emuctrl debug on. Если вы обнаружили регулятор, который изменяет уровень громкости, но был скрыт или если ни один регулятор не влияет на уровень громкости, отправьте мне информацию, описаную в разделе Если ничего не помогло.

Если вы видете сообщение 'Device not configured' то драйвер не загружен.

Проверьие наличие звуковой подсистемы - существут ли файл /dev/sndstat?

Нет такого файла:
Операционная система не может загрузить модуль звуковой подсистемы. Удостоверьтесь, что у вас в каталоге модулей ядра присутсвует файл sound.ko или snd_pcm.ko. Если вы используте опцию MODULES_OVERRIDE в вашей конфигурации ядра, добавьте "sound/sound" или "sound/pcm", в зависимости от верси ОС. Если этот модуль присутсвует, попробуйте загрузить его вручную (kldload sound или kldload snd_pcm).

Файл присутсвует:
Посмотрите на его содержимое (cat /dev/sndstat). Вы должны увидеть список установленных устройств. Если в этом списке есть одна из следующих строк

			
pcmX: <Creative EMU10K1> on pciX .... 
pcmX: <Creative Audigy (EMU10K2)> on pciX .... 
pcmX: <Creative Audigy 2 (EMU10K2)> on pciX .... 
то в вашей системе загружен драйвер emu10k1 и плата поддерживается этим драйвером. Для использования драйвера emu10kx вам нужно запретить загрузку драйвера emu10k1. Если в конфигурации ядра присутсвует строка "device pcm" вы должны убрать ее и скомпилировать его в виде модуля. Если устройство PCM не присутствует в конфигурации ядра, посмотрите в loader.conf и rc.local.

Если ничего не помогло

Мне нужна будет следующая информация

  1. dmesg.
  2. pciconf -v -l.
  3. kldstat.
  4. cat /dev/sndstat.
  5. cat /dev/emu10kx0.

Известные проблемы

  1. Компьютер "зависает" если вы загружаете emu10kx, snd_pcm и midi2 из loader.conf. Это происходит после
    Device configuration finished.
    procfs registered
    Timecounter "TSC" frequency 400910787 Hz quality 800
    Timecounters tick every 10.000 msec
    Linux ELF exec handler installed
    
    .
  2. kernel panic при попытке выгрузить драйвер в процессе воспроизведения. Проблема в интервейсе к AC97 в коде для Audigy.

Планы

  1. определение наличия LiveDrive/AudigyDrive?
  2. динамическая загрузка кода DSP.

Что я точно не хочу делать:

  1. Джойстик (кому он под FreeBSD нужен?)
  2. SoundFont

исходные тексты

утилитки

  1. тест работоспособности воспроизведения звука (free-oss-tes.tar.gz)
  2. программа для воспроизведения файлов в формате AC3 (play-ac3.tar.gz), из пакета драйверов emu10k для Linux.

Контактная информация

Адрес элетроннй почты: chibis @ gfk . ru .
Пожалуйста, добавьте "[AUDIGY]" или "[SBLIVE]", в зависимости от типа платы которую вы используете, в тему пиьма. Мне будет проще отличить его от СПАМа. Также желательно не использовать при написании письма кодировку UNICODE.

Вы можете обсудить свои вопросы с другими пользователями (_не_ со мной) на Audigy drivers Forums
У меня нет возможности постоянно отслеживать этот форум.

Цыбизов Юрий,
GfK RUS network admin

$Id: readme-ru.htm,v 1.37 2005/10/15 19:53:23 chibis Exp $