# Sound Blaster AWE 32/64 HOWTO

## Autor: Marcus Brinkman Marcus.Brinkmann@ruhr-uni-bochum.de
v1.2, 11 Stycznia 1998
Wersja polska: Leszek Urbański tygrys@gdansk.sprint.pl
v1.0, 23 Lutego 1998

Dokument ten został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem http://homepage.ruhr-uni-bochum.de/Marcus.Brinkmann/soundblaster.html Ten dokument opisuje jak zainstalować i skonfigurować kartę Sound Blaster 32 (SB AWE 32, SB AWE 64) firmy Creative Labs w systemie Linux używając sterownika "AWE Sound Driver Extention" napisanego przez Takashi-ego Iwai. Opisuje także specjalne narzędzia i odgrywarki dla SB AWE. Przyjętym systemem będzie Debian GNU Linux, ale opisany sposób powinien działać w każdej innej dystrybucji.

## 1. Wprowadzenie

To jest JTZ o Sound Blaster-rze AWE. Podaje ono dokładne informacje o maksymalnym wykorzystaniu Twojego Sound Blaster'a 32 (lub lepszego), włączając w to syntezę Wave Table. Ten dokument opisuje wszystkie karty SB od SB 32.

Karty Sound Blaster są dobrze znane w środowisku DOS i Windows, a wiele osób chce też używać swoje karty pod Linux'em. Niestety, Creative Labs dostarcza tylko sterowniki pod Windows i DOS'a, więc zainstalowanie karty SB pod Linuxem nie jest proste. [oj, chyba jest :-) - przyp. tłum.] Ten dokument próbuje opisać jak można używać właściwości kart SB AWE w środowisku Linuxa.

## 1.1 Podziękowania

Dokument zawiera informacje, które wziąłem z FAQ Sterownika AWE i FAQ ISA PnP. Zobacz sekcję Źródła dla poznania autorów i miejsca tych dokumentów. Dzięki nim, obsługa dźwięku SB AWE jest możliwa. Mnóstwo ważnej pracy było zrobione przez Hannu Savolainen'a, który napisał sterownik dostarczany z jądrem Linuxa. Dziękuję!

Chcę podziękować Nicoli Bernardelli za testowanie AWE64. Bez niego wiele błędów pozostałoby niewykrytych.

Dziękuję za SGML Tools, to HOWTO jest dostępne w kilku formatach, wszystkie wygenerowane z jednego pliku źródłowego.

## 1.2 Poprawki w stosunku do poprzednich wersji

Wersja 1.0

Pierwsza wersja

Wersja 1.1

Poprawiona pisownia (dzięki Curt!), dodana potrzebna wersja isapnp, teraz dostępna na sunsite i mnóstwie kopii.

Wersja 1.2

Wersja francuska jest już dostępna, małe poprawki, dużo poprawionej pisowni (dzięki programowi ispell)

## 1.3 Nowe wersje tego dokumentu

Najświeższe wersje są na mojej stronie domowej - Sound Blaster AWE HOWTO

Nowe wersje tego dokumentu będą przesyłane na wiele anonimowych serwerów FTP składujących tego typu informacje, jak np. ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/mini

Hypertekstowe wersje tego i innych Linuxowych HOWTO są dostępne na wielu serwerach WWW, np. http://sunsite.unc.edu/LDP. Większość dystrybucji Linuxa na CD-ROM'ach zawiera dokumenty HOWTO, często w katalogu /usr/doc.

Dzięki Arnaudowi Launay zoro@lsol.tm.fr jest dostępna francuska wersja tego dokumentu! Najświeższa wersja jest dostępna przez HTTP albo anonimowe FTP.

Jeżeli przetłumaczysz ten dokument na inny język, daj mi znać, a dołączę odnośnik do niego tutaj.

## 1.4 Kontakt z autorem

Polegam na tobie, Czytelniku, w zrobieniu tego HOWTO użytecznym. Jeżeli masz jakiekolwiek sugestie, poprawki, albo komentarze, proszę, żebyś przysłał je do mnie, Marcus.Brinkmann@ruhr-uni-bochum.de, a ja postaram się wziąć je pod uwagę w następnej edycji.

Byłbym szczególnie wdzięczny za informacje o procedurze startowej (skrtypty inicjalizujące itp.) innych popularnych dystrybucji Linuxa, np. RedHat lub SuSE Linux.

