FreeBSD-4.x and multimedia
======================

Общая рекомендация для всех карт - выключите в BIOS, "PnP OS Enable".
Поддерживаемые карты можно найти в ядре: `cd /sys/dev/sound`
По умолчанию подразумевается что вы не забудете для ISA добавить в ядро:

device          isa

а для PCI:

device          pci

а для звуковых карт, в случае использования драйвера newpcm, строку:

device		pcm

Примечание: прежде чем скачивать драйвера со страниц разработчиков,
посмотрите версию вашей системы:

uname -a

и текущие драйвера для звуковых карт, возможно ваша карта уже поддерживается
вашим ядром, изучите содержимое:

cd /usr/src/sys/dev/sound - здесь находится sound-driver newpcm

grep "номер_вашего_чипа" */*

или поищите в текстах *.c и *.h

/usr/src/sys/dev/sound/isa - поддерживаемые ISA (PNP)
/usr/src/sys/dev/sound/pcm - AC'97
/usr/src/sys/dev/sound/pci - PCI

cd /usr/src/sys/i386/isa/sound - здесь находится старый VoxWare sound-driver,
почитайте имеющиеся там README.

Ниже мой список и поиски различных ресурсов
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Audio:
------

ICH
~~~

Экспериментальный драйвер для звуковых карт интегрированных в материнскую
карту: AC'97 интерфейс Intel 443MX, 810 и 820 чипсетов (возможна работа
815E чипов)

Примечание: уже в FreeBSD 4.4-RELEASE

http://www.katsurajima.seya.yokohama.jp/ich/

Установка:

скачать драйвер с указанной выше страницы: ich.c.gz

# gunzip ich.c.gz
# cp ich.c /usr/src/sys/dev/sound/pci

затем добавить строку в файл: /usr/src/sys/conf/files
в районе:

:
dev/sound/pci/csapcm.c optional pcm pci
dev/sound/pci/ds1.c optional pcm pci
dev/sound/pci/emu10k1.c optional pcm pci
dev/sound/pci/es137x.c optional pcm pci
dev/sound/pci/ich.c optional pcm pci
------------------------------------
dev/sound/pci/neomagic.c optional pcm pci
dev/sound/pci/t4dwave.c optional pcm pci
:

добавить строку "device pcm" и пересобрать ЯДРО:

cd /usr/src/sys/i386/conf
config ИМЯ_ЯДРА
cd /usr/src/sys/compile/ИМЯ_ЯДРА
make depend;make;make install

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

Aureal/Vortex
~~~~~~~~~~~~~
http://www.cis.ohio-state.edu/~matey/au88x0/

Company             Soundcard            Chipset     Tested with this driver
------------------------------------------------------------------------------
Aureal Inc.         SQ1500               Vortex Advantage      Yes. Works.
Aureal Inc.         SQ2500               Vortex2               Yes. Works.
Diamond Multimedia  Monster Sound MX300  Vortex2               Yes. Works.
Diamond Multimedia  Sonic Impact S90     Vortex2               Yes. Works.
Digital Research    DRSOUNDA3V           Vortex2               Yes. Works.
Technologies
Genius              Sound Maker 64       Vortex1               Yes. Works.
Hi-Val              PCI 338              Vortex1               Yes. Works.
Hi-Val              PCI 576              Vortex2               Yes. Works.
I/OMagic            MagicWaveV1          Vortex Advantage      Yes. Works.
I/OMagic            MagicWaveV2          Vortex2               Yes. Works.
Turtle Beach        Montego A3D          Vortex1               Yes. Works.
Turtle Beach        Montego A3D II       Vortex2               Yes. Works.
TerraTec Promedia   XLerate              Vortex1               Yes. Works.
TerraTec Promedia   XLerate Pro          Vortex2               Yes. Works.
Videologic          SonicVortex2         Vortex2               Yes. Works.
Xitel               Storm 3D             Licensed              Yes. Works.
Xitel               Storm VX             Vortex1               Yes. Works.
Xitel               Storm Platinum       Vortex2               Yes. Works.

драйвер отныне в /usr/ports/audio/aureal-kmod

PCI-Drives for Sound уже в KERNEL для следующих моделей карт:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Ensoniq1370/71
Neomagic
Trident 4Dwave
Maestro 1/2 в ядре - см. /sys/dev/sound/pci
http://access.cent.saitama-u.ac.jp/~taku/freebsd/maestro/newpcm/readme.html

Maestro 3xxx       - http://people.freebsd.org/~scottl/maestro3/

SBLive поддержка в ядре или см.

http://www.defcon1.org/html/Hardware_Articles/PnP_Sound/PnP_Modem/SB-Live5/sb-li
ve4.html

Для PCI звуковых карт (включая SB-Live/PCI) достаточно включить в ядре строку:

device          pcm

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

`dmesg | grep pcm` или `cat < /dev/sndstat`

- если все ok, запустить mixer и посмотреть параметры, или скомпилить mixer
на вкус их портов: aumix/xmix/xmixer/xmmix/...

- если получили в ответ "no such device" - просто создайте их:

cd /dev; ./MAKEDEV snd0 (0,1,... - в зависимости от количества карт)

Примечание: к счастью у меня неразрешимых проблем со звуковыми картами
не было: PNP16(ISA), AWE32/64, Ensoniq 1371, Aureal 8820.

Тем у кого ЕСТЬ проблемы с картами поддерживаемыми во FreeBSD сооветую
изучить уже указанные ссылки и те что ниже:

http://www.defcon1.org/html/Hardware_Articles/PnP_Sound/pnp_sound.html

http://www.defcon1.org/html/ssh/vpn-howto/pnp-soundcard.html

http://www.defcon1.org/html/Hardware_Articles/OpenSSH/Hardware/File-Systems/sb16
-40.html

http://www.defcon1.org/%7Echrisw/FreeBSD/sb128pci.html

Поддержка звуковых карт в ядре посредством двух драйверов:

- старые карты (ISA) поддерживаются драйвером Voxware:

    Adlib
    SoundBlaster
    SoundBlaster Pro
    ProAudioSpectrum
    Gravis UltraSound
    Roland MPU-401 sound cards.

- более современные карты поддерживаются новым драйвером newpcm
  (включая поддержку старых карт из Voxware):

    Advance Asound 100, 110 and Logic ALS120
    Crystal Semiconductor CS461x/462x/428x
    ENSONIQ AudioPCI ES1370/1371
    ESS ES1868, ES1869, ES1879 and ES1888
    ESS Maestro-1, Maestro-2, and Maestro-2E
    ForteMedia fm801
    Gravis UltraSound MAX/PnP
    MSS/WSS Compatible DSPs
    NeoMagic 256AV/ZX
    OPTi 931/82C931
    SoundBlaster, Soundblaster Pro, Soundblaster AWE-32, Soundblaster AWE-64
    Trident 4DWave DX/NX
    VIA Technologies VT82C686A
    Yamaha DS1 and DS1e

Ниже список из FreeBSD HandBook
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Crystal 4237, 4236, 4232, 4231
    Yamaha OPL-SAx
    OPTi931
    Ensoniq AudioPCI 1370/1371
    ESS Solo-1/1E
    NeoMagic 256AV/ZX
    Sound Blaster Pro, 16, 32, AWE64, AWE128, Live
    Creative ViBRA16
    Advanced Asound 100, 110, and Logic ALS120
    ES 1868, 1869, 1879, 1888
    Gravis UltraSound
    Aureal Vortex 1 or 2

Примеры конфигурации ядра с поддержкой различных карт в FreeBSD:
----------------------------------------------------------------

Из HandBook (непоятно, почему постоянные вопросы КАК МНЕ ЗАСТАВИТЬ РАБОТАТЬ...)

1. Creative, Advance, and ESS Sound Cards

     Creative SB16, SB32, SB AWE64 (including Gold) and ViBRA16
     Advance Asound 100, 110 and Logic ALS120
     ESS ES1868, ES1869, ES1879 and ES1888

Вариант 1.
~~~~~~~~~~

Описания KERNEL:

PnP-ISA:

device pcm
device sbc

Вариант 2.
~~~~~~~~~~

Non-PnP

device pcm
device sbc0 at isa? port 0x220 irq 5 drq 1 flags 0x15

с вашими port=0xABC и irq=X о сути и значениях flags читайте:

man 4 sbc & man 4 pcm

2. Gravis UltraSound Cards

Вариант 1.
~~~~~~~~~~

Описания KERNEL:

PnP-ISA:

device pcm
device gusc

Вариант 2.
~~~~~~~~~~

gusc - Gravis UltraSound ISA bridge device driver
       Gravis UltraSound PnP
       Gravis UltraSound MAX

Non-PnP

device pcm
device gus0 at isa? port 0x220 irq 5 drq 1 flags 0x13

с вашими port=0xABC и irq=X о сути и значениях flags читайте:

man 4 gusc & man 4 pcm

3. Crystal Sound Cards

 csa - Crystal Semiconductor CS461x/462x/428x PCI bridge device driver

Описания KERNEL:

device pcm
device csa

man 4 gusc & man 4 pcm

4. PCI Карты поддерживаемые текущим драйвером pcm (newpcm)

   Trident 4DWave DX/NX (PCI)
   ENSONIQ AudioPCI ES1370/1371 (PCI) [ряд SB PCI-128 выполнен именно на
                                       чипах ES1370/1371]
   ESS Solo-1/1E (PCI)
   NeoMagic 256AV/ZX (PCI)

Описания KERNEL:

device pcm

Все! Неправда ли - несложно.

Примечание: вполне возможно что ваша карта сделана на чипсете который
поддерживается драйвером, но после генерации и установки нового ядра,
карта все равно не распознается. Запишите при загрузке Device-ID и
Vendor-ID и поищите в драйверах для вашей карты эти значения, попробуйте
добавить ваши, возможно это решит вашу проблему.

Создали свое ядро в файле /sys/i386/conf/MYKERNEL

cd /sys/i386/conf
config MYKERNEL
cd ../../compile/MYKERNEL
make depend
make
make install
^^^^^^^^^^^^- установили новое ядро в систему, после перезагрузки ваша
карта должна опознаться, см. dmesg. Если не опозналась - ищите проблему.

Итак карта опознана, осталось создать необходимые устройства, скомпилировать
например, mpg123 и проверить работоспособность:

[alone]~ > cat < /dev/sndstat
FreeBSD Audio Driver (newpcm) Feb 27 2001 18:50:32
Installed devices:
pcm0:  at memory 0xd9000000 irq 12 (4p/1r channels duplex)
[alone]~ > 

или

[unix1]~ > cat < /dev/sndstat
FreeBSD Audio Driver (newpcm) Mar 13 2001 17:30:27
Installed devices:
pcm0:  at io 0xc400 irq 9 (1p/1r channels duplex)
[unix1]~ > 

Карта опознана драйвером и на чем живет и в каком режиме - мы видим.

затем создаем необходимый набор устройств для карты, в зависимости от того
как ее опознало ядро - pcm0 или pcm1:

для pcm0

cd /dev
./MAKEDE snd0

для pcm1

cd /dev
./MAKEDE snd1

получаем набор следующих устройств, зависимо от карты и драйвера:

Device          Description
----------------------------------------------------     
/dev/audio      SPARC-compatible audio device
/dev/dsp        Digitized voice device
/dev/dspW       Like /dev/dsp, but 16 bits per sample
/dev/midi       Raw midi access device
/dev/mixer      Control port mixer device
/dev/music      Level 2 sequencer interface
/dev/sequencer  Sequencer device
/dev/pss        Programmable device interface
         
Если для вашей карты драйвер поддерживает несколько каналов, то вам
необходимо создать соответствующее количество устройст /dev/dspX в
соответствии с описанием в драйвере.

Пример:

[alone]~/FreeBSD > ls -la /dev/dsp*
lrwxrwxrwx  1 root  wheel         4 Dec 26  2000 /dev/dsp -> dsp0
crw-------  1 lavr  sysct   30,   3 Aug 14 18:57 /dev/dsp0
crw-------  1 lavr  sysct   30, 0x00010003 Jun  7 13:48 /dev/dsp0.1
crw-------  1 lavr  sysct   30, 0x00020003 May 14 19:02 /dev/dsp0.2
crw-------  1 lavr  sysct   30, 0x00030003 Jun 24 21:02 /dev/dsp0.3
crw-------  1 lavr  sysct   30, 0x00040003 May 14 19:22 /dev/dsp0.4
lrwxr-xr-x  1 root  wheel         6 Mar 20 19:52 /dev/dsp1 -> dsp0.1
lrwxr-xr-x  1 root  wheel         6 Mar 20 19:52 /dev/dsp2 -> dsp0.2
lrwxr-xr-x  1 root  wheel         6 Mar 20 19:52 /dev/dsp3 -> dsp0.3
lrwxr-xr-x  1 root  wheel         6 Mar 20 19:52 /dev/dsp4 -> dsp0.4
[alone]~/FreeBSD > uname -a
FreeBSD alone.dubna.ru 4.2-STABLE lavr@alone.dubna.ru:/usr/src/sys/compile/LAVR  i386
[alone]~/FreeBSD > 

Примечание:

Aureal - разнообразие Vortex, драйвера для этих карт ныне в портах
и выполнены как подгружаемые модули:
kldstat - посмотреть, kldload module_name - загрузить.

aureal-driver -> /usr/ports/audio/aureal-kmod

Из недорогих и на мой взгляд хороших, удачных карт - Aureal и Maestro, кроме
того их драйвера поддерживают больше одного канала dsp, конечно же
Ensoiq-1370/71, но с одним каналом. Остальные карты SB AWE/Live - дорогие и
посему я их на своих машинах не пробовал, хотя у соседей фунциклируют без
особых проблем.

Полезную информацию по звуковым картам на шине ISA можно найти в
старых драйверах ядра VOXWARE: /usr/src/sys/i386/isa/sound

Новые драйвера можно посмотреть в /usr/src/sys/dev/sound

 Важно одно - необходимо осознавать ЧТО вы хотите сделать и ЧТО вы СОБСТВЕННО
ДЕЛАЕТЕ:

- шина: ISA или PCI
- NonPnP/PnP
- карта full-duplex
- правильно указаны IO/IRQ/DMA

если что-то не так или не понимаете, попробуйте посмотреть конфигурации
карты в DOS или Windows.

Зачастую, по указанным выше ссылкам, вы найдете старую информацию, например
конфигурацию SoundBlaster на базе драйвера VoxWare и для версии FreeBSD
2.2.x, 3.x, так что будьте внимательны и осознавайте ЧТО ВЫ ДЕЛАЕТЕ.

Всегда полезно посмотреть что и как у вас опозналось, команды:

 - `dmesg`
 - `pciconf -l`
 - `pnpinfo`

Если вы разобрали и устранили все проблемы связанные с конфигурированием
ваших Soundblaster'ов, можете приступить к сборке различного мултимедиа
software(я перечислю свои личные предпочтения, это не значит что они лучшие):

Миксеры:
~~~~~~~~
- mixer
  /usr/sbin/mixer

- aumix
  cd /usr/ports/audio/aumix
  make && make install
  aumix

- xmix
  cd /usr/ports/audio/xmix
  make && make install

RIFF/U-law/WAV player'ы:
~~~~~~~~~~~~~~~~~~~~
- play
  cd /usr/ports/audio/play
  make && make install
  play -f /dev/cdrom -f s/u/U/A/a/g filename [effects] see sox.
  rec

- waveplay
  cd /usr/ports/audio/waveplay
  make && make install
  waveplay [options] 

- wavplay
  cd /usr/ports/audio/wavplay
  make && make install
  wavplay [options]

MP3-player'ы:
~~~~~~~~~~~~~
- mpg123
  cd /usr/ports/audio/mpg123
  make && make install

  mpg123 -b 1000 /path/subdir/*.mp3
  mpg123 -b 2000 -@ play_list.pls
  mpg123 -y -b 2000 битый_файл.mp3
  mpg123 --aggressive -b 8000 http://live.xradio.ru:11100/
  mpg123 -b 8000 http://live.xradio.ru:11200/
  mpg123 --aggressive -b 8000 http://live.xradio.ru:11300/

 [use proxy]

  export MP3_HTTP_PROXY=http://proxy.jinr.ru:8080/ [sh/bash]
  setenv MP3_HTTP_PROXY http://proxy.jinr.ru:8080/ [csh/tcsh]

  mpg123 --aggressive -b 8000 http://live.xradio.ru:11300/

  или

  mpg123 -b 4000 -p http://proxy.jinr.ru:8080/ http://live.xradio.ru:11300/

- xaudio + mxadb

  ftp://ftp.xaudio.com/pub/xaudio/players/unix-motif/x86-unknown-freebsd-elf/xaudio-1.0.5.x86-unknown-freebsd-elf.tar.gz
  ftp://ftp.xaudio.com/pub/xaudio/tools/unix-motif/x86-unknown-freebsd-elf/mxadb-1.0.x86-unknown-freebsd-elf.tar.gz
 
  xaudio filename.mp3
  или
  mxaudio [front-end к xaudio & mxadb]

- x11amp [OSS player]
  cd /usr/ports/audio/x11amp
  make && make install
  x11amp

- xamp
  cd /usr/ports/audio/xamp
  make && make install
  xamp

CD-player'ы:
~~~~~~~~~~~~
- cdplay [text-based cd-player]
  cd /usr/ports/audio/cdplay
  make && make install

- cd /usr/ports/audio/xmcd
  make && make install
  cd /usr/X11R6/lib/X11/xmcd/config
  vi common.cfg
  модифицируем cddbPath
cddbPath:       rock;jazz;blues;newage;classical;reggae;folk;country;soundtrack;misc;data;cddbp://cddb.sai.msu.su;cddbp://cddb.ton.tut.fi;cddbp://sunsite.unc.edu

Russian cddb: zeus.sai.msu.ru

  /usr/X11R6/bin/xmcd

Конвертеры:
~~~~~~~~~~~
- sox [Sound Converter: .au,.voc,.wav,.aiff,.riff,.cdr,.raw,mono/stereo...]
  cd /usr/ports/audio/sox
  make && make install
  прошу прощения за примеры, тут их мульон... - см. man sox

- bladeenc [mp3-encoder]
  cd cd /usr/ports/audio/bladeenc
  make && make install
  bladeenc -crc -192 *.wav (создать *.mp3 с bitrate 192 и crc)
  bladeenc -del -256 *.wav (создать *.mp3 с bitrate 256 и удалить *.wav)
  bladeenc track-01.wav track-02.wav (создать track-01.mp3, track-02.mp3
                                      с bitrate==128)

поддерживаемые bitrate's: 32,40,48,56,64,80,96,112,128,160,192,224,256,320
default bitrate=128

- lame [инструментарий на базе ISO-codecs, VBR supported]
  cd /usr/ports/audio/lame
  make && make install
  lame -h Losa-Opyat.wav Losa-Opyat.mp3 (кодировать с постоянным bitrate=128)
  lame -v file.wav file.mp3 (кодировать с VBR качеством=4 by default)
  lame -v 0 -b 64 -B 256 file.wav file.mp3 (кодировать с VBR=0 наивысшее
                                            качество,
                                            нижняя граница bitrate=64
                                                   верхняя bitrate=256)

Ripper'ы/Grabber'ы:
~~~~~~~~~~~~~~~~~~~
- atapi ripper - dagrab
  cd /usr/ports/audio/dagrab
  make && make install
  cd /dev && ln -s acd0c cdrom (acd0c - заменить на устройство в вашей
                                конфигурации)
  dagrab -a (по умолчанию используется устройство /dev/cdrom и формат
             выходных файлов track%02d.wav)

  dagrab -a -d /dev/acd0c -f Losa_%02d.wav [сграбить весь диск и создать
  выходные файлы: Losa_01.wav
                  Losa_02.wav
                  ...
                  Losa_0n.wav

- scsi ripper - tosha (scsi - the best, сравнений с EIDE[UDMA] БЫТЬ не может)
  cd /usr/ports/audio/tosha
  make && make install
  cd /dev && ln -s rcd0c cdrom (rcd0c - заменить на устройство в вашей
                                конфигурации, man 4 scsi, man 4 cd, man 4 da)

Примечание: если драйвер вашей звуковой карты поддерживает несколько каналов,
вы можете запускать ваши приложения с указанием различных каналов и
наслаждаться кокофонией a-la M$ Windows.

--
lavr / Andrey Lavrentyev