Jeżeli opublikujesz ten dokument na CD-ROM'ie lub na papierze, kopia była by mile widziana. (Przez e-mail możesz zapytać się o mój adres pocztowy) Pomyśl także o złożeniu dotacji dla LDP (Linux Documentation Project), żeby wspomóc tworzenie darmowej dokumentacji Linux'a. Skontaktuj się z koordynatorem Linux HOWTO, Gregiem Hankins'em gregh@sunsite.unc.edu, żeby zdobyć więcej informacjii.

## 1.5 Zasady dystrybucji

Prawa autorskie - (C)1997 Marcus Brinkmann.

To HOWTO jest dokumentacją darmową; możesz ją udostępniać i/lub modyfikować na zasadach Licencji Publicznej GNU (GNU General Public License) publikowanej przez FSF (Free Software Foundation); albo wersji 2, albo jakiejkolwiek późniejszej wersji.

Ten dokument jest udostępniany z nadzieją, że będzie on użyteczny, ale bez żadnej gwarancji; nawet bez gwarancji dostępności ani przydatności w określonym przypadku. Przestudiuj Licencję Publiczną GNU, dla uzyskania dokładnych informacji.

Możesz uzyskać kopię Licencji pisząc do FSF - Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

## 2. Zanim zaczniesz

## 2.1 Wprowadzenie

Ten dokument próbuje pomóc Ci w instalacji i użytkowaniu karty Sound Blaster AWE 32 lub Sound Blaster AWE 64 firmy Creative Labs w Twoim Linuxie. Odnośnym systemem jest Debian GNU Linux na platformie Intel i586, ale metoda tu przedstawiona powinna działać z każdą inną dystrybucją Linuxa, jak i na każdej innej platformie sprzętowej obsługiwanej prze Linuxowy sterownik dźwięku (różnice będą opisane).

Pamiętaj, żeby dokładnie przeczytać "Linux Sound HOWTO" (zobacz sekcję Dodatkowe informacje. Traktuję swój dokument jako dodatek do Sound HOWTO, często możesz tam znaleźć informacje o rzeczach, których tu nie opisałem.

## 2.2 Kilka uwag o kartach SB AWE

SB AWE 32 zawiera urządzenie dźwięku RAW, standardową syntezę OPL-2/OPL-3, port MIDI MPU-401 i syntezę Wave Table EMU 8000 o 32-głosowej polifonii (przestudiuj Sound HOWTO dla wyjaśnienia tych terminów).

SB AWE 64 ma wszystkie możliwości AWE 32 i dodatkowo syntezę Wave Guide, z której Creative Labs jest szczególnie dumny. Problemem dla użytkowników Linuxa jest fakt, że dodatkowe 32 głosy są generowane programowo i wysyłane przez urządzenia dźwięku RAW. Ponieważ Creative Labs nie widzi rynku dla sterowników pod Linuxa, sterownik syntezy Wave Guide jest dostępny tylko pod Windows 3.1 i Windows 95.

Znaczy to, że z punktu widzenia użytkownika Linuxa SB AWE 32 i AWE 64 są prawie identyczne. [AWE 64 ma troszeczkę lepsze przetworniki A/C i C/A -- przyp. tłum.] Od tej chwili będę się odnosił do SB AWE wogóle i wsponę o różnicach, jeżeli wystąpią.

## 2.3 Kilka uwag o kartach Plug and Play

Większość nowoczesnych kart na platformę Intela są kartami ISA PnP, co jest skrótem dla ,,Plug and Play''. Znaczy to, że karta musi być skonfigurowana przez system operacyjny, a to musi być wykonane przez skrypt inicjaliacyjny (initialization routine) w czasie ładowania systemu. Są co najmniej trzy możliwe sposoby na wykonanie tego, jeżeli:

- Masz bios PnP, co oznacza, że może on "widzieć" karty PnP i może je skonfigurować. Jeżeli myślisz, że możesz używać wszystkich możliwości Twojego SB AWE PnP, jesteś w błędzie. Nawet jeżeli bios twierdzi, że obsługuje karty PnP, tylko inicjalizuje zbiór portów i adresów używanych przez Twoją kartę. Pewnie będziesz mógł odgrywać dźwięki RAW WAVE, ale nie będziesz mógł odgrywać np. muzyki MIDI. Z tego powodu bios PnP nie jest wyjściem.

- Masz system operacyjny obsługujący karty PnP. Obecne stabilne jądro Linuxa (2.0.x) nie jest takim systemem, więc będziemy musieli poczekać na przyszłe wersje jądra, obsługujące urządzenia PnP.

- Masz specjalny program, uruchamiany w czasie ładowania systemu, który inicjalizuje Twoje karty PnP. Tego sposobu użyjemy.

Najczęściej używanym oprogramowaniem dla inicjalizacji kart PnP pod Linuxem jest ,,isapnptools'' (zobacz sekcję Źródła i sekcję Zaczynamy). Opisują one właściwie jak skonfigurować wszystkie karty ISA PnP, nie tylko kartę dzwiękową.

## 2.4 Kilka uwag o ładowalnych modułach jądra

Niektóre sterowniki urządzeń mogą być budowane jako moduły zamiast wkompilowywania ich w jądro. Możesz znaleźć więcej informacji o modułach w ,,Kernel-HOWTO'' i ,,Module HOWTO'' (zobacz sekcję Dodatkowe informacje).

Jeżeli posiadasz kartę PnP, musisz zainstalować obsługę dźwięku jako ładowalny moduł jądra. Znaczy to, że nie możesz wbudować sterownika dźwięku w jądro, będziesz musiał zbudować go jako moduł, który może być władowany w jądro w czasie rzeczywistym. Jest to potrzebne dlatego, że jądro będzie zainstalowane przed skonfigurowaniem karty ISA PnP, a sterownik dźwięku musi być załadowany po skonfigurowaniu karty ISA PnP.

Moduł dźwięku jądra może być załadowany ręcznie - insmod sound albo modprobe -a sound albo w poprawnej linii skryptu ładującego twojego Linuxa (w Debianie jest wymagane aby dodać linię zawierającą sound do /etc/modules). Inne podejście, to odpalenie kerneld, demona instalującego i deinstalującego moduły.

Zauważ, że kerneld może nie być najlepszym rozwiązaniem dla sterownika AWE, ponieważ zabiera to dużo czasu, aby załadować moduł do jądra, szczególnie jeżeli chcesz używać syntezy Wave Table i ładować duże banki Sound Font, co musisz zrobić za każdym razem po załadowaniu modułu. Ponieważ kerneld usuwa nieużywane moduły po jednej minucie (standardowo), lepiej jest ładować moduł dźwięku ręcznie lub w czasie ładowania systemu. Zauważ, że samodzielne ładowanie modułu zapobiega usuwaniu go przez kerneld. Przy okazji: Możesz ręcznie ładować moduł i używać kerneld w tym samym czasie. Te dwie metody nie kolidują ze sobą, ale kerneld nie zajmuje się już modułem dźwięku.

Jest to użyteczne, gdy Twoje ustawienia miksera zostają skasowane po usunięciu i ponownym załadowaniu modułu. Rozwiązanie tego problemu zostanie podane w sekcji Mikser (jest tam opis jak można uruchomić mikser automatycznie kiedy moduł dźwięku zostaje załadowany). Jednakże zajmuje to trochę czasu dla kerneld do zainstalowania modułu, załadowania banku dźwięków i uruchomienia miksera. Z tego powodu lepiej jest instalować moduł dźwięku w czasie ładowania systemu i nie pozwalać kerneld go deinstalować.

## 2.5 Kilka uwag o sterowniku dźwięku w jądrze

Możesz zainstalować obsługę dźwieku bezpośrednio w jądrze lub jako ładowalny moduł. Jeżeli masz kartę PnP, musisz zainstalować obsługę dźwięku jako moduł, ponieważ karta PnP musi być zainicjalizowana przez isapnptools zanim moduł zostanie zainstalowany.

Jak możesz sobie wyobrazić, będziesz musiał zrekompilować jądro. Podam ci poniżej kilka podpowiedzi. Na razie pomówmy o obsłudze dźwięku w źródłach jądra. Jądro jest dystrybuowane z darmową (Lite) wersją OSS (USS) - sterownika dźwięku. Obecna wersja tego sterownika (3.5.4) nie obsługuje SB AWE w całości, a tylko jego część podobną do SB 16. Tak więc możesz odgrywać dźwięki RAW i używać syntezy OPL-2/OPL-3, ale nie będziesz mógł odgrywać muzyki MIDI z syntezą Wave Table.

Jeżeli chcesz używać syntezy Wave Table możesz kupić komercyjny sterownik firmy 4Front Technologies (proszę, niech mnie ktoś poinformuje, jeżeli to wystarczy) albo używać [darmowej] łaty na jądro "AWE 32 Sound Driver Extension" autorstwa Takashiego Iwai. Ten pierwszy nie jest opisany przez ten dokument, przyjmuję, że chcesz używać tego ostatniego.

Sterownik ten (zobacz sekcję Źródła ) jest publikowany na licencji GNU i jest dystrybuowany z kilkoma programami użytkowymi do syntezy EMU 8000 kart SB AWE.

Awedrv jest już dołączony do testowych wersji jądra (2.1.x), ale prawdopodobnie chcesz rozszerzać stabline wersje.

## 3. Jak zainstalować dźwięk z SB AWE

## 3.1 Rzeczy, które będą Ci potrzebne

Oto wymagania obsługi SB AWE pod Linuxem:

- Funkcjonalny system Linuxowy (np. Debian GNU Linux)

- Karta SB AWE 32 albo kompatybilna (np. SB32, SB32 PnP, SB AWE64, ...)

- Źródła jądra Linuxa ze sterownikiem dźwięku OSS/Free (normalnie dołączany, sprawdź w /usr/src/Linux/drivers/sound/Readme

- Sterownik "AWE 32 Sound Driver Extensions"

Jeżeli masz kartę PnP, będziesz także potrzebował:

- Pakiet oprogramowania isapnptools

Zobacz sekcję Źródła dla informacji skąd można zdobyć te programy.

## 3.2 Zaczynamy

Przyjmijmy, że masz poprawnie zainstalowaną kartę i prawdopodobnie już ją testowałeś pod DOS'em lub Windows.

Następnym krokiem będzie inicjalizacja karty w czasie ładowania systemu wtedy, i tylko wtedy, gdy jest to karta PnP. Postępuj zgodnie z dokumentacją pakietu źródłowego żeby skompilować i zainstalować isapnptools (albo po prostu użyj binarnego pakietu) i wykonaj polecenie:

    # pnpdump > /etc/isapnp.conf

jako root. To wygeneruje, mam nadzieję, że odpowiedni, plik konfiguracyjny dla Twoich kart PnP, ale ze wszystkimi urządzeniami odkomentowanymi. Edytuj plik ostrożnie i porównuj wartości kanałów DMA, adresów IO i przerwań z konfiguracją pod DOS'em lub Windows, jeśli to możliwe. (pod Win95 zobacz zasoby wykorzystywane przez kartę w opcji zasoby w menedżerze urządzeń). Jeżeli masz problemy, przeczytaj dokumentację dostarczaną z isapnptools.

UWAGA: isapnptools często nie wykrywa wszystkich trzech portów I/O syntezy AWE Wave Table. Sprawdź dokładnie pozycję WaveTable w pliku isapnp.conf z przykładem podanym na końcu tego HOWTO. Ustaw adres I/O jeżeli to potrzebne.

UWAGA: Zgodnie z isapnp-faq, isapnp czasami nie zaprogramowywuje numeru urządzenia logicznego. Jeżeli napotkasz np. taką wiadomość o błędzie:

Error occured executing request 'LD 2' on or around line...

spróbuj dodać linię (VERIFYLD N) na początku pliku isapnp.conf. Musisz używać wersji co najmniej 1.10, żeby ta medoda zadziałała. Jeżeli nie możesz używać wersji 1.10 lub nowszej możesz także wprowadzić numery urządzeń logicznych bezpośrednio. Zobacz isapnp-faq, żeby usyskać więcej informacji o tej metodzie. Jeżeli to nie będzie działać skontaktuj się ze mną (i ludzi tworzących isapnp, oni też powinni być zainteresowani).

UWAGA: Upewnij się, że ostatnią linią jest (WAITFORKEY), to czasami bywa ominięte przez starsze wersje pnpdump.

Przykładowy isapnp.conf możesz znaleźć na końcu tego dokumentu (zobacz sekcję Przykładowy isapnp.conf.

Jeżeli używasz Debiana nie są potrzebne żadne dalsze ustawienia, isapnp zostanie uruchomiony w czasie ładowania w pliku /etc/init.d/boot po dodaniu tego kawałka kodu:

    # Skonfiguruj karty isa plug and play przed ładowaniem
    # modułów. Musisz to zrobić przed ładowaniem modułów, żeby mieć
    # szansę skonfigurowania i zainicjalizowania kart PnP zanim
    # sterowniki narobią bałaganu.
    #
    if [ -x /etc/init.d/isapnp ]
    then
      /etc/init.d/isapnp start
    fi

gdzie /etc/init.d/isapnp musi zawierać linie:

    #! /bin/sh
    # /etc/init.d/isapnp: skonfiguruj karty Plug ang Play
    test -x /sbin/isapnp || exit 0
    /sbin/isapnp /etc/isapnp.conf
    exit 0

Jeżeli masz inną dystrybucję Linuxa, jesteś zdany na siebie. Nie wiem co robić (czy ktoś podałby mi te informacje?). Upewnij się tylko, że isapnp będzie uruchomiona zanim moduły będą załadowane (zobacz poniżej).

## 3.3 Kompilacja jądra

Przed rekompilacją jądra musisz "załatać" je Sterownikiem AWE. Nawet jeżeli źródła twojego jądra już zawierają awedrv (sprawdź /drivers/sound/lowlevel/), możesz chcieć rozszerzyć istniejący sterownik. Postępuj zgodnie z instrukcjami w katalogu ze źródłami awedrv. Musisz odpalić skrypt który zainstaluje łatę w jądrze.

Sprawdź, czy na pewno rozszerzyłeś źródła. Skrypt tylko sprawdza, czy dany plik instnieje - jeżeli tak, nie instaluje łaty. Powinieneś skasować plik drivers/sound/lowlevel/awe_wav.c przed uruchomieniem skryptu po rozszerzeniu źródeł jądra.

Następnie musisz skonfigurować jądro, włączając obsługę dźwięku. Mam nadzieję, że wiesz trochę o kompilowaniu jądra; zobacz Sound HOWTO i Kernel HOWTO, żeby uzyskać więcej informacji. Przejdź do katalogu z źródłami jądra (np. /usr/src/linux) i wykonaj polecenie

    # make config

lub

    make menuconfig

albo

    make xconfig

. Teraz musisz skonfigurować jądro. Użyj tej okazji, żeby zbudować małe i mocne jądro, dostosowane do twojego komputera. Pamiętaj, żeby odpowiedzieć Y na pytanie Enable loadable module support, jeżeli chcesz zainstalować sterownik dźwięku jako ładowalny moduł (musisz, jeżeli masz kartę PnP), ale jestem pewien, że będziesz chciał i tak to zrobić.

W pewnym momencie zostaniesz zapytany o obsługę karty dźwiękowej. Możesz odpowiedzieć zarówno Y albo M jeżeli nie masz karty PnP. Musisz odpowiedzieć M (moduł), jeżeli posiadasz kartę PnP. Musisz skompilować obsługę karty dźwiękowj jako moduł (jeżeli masz kartę PnP), ponieważ taka karta musi być zainicjalizowana przed załadowaniem modułu. Na następujące pytania powinieneś odpowiedzieć Y, na wszystkie inne N:

    Sound Blaster (SB, SBPro, SB16, clones) support (CONFIG_SB) [Y/n/?]
    Generic OPL2/OPL3 FM synthesizer support (CONFIG_ADLIB) [Y/n/?]
    /dev/dsp and /dev/audio support (CONFIG_AUDIO) [Y/n/?]
    MIDI interface support (CONFIG_MIDI) [Y/n/?]
    FM synthesizer (YM3812/OPL-3) support (CONFIG_YM3812) [Y/n/?]
    lowlevel sound driver support [Y/n/?]
    AWE32 support (CONFIG_AWE32_SYNTH) [Y/n/?]

Tylko ostatnia opcja ma wpływ na syntezę Wave Table. Inne wykorzystują opcje SB16 sterownika OSS/Free.

Dodatkowo, musisz skonfigurować port I/O karty dźwiękowej. Spójrz na plik isapnp.conf dla wskazówek, jeżeli masz takowy. U mnie wystarczają stantardowe wartości. Zauważ, że standardowe wartości ze skryptu konfiguracyjnego jądra mogą być nieprawidłowe (zwłaszcza wartości SBC_IRQ i SB_MPU_BASE są złe dla większości kart).

    I/O base for SB Check from manual of the card (SBC_BASE) [220]
    Sound Blaster IRQ Check from manual of the card (SBC_IRQ) [5]
    Sound Blaster DMA 0, 1 or 3 (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]
    MPU401 I/O base of SB16, Jazz16 and ES1688 Check from manual of the card
    (SB_MPU_BASE) [330]
    SB MPU401 IRQ (Jazz16, SM Wave and ES1688) Use -1 with SB16 (SB_MPU_IRQ) [-1]

Teraz zrekompiluj jądro. Użytkownicy Debiana powinni użyć kernel-package. To robi kompilację jądra czynnością tak prostą jak zainstalowanie paczki Debiana. Zobacz dokumentację w katalogu /usr/doc/kernel-package/. Oto podpowiedź:

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

i wtedy

    dpkg -i /usr/src/kernel-image-2.0.29_custom.1.0_i386.deb

Jeżeli masz inną dystrybucję Linuxa, postępuj zgodnie ze standardowym sposobem kompilacji nowego jądra. Nie zapomnij o wydaniu poleceń make modules i make modules_install. Zobacz Sound HOWTO i (może) Kernel HOWTO, żeby uzyskać więcej informacji.

## 3.4 Przeładowanie systemu

Po zainstalowaniu nowego jądra powinieneś przeładować system (pamiętaj, żeby mieć funkcjonującą dyskietkę startową). Zaciśnij kciuki.

Jeżeli masz kartę PnP, pamiętaj, żeby odpalić isapnp bądź to w skrypcie ładującym (tak jak było to opisane wcześniej), bądź to ręcznie:

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

Teraz możesz zainstalować sterownik dźwięku, jeżeli skompilowałeś go jako moduł:

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

Jeżeli sądzisz, że wykrycie pamięci nie było poprawne (znam przypadek człowieka mającego AWE 64 z 4096k, a ,,wykryta'' ilość wynosiła 28672k), spróbuj rozszerżyć awedrv albo podaj ilość pamięci w pliku /usr/src/linux/drivers/sound/lowlevel/awe_config.h, np.

    # define AWE_DEFAULT_MEM_SIZE 4096 /* kilobajtów */

Przykro mi, ale musisz wtedy zrekompilować jądro (może kompilacja modułów będzie wystarczająca, ale nie wiem na pewno).

Jeżeli działa, możesz chcieć, żeby moduł dźwięku był ładowany automatycznie. Możesz użyć kerneld (dlaczego to nie jest najlepszy pomysł zobacz w sekcji 1.4) lub dodaj linię zawierającą sound do /etc/modules (w Debianie) lub dodaj linię /sbin/modprobe -a sound do skryptu ładującego.

## 4. Testowanie sterownika dźwięku

## 4.1 /proc/devices, /dev/sndstat

Jeżeli masz obsługę dźwięku wbudowaną w jądro, dostaniesz trochę pożytecznych informacji w czasie ładowania systemu. Jeżeli obsługę dźwięku masz zainstalowaną jako ładowalny moduł, możesz otrzymać te same informacje (prawdopodobnie po deinstalacji modułu dźwięku najpierw (modprobe -r sound)) wydając polecenie

    # 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)

Jeżeli masz wirtualny system plików /proc, możesz poszukać urządzenia dźwięku komendą

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

Następnie upewnij się, że masz zainstalowane odpowiednie urządzenia w katalogu /dev/. Zobacz Sound HOWTO, żeby uzyskać więcej informacji. Teraz zapytaj /dev/sndstat o status modułu dźwięku:

    # 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

Jeżeli nie widzisz takich informacji, to prawdopodobnie jest błąd w konfiguracji. Zobacz co nie działa, a wtedy wróć do kroku Zaczynamy, sprawdzając wszystko.

## 4.2 Wyjście - Urządzenie dźwięku typu "RAW"

Spróbuj zdobyć plik .au (Sun Workstation) albo plik RAW i wykonaj komendę

    # cat bell.au > /dev/audio

lub

    # cat sample > /dev/dsp

Powinieneś usłyszeć zawartość pliku przez Audio Device 0: Sound Blaster 16 (4.3)

## 4.3 Wyjście - Synteza OPL-2/OPL-3

Jeżeli chcesz używać syntezy FM OPL-2/OPL-3 do odgrywania plików MIDI, wypróbuj program playmidi (zobacz Dodatek B). Uruchom go komendą

    # playmidi -f dance.mid

lub

    # playmidi -4 dance.mid

Pierwsza komenda uruchomi OPL-2, druga OPL-3. Jeżeli dźwięk cię denerwuje nie wiń playmidi: To synteza FM brzmi tak źle.

Wyobraź sobie, że miałbyś tylko sterownik OSS/Free: To byłaby jakość dźwięku jaką mógłbyś uzyskać (nie biorąc pod uwagę syntezy programowej). Na szczęście masz SB AWE i możesz używać możliwości Wave Table ze Sterownikiem AWE.

## 4.4 Wyjście - Synteza Wave Table

Sterownik AWE jest dystrybuowany ze specjalnymi narzędziami (awesfx), żeby wykorzystać syntezę EMU 8000. Najpierw musisz załadować bank Sound Font do karty - nawet jeżeli chcesz używać sampli ROM! Możesz wziąć te pliki z instalacji Windows - szukaj plików z rozszerzeniem *.sfb lub *.sf2

Sample ROM są w pliku SYNTHGM.SBK, prawdziwe sample są w plikach SYNTHGS.SBK i SYNTHMT.SBK, oraz w SAMPLE.SBK. Możesz wziąć inne banki Sound Font przez ftp albo www, spróbuj na stronie EMU, stronie Creative Labs, albo na stronie z samplami Chaos, które są naprawdę dobre (pamiętaj, żeby przejrzeć stronę Sterownika AWE).

Spróbuj załadować standardowy zestaw GM (ROM) używając komendy

    # sfxload -i synthgm.sbk

i wtedy odtwórz plik midi dostarczany z SB AWE:

    # drvmidi dance.mid

## 4.5 Mikser

Uruchom swój ulubiony program miksera i uruchom go. Odegraj plik RAW i dwa pliki MIDI jednocześnie, wypróbowując ustawienia miksera. Pobaw się trochę, to powinno być bardzo łatwe. Oto lista urządzeń, oraz wyjaśnienie:

- Yamaha OPL-3 Synth albo FM
- AWE32 Driver Synth albo FM
- Sound Blaster 16 (4.13) PCM albo DSP
- PC Speaker (nadal żywy) Spkr

Inne ustawienia miksera odnoszą się do CD-ROMu, możliwie podłączonego do karty dźwiękowej, do głównej głośności, basów, tonów wysokich i poziomu nagrywania na różnych liniach wejściowych. Możesz określić, które linie powinny być nagrywane.

## 4.6 Wejście - Samplowanie z urządzeniem dźwięku typu "RAW"

Możesz nagrywać z różnych źródeł: z podłączonego CD ROMu, z mikrofonu podłączonego do wejścia MIC i z każdego źródła, które można podłączyć do wejścia LINE IN. Ustaw mikser w poprawnej pozycji. Odegraj dźwięk i nagrywaj do pliku, czytając z urządzenia dźwięku RAW, np.

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

nagrywa i odtwarza pięć sekund dźwięku z urządzenia wejściowego.

## 4.7 Port MIDI

Przykro mi, nie ma jeszcze informacji o porcie MIDI!

## 5. Oprogramowanie Sterownika AWE

## 5.1 sfxload

Możesz ładować próbki do DRAM'u na karcie dźwiękowej programem sfxload. Zauważ, że możesz ładować tylko jeden plik z próbkami na bank, z bankiem 0 jako standardowym. A więc po komendzie sfxload synthgs.sbk jedyne sample w twojej karcie są samplami GS. Jeżeli chcesz załadować dodatkowe banki Sound Font musisz użyć opcji -b, np.

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

Możesz załadować standardowy bank Sound Font automatycznie, razem z instalacją modułu. Dodaj taką linię:

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

do pliku /etc/conf.modules.

Zobacz dokumentację, żeby uzyskać więcej detali o sfxload.

## 5.2 drvmidi

Z programem drvmidi możesz używać Sterownika AWE do odgrywania plików MIDI. Po prostu podaj nazwę pliku midi po komendzie:

    # drvmidi waltz.mid

Zobacz dokumentację, żeby uzyskać więcej szczegółów o drvmidi.

## 6. Dodatek

## 6.1 Dodatkowe informacje

- Linux Sound HOWTO
  Autor: Jeff Tranter, < jeff_tranter@pobox.com>
  Ostatnia wersja: v1.17, 4 Sierpnia 1997

  Dobrze rozejrzyj się w Sound HOWTO (dostępne z sunsite.unc.edu i innych serwerów). Zawiera garść danych o kompilacji jądra z obsługą dźwięku i wyjaśnia mnóstwo o urządzeniach dźwiękowych, aplikacjach itp.
  Przyjmuję to HOWTO jako dodatek do Sound HOWTO.

- Linux Sound Playing HOWTO
  Autor: Yoo C. Chung, < wacko@laplace.snu.ac.kr>
  Ostatnia wersja: v1.4, 13 Maja 1997

  Powinieneś popatrzeć też na Sound Playing HOWTO. Mówi o różnych formatach dźwięku i aplikacjach do ich odgrywania.

- AWE Driver FAQ
  Autor: Takashi Iwai < iwai@dragon.mm.t.u-tokyo.ac.jp>

  Źródło: http://bahamut.mm.t.u-tokyo.ac.jp/~iwai/awedrv/awedrv-faq.html

  Jeżeli masz problemy z instalacją Sterownika AWE lub z używaniem syntezy Wave Table w twojej karcie Sound Blaster, spójrz tutaj.

- ISA PnP FAQ
  Autor: Peter Fox < fox@roestock.demon.co.uk>

  Źródło: http://www.roestock.demon.co.uk/isapnptools/isapnpfaq.html

  Jeżeli masz problemy ze skonfigurowaniem karty ISA PnP, to jest twoja encyklopedia.

## 6.2 Źródła

- isapnptools
  Autor: Peter Fox < fox@roestock.demon.co.uk>
  Ostatnia wersja: 1.11

  Źródło: http://www.roestock.demon.co.uk/isapnptools/index.html

  Jeżeli wysyłasz łaty, wiadomości o błędach albo komentarze, wstaw ,,isapnp'' gdzieś w linii tematu, i wyślij list do isapnp@roestock.demon.co.uk.

- awedrv
  Autor: Takashi Iwai < iwai@dragon.mm.t.u-tokyo.ac.jp>
  Ostatnia wesja: 0.4.2c

  Źródło: http://bahamut.mm.t.u-tokyo.ac.jp/~iwai/awedrv/

- Jądro Linuxa
  Autor: Linus Torvalds i wielu innych
  Ostatnia wersja: W tej chwili powinieneś używać 2.0.29 2.0.33 - przyp. tłum.]

  Źródło: wszędzie, gdzie możesz znaleźć Linuxa :)

- OSS/Free
  Autor: Hannu Savolainen (sprawdź http://www.4front-tech.com/usslite przed wysłaniem mi listu).
  Ostatnia wersja: ja mam 3.5.5-beta1

  Źródło: z źródłami jądra Linuxa

  Informacje: http://www.4front-tech.com/usslite albo kopia europejska.

## 6.3 Przykładowy isapnp.conf

W pliku konfiguracyjnym ISA PnP wygenerowanym przez pnpdump numery urządzeń twoich kart PnP pojawiają się jako sekcje. W pliku poniżej była wykryta jedna karta (dźwiękowa), z czterema urządzeniami logicznymi:

- LD 0: Urządzenie Dźwiękowe
- LD 1: Urządzenie IDE
- LD 2: Urządzenie WaveTable
- LD 3: Urządzenie Portu Gier

Zostawiłem LD 1 nieskonfigurowane, ponieważ nie mam CD ROMu podłączonego do portu IDE w mojej karcie dźwiękowej. Jeżeli nie masz portów IDE w twoim SB, LD 1 będzie urządeniem portu gier, a LD 3 się nie pojawi.

Zobacz sekcję Zaczynamy, żeby uzyskać dokładne (ważne!) informacje o tym pliku.

    # $Id: pnpdump.c,v 1.9 1997/06/10 21:37:32 fox 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)
    #
    # For latest information on isapnp and pnpdump see:
    # http://www.roestock.demon.co.uk/isapnptools/
    #
    # Compiler flags: -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...

    #(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)

## 7. Od tłumacza

Oto pierwsza wersja polskiego AWE HOWTO. Jeżeli zauważysz jakiś błąd, daj mi znać.