\documentclass[letterpaper]{article}
\nonstopmode
\bkai
\usepackage{linuxdoc-sgml}
\usepackage{qwertz}
\usepackage{url}
\usepackage[latin1]{inputenc}
\usepackage{t1enc}
\usepackage[english]{babel}
\usepackage{epsfig}
\usepackage{null}
\def\addbibtoc{
\addcontentsline{toc}{section}{\numberline{\mbox{}}\relax\bibname}
}%end-preamble
\setcounter{page}{1}
\title{Sound Blaster AWE 32/64 ­µ®Ä¥d HOWTO}
\author{§@ªÌ:
Marcus Brinkmann {\ttfamily $<$\onlynameurl{Marcus.Brinkmann@ruhr-uni-bochum.de}$>$}\\ 
Ä¶ªÌ:
ÁÂ±X¤¤ HSIEH Kun-Chung, ¥xÆW ¤¤µØ¥Á°ê Taiwan, Republic of China (NOT People's Republic of China)
{\ttfamily (\onlynameurl{linuxer.bbs@cis.nctu.edu.tw} )}\\ }
\date{v1.2ª©, 1998¦~ 1¤ë11¤é}
\abstract{¥»¤å¥ó¦b±Ô­z¦p¦ó¦w¸Ë¤Î«Øºc Sound Blaster 32 (SB AWE 32, SB AWE 64) ­µ®Ä¥d¥H¤Î¨Ï¥Î¥Ñ Takashi Iwai ©Ò¼gªº AWE Sound Driver Extensionªº Creative Labs­µ®Ä¥d¡C¥¦ÁÙ¥]§t¤@¨Çµ¹ SB AWE ¨t²Î©Ò¥Î¯S®íªº¤u¨ã¥H¤Î¼·©ñ¾¹¡C§Ú¨Ï¥Îªº¬ODebian GNU/Linux ¨t²Î¡A¦ý¬O¨ä¥Lªº¥ô¦ó¤@ºØ Linux ¨ÑÀ³°Óª©¥»¬Ò¥i¥H¹B§@¡C}


\begin{document}
\maketitle
\tableofcontents

\section{Â²¤¶}



³o¬O Sound Blaster AWE HOWTO¡A¥¦µ¹§A¦³Ãö©ó¦p¦óµo´§§Aªº Sound Blaster 32ªº¸Ô²Ó¸ê°T
¡A¥]§t Wave Table synthesis¡C³o¥÷¤å¥ó§t»\©Ò¦³ªº SB ¥d¡A¥]§t SB 32¡C

¦b DOS ©Î Windows ªº¥@¬ÉùØ¡A Sound Blaster ¨t²Î¤w¬O­Ó®a³ë¤á¾åªº¦WºÙ¡A
¦Ó¥B¦³«Ü¦hªº Linux ¨Ï¥ÎªÌ¤]·Q­n¦b Linux ¤U¨Ï¥Î¥L­Ì¡C¤£©¯ªº¬O¡A Creative Labs ¥u´£¨Ñ
¦b Windows ¥H¤Î DOS ¤Uªº­µ®ÄÅX°Êµ{¦¡¡A©Ò¥H¦b Linux ¤U¦w¸Ë SB ¥dÅÜ¦¨¤£¬O¥ó¤p¨Æ¤F¡C
³o¥÷¤å¥ó¸ÕµÛ¨Ó±Ô­z§Ú­Ì¦p¦ó¦b Linux ªºÀô¹Ò¤U¨Ï¥Î SB AWE ¨t¦C¡C




\subsection{·PÁÂ}



³o¥÷¤å¥ó¤¤§Ú©Ò»`¶°ªº¸ê°T¨Ó¦Û©ó AWE Driver FAQ ¥H¤Î ISA PnP FAQ¡C
½Ð¬Ý \ref{sources} {(Sources)} ³o¨Ç¤å¥óªº§@ªÌ¥H¤Î¦ì¸m¡CÁÂÁÂ©Ò¦³ªº§@ªÌ¡A¤~¯à
¦³¤µ¤Ñ SB AWE ªº¤ä´©¡C

¦³«Ü¦h°ò¥»¤u§@¤w¥Ñ \nameurl{http://www.4front-tech.com/usslite}{Hannu Savolainen}°µ¦n¤F¡A¥L¶}µo¤F»P Linux ®Ö¤ßµ{¦¡¬ÛÀHªº­µ®ÄÅX°Êµ{¦¡¡CÁÂÁÂ±z¡C

§Ú·QÁÂÁÂ \nameurl{mailto:n.bern@mail.protos.it}{Nicola Bernardelli}
¥L´ú¸Õ¤F AWE64 ªº¬ÛÃö¥\¯à¡C¨S¦³¥L¡A¦³«Ü¦hªº¿ù»~¥i¯àÁÙ¦s¯d¦Ó¥¼³Qµo²{¡C

ÁÂÁÂ \nameurl{ftp://sunsite.unc.edu/pub/Linux/utils/text/sgml-tools-0.99.0.tar.gz}{SGML Tools} ³o¥÷®M¥ó¡A³o¥÷ HOWTO ¤å¥ó¥i¥H¦³«Ü¦hºØ¤å¥ó®æ¦¡¡A¦Ó¥B¥u»Ý¨Ï¥Î¤@ºØ®æ¦¡´N¥i
¥H¨Ó°µÂà´«¡C




\subsection{§ïª©¾ú¥v}



\begin{description}


\item[ª©¥» 1.0] \mbox{}

­ºª©

\item[ª©¥» 1.1] \mbox{}

­×§ï«÷¦r«á(ÁÂÁÂ Curt!)¡A¼W­qµ¹ {\ttfamily isapnp}ªº»Ý¨D¡A²{¦b¥i¥H¸g¥Ñ
sunsite ¥H¤Î¥¦ªº¬M®g¯¸¨ú±o

\item[ª©¥» 1.2] \mbox{}

ªk¤åª©¤w¸g¥XÄl¤F!¡A¥u°µ¤Ö³\ªº­×¥¿¡A­×­q¤F«Ü¦h«÷¦r (·PÁÂ ispell)



\end{description}







\subsection{¥»¤å¥óªº·sª©¥»}



³Ì·sªºª©¥»¥i¥H¦b§Úªº­º­¶ùØ§ä¨ì \nameurl{http://homepage.ruhr-uni-bochum.de/Marcus.Brinkmann/soundblaster.html}{Sound Blaster AWE HOWTO}¡C

³o¥÷¤å¥óªº·sª©¥»·|³Q¤W¸ü¨ì³\¦h FTP ¯¸¤W¡A¥]§t
\nameurl{ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/mini}{}¡C

³o¥÷¤å¥óªº¶W¥»¤åª©¥H¤Î¨ä¥Lªº Linux HOWTO ¤å¥ó³£¥i¦b³\¦hªº WWW ¯¸ùØ§ä¨ì¡A¹³
\nameurl{http://sunsite.unc.edu/LDP/}{}¡C³\¦hªº Linux CD-ROM ¨ÑÀ³°Óª©ùØ¤]³£
·|¦³ HOWTO ¤å¥ó¡A³q±`¬O©ñ¦b {\ttfamily /usr/doc} ¥Ø¿ý¤U¡C

·PÁÂ Arnaud Launay \onlynameurl{zoro@lsol.tm.fr}¡A³o¥÷¤å¥óªºªk¤åª©¤~¯à½Ï¥Í!
³Ì·sªºª©¥»¥i¥H¥Ñ \nameurl{http://www.freenix.fr/linux/HOWTO}{http}
©Î \nameurl{ftp://ftp.lip6.fr/pub/linux/french/docs/HOWTO}{anonymous ftp}¨ú±o¡C

¦pªG§A­nÂ½Ä¶³o¥÷¤å¥ó¨ì§Aªº»y¨¥¡A½ÐÅý§Úª¾¹D¡A§Ú·|¥[¤J¤@¥÷¥¦ªº°Ñ¦Ò³sµ²¡C

Ä¶µù¡G³o¥÷¤å¥óªº¤¤¤åª©¥i¦b\nameurl{http://www.linux.org.tw/LCDP/}{}¤U¨ú±o¡C




\subsection{¦^À³}



§Ú¥õ¿à§A¡A¦U¦ìÅªªÌ¡A¨ÓÅý³o¥÷ HOWTO ÅÜ±o¦³¥Î¡C¦pªG§A¦³¥ô¦óªº«ØÄ³¡A§ó¥¿©Î«ü±Ð
½ÐÅý§Úª¾¹D \onlynameurl{Marcus.Brinkmann@ruhr-uni-bochum.de}¡A§Ú·|±N¥¦¾ã¦X¨ì¤U¤@ª©¥»ùØ¡C

§Ú¯S§OÅwªïÃö©ó¨ä¥L¦³¥~ªº Linux ¨ÑÀ³ª©¥»ªº±Ò°Êµ{§Ç (±Ò°Ê©R¥O¤â½Z..µ¥)¨Ò¦p
Red Hat ©Î SuSE Linux¡C

¦pªG§A±N³o¥÷¤å¥ó¥Xª©¨ì CD-ROM ©Î¨ä¥L§Î¦¡¡A¦pªG¥i¥Hµ¹§Ú¤@¥÷§K¶O¼Ë«~§Ú·|«Ü·P¿E§A¡C
½Ð§A±N¥L±H¨ì§Úªº¶l¬F¦a§}¡CÁÙ¦³¡A±z¥i¦Ò¼{®½¿úµ¹ Linux ¤å¥ó­pµe¨Ó¨ó§U§Ú­Ì¬° Linux
°µ§K¶Oªº¤å¥ó¡C½Ð±z³sµ¸ Linux HOWTO ³sµ¸¤H Tim Bynum \onlynameurl{linux-howto@sunsite.unc.edu}¡C




\subsection{´²§G¬Fµ¦}



ª©¥» 1997 Marcus Brinkmann

³o­Ó HOWTO ¬O¥÷§K¶O¤å¥ó¡F§A¥i¥H¦b§K¶O³nÅé°ò¥»·| (Free Software Foundation)
ªº GNU ¤@¯ë¤½¥Î°õ·Óªº±ø¥ó(²Ä¤Gª©©Î§ó·sªºª©¥»)¤U¨Ó´£¨Ñ©Î­×§ï¥¦¡C

³o¥÷¤å¥óªº´²§G¬O§Æ±æ¥¦¯à¯à¦³¥Î³B¡A¦ý {\bfseries ¤£°µ¥ô¦ó«OÃÒ}( ¬Æ¦Ü¥ô¦ó·t¥Üªº«OÃÒ)
{\bfseries ¥i¾P°âªº} ©Î {\bfseries ¾A¦X¯S§O¥Ø¦aªº}¡C¸Ô±¡½Ð¬Ý GNU ¤@¯ë¤½¥Î°õ·Ó¡C

§A¥i¥H¼g«H¨ì \nameurl{http://www.fsf.org}{Free Software Foundation},
¨Ó¨ú±o¤@¥÷ GNU ¤@¯ë¤½¥Î°õ·Ó¡C ¦a§} Inc., 675 Mass Ave, Cambridge, MA 02139
USA¡C






\section{¦b§A¶}©l¤§«e}






\subsection{Â²¤¶}



³o¥÷¤å¥ó¸ÕµÛÀ°§U§A¦b Linux ¨t²Î¤W¦w¸Ë¥H¤Î¨Ï¥Î Creative Labs ªº Sound Blaster AWE 32 ©Î Sound Blaster AWE 64
¡C§Ú©Ò¥Îªº¨t²Î¬O \nameurl{http://www.debian.org}{Debian GNU/Linux}
¨t²Î¡A¦b¤@¥xIntel i586 ¹q¸£¥­¥x¤W¡A¥¦À³¸Ó¥i¦b¨ä¥Lªº Linux ¨ÑÀ³°Óª©¥H¤Î¨ä¥L¤ä´© Linux ­µ®ÄÅX°Êµ{¦¡ªº¥­¥x¤W¡A
(¦pªG¦³¤£¦P³B¡A§Ú·|§â¥¦­Ì´£¥X¨Ó)¡C

°O±o­n¥J²Ó¾\Åª Linux Sound HOWTO (½Ð¬Ý \ref{moreinfo} {(Additional Information)}³¹¸`)¡C§Ú¥u¬O¸É¥R Sount HOWTO ¤£¨¬ªº¦a¤è¦Ó¤w¡A
¦³¨Ç¸ê°T§Ú·|½Ð§A¦A¥h¾\Åª Sound HOWTO¡A³o¨à¤£¦AÂØ­z¡C






\subsection{Ãö©ó SB AWE ¥dªº¤@¯ë±`ÃÑ}



SB AWE 32 ­µ®Ä¥d´£¨Ñ¤F¶§¬Kªº­µ®Ä³]³Æ¡B¼Ð·Ç OPL-2/OPL-3 ¦X¦¨¾¹¡B MPU-401 MIDI
°ð¥H¤Î¦³ 32 voices ªº EMU 8000 Wave Table ¦X¦¨¾¹¡C (·Q¶i¤@¨B¤F¸Ñ³o¨Ç³N»yªº
·N«ä½Ð¬ÝLinux Sound HOWTO)¡C³o¥÷¤å¥óªº¥Ø¼Ð¬O­n¨ó§U§A¨Ï¥Î¤Îµo´§³o¨Ç¥\¯à¡C

SB AWE 64 °£¤F¬Û®e©ó SB AWE 32 ¤§¥~¡AÁÙ¼W¥[¤F¤@­Ó³sCreative Labs ¤½¥q³£¯S§O
·P¨ìÅº¶Æªº Wave Guide ¦X¦¨¾¹¡C Linux ¨Ï¥ÎªÌ©Ò­±Á{ªº¤@­Ó°ÝÃD¬O¡A ·s¼W¥[ªº 32
¼ÒÀÀÁn­µ¬O¥Ñ³nÅé©Ò²£¥Í¦A¸g¥Ñ¶§¬KªºÁnªi³]³Æ¨Ó¿é¥Xªº¡C¦]¬° Creative Labs ¥H¬°
¦b Linux ªºÅX°Êµ{¦¡¤W¨Ã¨S¦³¥«³õ¥i¨¥¡A©Ò¥H¤~¥u´£¨Ñ Windows 3.1 ¤Î Windows 95
ªºÅX°Êµ{¦¡¦Ó¤w¡C

³o·N¨ýµÛ¡A±q  Linux ¨Ï¥ÎªÌªºÆ[ÂI¬Ý¨Ó¡ASB AWE 32 ©M SB AWE 64 ¤j®a³£¾å±o¡A
¤U­±¶}©l°£«D¨âªÌ¦³¤£¦P³Bªº¤ñ¸û¥~¡A§Ú±N¥H SB AWE ¨Ó¥Nªí¨âªÌ¡C




\subsection{Ãö©ó Plug \& Play ¥d¥dªº¤@¯ë±`ÃÑ }



³Ìªñ°t¦X Intel ¥­¥xªº¤¶­±¥d³£¬O ISA PnP ¥d¡AÂ²ºÙ¬° ``Plug and Play''¡C
¤]´N¬O»¡¡A³o¨Ç¥d¥²¶·¥Ñ§@·~¨t²Î¨Ó«Øºc¡A³o»Ý­n¦b±Ò°Ê¨t²Î®É°µ¤@­Óªì©l¤Æªºµ{§Ç¡C
¤@¯ë¨Ó»¡¡A¦Ü¤Ö¦³¤TºØ¤£¦Pªº¤èªk¥i¥H¹F¦¨³o­Ó¡G

\begin{enumerate}
\item §A¦³ PnP Bios¡A·N«ü§Aªº BIOS ·|¦Û°Ê¹îÄ± PnP ¥d¨Ã¥B«Øºc¥¦­Ì¡C¦pªG§A¥H¬°§A¦³
PnP BIOS ©Ò¥H§A¥i¥Hµo´§§Aªº SB AWE PnP ªºªø¤~ªº¸Ü¡A«Ü¤£©¯ªº¡Aªù³£¨S¦³¡C
´Nºâ BIOS ¦³¤ä´© PnP ¥d¡A¥¦¤]¥u¯àªì©l¤Æ®É±N§Aªº­µ®Ä¥d©Ò¨Ï¥Î°ð¤Î¦ì§}°µ­Ó¤p³]©w¦Ó¤w¡C
¤]³\§A¥i¥H¼·©ñ¤@¨Ç°ò¥»ªº­µªi¸ê®Æ¡A¦ýµLªk¼·©ñ MIDI ­µ®Ä¡A³o¬O­Ó¨Ò¤l¡C¦]¦¹¡A
¦³µL PnP Bios ³£µL©Ò¿×¡A¥Ñ§A¦Û¤v¨M©w¡C
\item §A¦³­Ó¤ä´© PnP ¥dªº§@·~¨t²Î¡C¥Ø«eÃ­©wªº Linux ®Ö¤ßµ{¦¡ (2.0.x) ÁÙ¤£³o­Ó¼Ë¤l¡A
¦]¦¹¡A§Ú­Ì±oµ¥¥¼¨Óªº·sª©¥»¡A¥¦­Ì±N¤ä´© PnP ³]³Æ¡C
\item §A¦³­Ó¯S§Oªºµ{¦¡·|¦b±Ò°Ê¨t²Î®É°õ¦æ¡A¥¦·|ªì©l¤Æ§Aªº PnP ¥d¡C§Ú­Ì´N¬O³o»ò¿ì¨ìªº¡C
\end{enumerate}


¦b Linux ùØ³Ì±`³Q¨Ï¥Î¨Óªì©l¤Æ PnP ¥dªºµ{¦¡¬O ``isapnptools'' (½Ð¬Ý \ref{sources} {(Sources)} ¥H¤Î
\ref{isapnp} {(Getting Started)})¡C¥¦­Ì´£¨Ñ¤F¥i¹w´úªº¤è¦¡¨Ó«Øºc§Aªº¾÷¾¹ùØªº©Ò¦³
ISA PnP ¥d¡A¨Ã¤£¶È¥u­µ®Ä¥d¦Ó¤w®@¡C






\subsection{Ãö©ó¥i¸ü¤J¦¡®Ö¤ßµ{¦¡¼Ò²Õªº¤@¯ë±`ÃÑ }



¦³¨Ç³]³ÆÅX°Êµ{¦¡¥i¥H³Q°µ¦¨¼Ò²Õ¡A¦Ó¤£¥²±N¥¦­Ì½sÄ¶¨ì®Ö¤ßµ{¦¡ùØÀY¡C §A¥i¥H
¦b Kernel HOWTO ¤Î Module HOWTO ùØ§ä¨ìÃö©ó¼Ò²Õªº¸ê°T¡C(½Ð¬Ý \ref{moreinfo} {(Additional Information)}).

¦pªG§A¦³ PnP ¥d¡A§A {\itshape ¥²¶·\/} ±N­µ®Ä¥d¤ä´©¦¨¤@­Ó¥i¸ü¤J¦¡®Ö¤ßÅX°Êµ{¦¡¼Ò²Õ¡C
¤]´N¬O»¡¡A§A¤£¯à±N­µ®ÄÅX°Êµ{¦¡«Ø¥ß¦b®Ö¤ßµ{¦¡ùØÀY¡A¦Ó±N¥¦°µ§@¤@­Ó¼Ò²Õ¡A³o¼Ë
´N¯à¦b®Ö¤ßµ{¦¡°õ¦æ®É³Q¸ü¤J¡C³o¬O¦]¬°®Ö¤ßµ{¦¡·|¦b§Aªº ISA PnP ¥d³Q«Øºc«e´N
³Q¦w¸Ë¤F¡A¦Ó§Aªº­µ®ÄÅX°Êµ{¦¡¥²¶·¦b ISA PnP «Øºc«á¤~·|³Q¸ü¤J¡C

­µ®Ä®Ö¤ßµ{¦¡¼Ò²Õ¥i¥H¨Ï¥Î {\ttfamily insmod sound} ©Î
{\ttfamily modprobe -a sound} ©Î¦b§Aªº Linux ¨t²ÎùØªº¬Û¹ïªº±Ò°Ê©R¥O¤â½Zªº¤è¦¡¨Ó±Ò°Ê¡C
(¦b Debian¡A¼W¥[¤@¦æ¥]§t {\ttfamily sound} ¨ì {\ttfamily /etc/modules}ªº©R¥O´N°÷¤F)¡C
±µ¤U¨Ó¡A°õ¦æ {\ttfamily kerneld}¡A¥¦¬O¤@­Ó¥i¥H¦w¸Ë©Î²¾°£®Ö¤ßµ{¦¡¼Ò²ÕªººëÆF¡C

°O±o {\ttfamily kerneld} ¨Ã¤£¬O¦b AWE ­µ®ÄÅX°Êµ{¦¡¼Ò²Õ¤W³Ì¦nªº¸Ñ¨M¤è®×¡A¦]¬°®Ö¤ßµ{¦¡¸ü¤J³o­Ó
¼Ò²Õ¤]­nªá®É¶¡¡A¯S§O¬O¦pªG§A­n¨Ï¥Î Wave Table ©R¦¨¾¹¨Ó¸ü¤J¤jªº Sound Font bank ®É¡A
§A´N¥²¶·¦b¨C¤@¦¸´¡¤J¼Ò²Õ®É¦A¸ü¤J¤@¦¸¡C ¦]¬° {\ttfamily ®Ö¤ßµ{¦¡} ·|¦b³]©w¤º©w­È«á¬ù¤@¤ÀÄÁ±N¤£»Ý­nªº
¼Ò²Õµ¹²¾°£¡A©Ò¥H¥H¤â°Ê¤è¦¡©Î¦b±Ò°Ê®É±N­µ®Ä¼Ò²Õ´¡¤J¥i¯à·|¸û¦n¨Ç¡C
ÁÙ¦³¡A³o»ò°µÁÙ¥i¥H¹w¨¾ {\ttfamily ®Ö¤ßµ{¦¡} ¦b¶i¤JªÅ¶¢¤U¨Ó®É²¾°£¥¦¡C§A¥i¥H
¦b¦P®É¶¡ùØ´¡¤J­µ®Ä¼Ò²Õ¨Ã¥B¨Ï¥Î {\ttfamily ®Ö¤ßµ{¦¡} ¡C¨âºØ¤èªk¤£·|¤¬¬Û±Æ¥¸¡A¦ý¬O {\ttfamily ¼Ò¤ßµ{¦¡}
´N¤£¦AºÞ­µ®Ä¼Ò²Õ¤F¡C

¯S§O¬O§Aªº²V­µ¾¹­Y¬O¦b²¾°£©Î­«¦w¸Ë¼Ò²Õ®É·|¨ü¨ì¤zÂZªº¸Ü¯S§O¦³®Ä¡C
³o³¡¥÷ªº¸Ñ¨M¤è®×¥i¦b \ref{mixing} {(Mixing)}³¹¸`ùØ§ä¨ì¡C
(¥¦¦b±Ô­z¦p¦ó¦b­µ®Ä¼Ò²Õ³Q´¡¤J®É¦Û°Ê±Ò°Ê§Aªº²V­µ¾¹¡C)¡CµM¦Ó¡A¥¦­n
{\ttfamily ®Ö¤ßµ{¦¡} ªá®É¶¡¨Ó¸ü¤J¼Ò²Õ¡A¨Ó¸ü¤J sound font bank ¨Ã±Ò°Ê§Aªº²V­µ¾¹¡A
¦]¬°³o¼Ë¥H¤Î¨ä¥Lªº²z¥Ñ¡A³Ì¦n¦b±Ò°Ê¨t²Î®É§Y¦w¸Ë­µ®Ä¼Ò²Õ¡A¤£­nÅý
{\ttfamily ®Ö¤ßµ{¦¡} ²¾°£¥¦¡C






\subsection{Ãö©ó®Ö¤ßµ{¦¡­µ®ÄÅX°Êµ{¦¡ªº¤@¯ë±`ÃÑ }



§A¥i¥H¦b®Ö¤ßµ{¦¡¤¤¦w¸Ë­µ®Ä¤ä´©¦¨¤º«Øªº©Î¬O­Ó¥i¸ü¤J¦¡¼Ò²Õ¡C¦pªG¬O PnP ¥d¡A§A¥²¶·
±N­µ®Ä¤ä´©¦w¸Ë¦¨¼Ò²Õ¡A¦]¬° PnP ¥d»Ý­n¦b¼Ò²Õ³Q¦w¸Ë«e¨Ï¥Î isapnptoo¨Óªì©l¥¦¡C

¦p§A©Ò·Q¡A§A¥²¶·­«½sÄ¶®Ö¤ßµ{¦¡¡C¤U­±§Ú·|µ¹§A´X­Ó´£¥Ü¡C²{¦b¡A§Ú­Ì¨Ó½Í½Í®Ö¤ß­ì©lµ{¦¡
ùØ¹ï­µ®Äªº¤ä´©¡C ¦b®Ö¤ßµ{¦¡ùØ¦³­Ó§K¶O (ºëÂ²ª©) ªº OSS (USS) ­µ®ÄÅX°Êµ{¦¡ª©¥»¡A
³Ì·sªº (3.5.4) ª©¨Ã¤£§¹¦¨¤ä´© SB AWE ¡A¦ý¬O¤ä´©³¡¥÷ SB 16 ¡C©Ò¥H¡A§A¥i¥H¨Ï¥Î¥¦
§A´N¥i¨Ï¥Î³æ¯ÂªºÁn­µ³]³Æ¥H¤Î OPL-2/OPL-3 ¦X¦¨¾¹¡C¦ý§A«oµLªk¨Ï¥Î Wave Table¦X¦¨¾¹¨Ó
¼·©ñ midi ÀÉ¡C

¦pªG§A­n¨Ï¥Î Wave Table ³]³Æ¡A§A¥i¥H±q
\nameurl{http://www.4front-tech.com}{4Front Technologies}
¶R­Ó°Ó·~ª©ªº­µ®ÄÅX°Êµ{¦¡ (¦pªG¦³¤H¥i¥H¸ò§Ú½T»{¥¦¯uªº¥i¥Hªº¸Ü )¡A©Î¬O¥Î Takashi Iwaiªº
AWE 32 Sound Driver Extension ¨Ó­×¸É§Aªº®Ö¤ßµ{¦¡¡C«e­±¨º³¡¥÷¨Ã¤£¦b¥»¤å¥ó©Ò½Íªº½d³ò¡A
§Ú°²³]§A·Q¨Ï¥Î«áªÌ¡C

³o­Ó AWE32 Sound Driver Extension (½Ð¬Ý\ref{sources} {(Sources)}³o³¹¸`) ¦b GNU ª©Åv¤U´£¨ÑÅý SB AWE ¥dªº EMU 8000 wave ¦X¦¨¾¹ÅÜ¦¨¥i¥Îªº¤u¨ã¡C

¦Ó {\ttfamily awedrv} ³nÅé¤w¸g³Q¥]§t¨ì·sªº®Ö¤ß­ì©lµ{¦¡¾ðùØ (±q¤@¨Ç 2.1.x ®Ö¤ßµ{¦¡¶}©l¡A¤]³\§A·Q¤É¯Å§A
©Ò¨Ï¥ÎªºÂÂªº¼Ò¤ßµ{¦¡¾ð)¡C






\section{¦p¦ó¦w¸Ë SB AWE ­µ®Ä¤ä´©}






\subsection{§A»Ý­nªºªFªF}



¦b Linux ¤U¨Ï¥Î SB AWE »Ý­n¤U¦CªFªF®@¡G

\begin{itemize}
\item ¤@­Ó¥i¨Ï¥Îªº Linux ¨t²Î (¨Ò¦p Debian GNU/Linux ª©)¡A
\item ¤@­Ó SB AWE 32 ©Î¬Û®e¥d (¦p SB32, SB32 PnP, SB AWE64, ...)¡A
\item Linux ®Ö¤ßµ{¦¡ªº­ì©lµ{¦¡¡A¥]§t­µ®ÄÅX°Êµ{¦¡ OSS/Free
(¥¿±`³£·|ªþ¡A½Ð¬d¬Ý {\ttfamily /usr/src/Linux/drivers/sound/Readme}),
\item ÁÙ¦³ AWE 32 sound driver extensions.
\end{itemize}


¦pªG§A¦³­Ó PnP ¥d¡A§AÁÙ»Ý­n¡G

\begin{itemize}
\item isapnptools ³nÅé®M¥ó¡C
\end{itemize}


½Ð¬Ý¦³Ãö©ó¦p¦ó¨ú±o³o¨Çµ{¦¡ªº³¹¸`\ref{sources} {(Sources)}¡C

¦pªG§A¦³ Debian GNU/Linux ¨t²Î¡A¨º§A»Ý­n {\ttfamily kernel-source-$<$version$>$}, {\ttfamily awe-drv}
®M¥ó¡A¤]³\ÁÙ»Ý­n {\ttfamily isapnptools}³o­Ó¡AÁöµM¨Ã¤£»Ý­n¦ý§A¥i¯à·Q­n¤@¨Ç  {\ttfamily awe-*} ®M¥ó¡A§Ú
±j¯P«ØÄ³§A±Ä¥Î {\ttfamily kernel-package} ·|§ó®e©ö½sÄ¶¤Î¦w¸Ë®Ö¤ßµ{¦¡¡C






\subsection{¶}©l§a !\label{isapnp}}



°²³]§A¤w¸g¥¿½T¦a¦w¸Ë¦n­µ®Ä¥d¨ì§Aªº¹q¸£ªº¥D¾÷ªO¤W¦Ó¥B¤]¦b DOS ¥H¤Î WindowsÀô¹Ò¤W¸Õ¹L¤F¡C

µM«á¡A¦pªG¥¦¬O¤@±i PnP ¥dªº¸Ü§Ú­Ì¥²¶·¦b¶}¾÷±Ò°Ê®Éªì©l¤Æ¤@¤U¡C½Ð«ö·Ó
­ì©lÀÉ®M¥óªº¤å¥ó©Ò»¡¦a¥h½sÄ¶¥H¤Î¦w¸Ë  {\ttfamily isapnptools} (©Î¥u»Ý¨Ï¥Î Debian ªº¤G¶i¦ì½X®M¥ó)¡AµM«á¥H
root ªº¨­¥÷°õ¦æ

\begin{tscreen}
\begin{verbatim}
# pnpdump > /etc/isapnp.conf
\end{verbatim}
\end{tscreen}




³o¼Ë·|²£¥Í¤@­Ó¬°§Aªº PnP ¥d¶q¨­­q°µªº«Øºc¡A¦ý¥¦·|§â©Ò¦³ªº³]³Æ³£µù¸Ñ°_¨Ó¡C½Ð¦A
¤p¤ß¦a­×§ï³o­ÓÀÉ®×¡A¦pªG¥i¯àªº¸Ü¨Ã¤ñ¸û DMAÀW¹D¡BIO¡B´¡Â_µ¥µ¥ªº³]©w¬O§_»P¥¦¦b DOS ©Î WINDOW
Àô¹Ò¤U¤£¤@¼Ë (¦b Win95 ùØ¡A­n¬Ý³Q¤¶­±¥d©Ò¨Ï¥Îªº¸ê·½¥i¦b {\ttfamily ³]³ÆºÞ²z­û}¤Uªº {\ttfamily ¸ê·½} ¬Ý)¡C
¦pªG§A¹J¨ì°ÝÃD¡A½Ð¤p¤ß¦aÅª¤@¤U©M{\ttfamily isapnptools} ©ñ¤@°_ªº¤å¥ó¡C

{\itshape ½Ðª`·N:\/} {\ttfamily isapnptools} ±`µLªk°»´ú SB AWE Wave Table ³]³Æªº¤T­Ó I/O °ð¡C
½Ð¬d©ú§Aªº {\ttfamily isapnp.conf} ¤ºªº {\ttfamily WaveTable} ¶µ¥Ø against the example at the end of this HOWTO.
¦pªG»Ý­nªº¸Ü½Õ¾ã¤@¤U I/O base ¦ì§}¡C



{\itshape ª`·N:\/} ®Ú¾Úe {\ttfamily isapnp-faq}¡A¦³®É­Ô {\ttfamily isapnp} ·|µLªk±oª¾ÅÞ¿è³]³Æªº¼Æ¥Ø¡C¦pªG§A¾D¹J
¨ì¹³¤U­±ªº¿ù»~°T®§¡G

\begin{tscreen}
\begin{verbatim}
Error occurred executing request 'LD 2' on or around line...
\end{verbatim}
\end{tscreen}


¨º¸Õ¬Ý¬Ý¥[¤J {\ttfamily (VERIFYLD N)} ¨ì {\ttfamily isapnp.conf}ªº¤WÀY¡C§A¥²¶·¨Ï¥Î¦Ü¤Ö¬O 1.10 ª©ªº¤~¯à³o»ò°µ¡C
¦pªG§AµLªk¨Ï¥Î 1.10 ©Î¬O§ó·sªºª©¥»¡C§A¤]¥i¥H¦Û¤wª½±µ¤â°Ê§ïÅÞ¿è³]³Æªº¼Æ¶q¡C
½Ð±¡½Ð°Ñ¦Ò {\ttfamily isapnp-faq} ¡C¦pªGÁÙ¬OµLªk§JªA¡A½Ð©M§Ú³sµ¸ (À³¸Ó¦³¤H¤]·|¹ï {\ttfamily isapnp} ¦³¿³½ì§a
¡A§Ú·Q)¡C

{\itshape ¤p¤ß:\/} ½Ð½T»{³Ì«á¨º¦æ¬O {\ttfamily (WAITFORKEY)}¡A¦³®É­Ô¸ûÂÂªº {\ttfamily pnpdump}
ª©¥»·|§R°£¥¦¡C

¦b¤å¥óªº«á­±¦³¤@­Ó{\ttfamily isapnp.conf} µ¹³æ­Ó PnP ­µ®Ä¥d¥Îªº¼Ë¥»¡C (½Ð¬Ý³¹¸` \ref{isapnpconf} {(Sample {$<$}tt{$>$}isapnp.conf{$<$}/tt{$>$})})¡C

¦pªG§A¬O¥Î Debian ¨t²Î´N¤£¥Î¦A°µ¥ô¦óªº¨ä¥L½Õ¾ã¡C  {\ttfamily /etc/init.d/boot} ¥[¤W¤U­±ªº
©R¥O¤â½Z¤U¡A§A´N¥i¥H¦b¶}¾÷®É±Ò°Ê{\ttfamily isapnp}
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
# Configure the isa plug and play boards before loading
# modules. Need to do this before loading modules to get
# a chance of configuring and starting PnP boards before
# the drivers mess all this up.
#
if [ -x /etc/init.d/isapnp ]
then
  /etc/init.d/isapnp start
fi
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}

where {\ttfamily /etc/init.d/isapnp} is
\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
#! /bin/sh
# /etc/init.d/isapnp: configure Plug and Play boards
test -x /sbin/isapnp || exit 0
/sbin/isapnp /etc/isapnp.conf
exit 0
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


¦pªG§A¦³¨ä¥Lªº Linux ¨ÑÀ³°Óª©¥»¡A§A´N­n¦Û¤w¨Ó¤F¡C§Ú¤]¤£ª¾¹D«ç»ò°µ
(¦³½ÖÄ@·N´£¨Ñ§ó¦hªº¸ê°T¶Ü?)¡C¥u­n°O±o isapnp ¥²¶·¦b©Ò¦³¼Ò²Õ³Q¸ü¤J {\itshape ¤§«e\/} ´N³Q¸ü¤J¤F (½Ð¬Ý¤U­±)¡C






\subsection{½sÄ¶®Ö¤ßµ{¦¡}



¦b½sÄ¶®Ö¤ßµ{¦¡¤§«e¡A§A¥²¶·¦³ AWE Driver Extension ®M¥ó¨Óµ¹­µ®ÄÅX°Êµ{¦¡¨Ï¥Î¡C´Nºâ§A
ªº®Ö¤ß­ì©lµ{¦¡¥Ø¿ýùØ¤w¸g¦³ {\ttfamily awedrv} ©µ¦ù®M¥ó¤F (½ÐÀË¬d {\ttfamily /drivers/sound/lowlevel/} ¬Ý¬Ý)¡A
§A¥i¯à·Q­n¤É¯Å {\ttfamily awedrv} ³nÅé¡C¨Ì·Ó¦w¸Ë¦b {\ttfamily awedrv} ­ì©l¥Ø¿ýùØªº«ü¥Ü¡CÂ²³æ¦a»¡¡A§A¥²¶·°õ¦æ
¤@­Ó­×¸É®Ö¤ß­ì©lµ{¦¡ªº¦w¸Ë©R¥O¤â½Z¡C

½Ð¤p¤ß§A¤w¸g¦b°õ¦æ§¹¦w¸Ë©R¥O¤â½Z«á¤w¸g¤É¯Å¤F®Ö¤ß­ì©lµ{¦¡¤F¡C³o­Ó©R¥O¤â½Z
¥u¬O¦bÀË¬d¬Ý¬Ý¤@¨Ç¯S©wÀÉ®×¬O§_¤w¸g¦³¤F¡A¦pªG¦³¤F¡A¥¦¤£·|¦³¥ô¦ó»Ý­nªº­×¸É°Ê§@¡C
§A¤É¯Å®Ö¤ß­ì©lµ{¦¡«á¦b°õ¦æ©R¥O¤â½Z«e·|³Q«ØÄ³±N {\ttfamily drivers/sound/lowlevel/awe\_wav.c}
ÀÉ®×²¾°£¡C

±µ¤U¨Ó§A¥²¶·«Øºc®Ö¤ßµ{¦¡¨Ó¤ä´©­µ®Ä¡C§Ú§Æ±æ§Aª¾¹D«ç»ò¨Ó½sÄ¶®Ö¤ßµ{¦¡¡F¸Ô±¡½Ð°Ñ¦Ò
Sound HOWTO ¥H¤Î Kernel HOWTO¡C¨ì®Ö¤ß­ì©lµ{¦¡ªº¥Ø¿ýùØ¡A ({\ttfamily ¨Ò¦p /usr/src/linux})
µM«á°õ¦æ

\begin{tscreen}
\begin{verbatim}
# make config
\end{verbatim}
\end{tscreen}


©Î¬O {\ttfamily make menuconfig} ©Î {\ttfamily make xconfig}¡CµM«á¥Î¼Ð·Çªº¤è¦¡¨Ó
«Øºc§Aªº®Ö¤ßµ{¦¡¡C §Q¥Î³o­Ó¾÷·|¨Ó°µ­ÓÅé¿n¤S¤p¤S±j¦Ó¦³¤Oªº®Ö¤ßµ{¦¡¡A¯S§O¬O
¬°§Aªº¨t²Î¶q¨­­q°µªº¡C°O±o¦b¦^µª {\ttfamily Enable loadable module support} ¬O¿ï {\ttfamily Y}¡A
¦pªG§A·Q§â­µ®ÄÅX°Êµ{¦¡¦w¸Ë¦¨¥i¸ü¤J¦¡¼Ò²Õªº¸Ü (¦pªG§A¥Îªº¬O PnP ¥dªº¸Ü´N {\itshape ¥²¶·\/}³o»ò°µ)
¡A¦ý§Úª¾¹D§A¤]·|³o»ò°µ§a¡I

§A·|¦b¦³­Ó¦a¤è³Q°Ý¨ì¬O§_»Ý­n­µ®Ä¥d¤ä´©¡C¦pªG§A{\itshape ¨S¦³\/}  PnP¥dªº¸Ü
§A¥i¥H¦Û¥Ñ¦^µª {\ttfamily Y} ©Î {\ttfamily M} ¡A¦pªG§A­n°µ¦¨¼Ò²Õªº¸Ü¦Ó¥B¬O PnP¥d¡A{\itshape ¥²¶·\/} ¦^µª {\ttfamily M}¡C
§A¥²¶·±N PnP ­µ®Ä¥dªº¤ä´©½sÄ¶¦¨¤@­Ó¼Ò²Õ¡A¦]¬°¦b¼Ò²Õ³Q¸ü¤J«e PnP ¥d¥²¶·¥ýªì©l¤Æ¡C

¤U¦Cªº°ÝÃD§AÀ³¸Ó¦^µª {\ttfamily Y}¡A¨ä¾l¦^µª {\ttfamily N}¡G

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
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/?]
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


¥u¦³«á­±ªº¬Oµ¹ Wave Table ¦X¦¨¾¹¥Îªº¡C¨ä¾l¬O OSS/Free ­µ®ÄÅX°Êµ{¦¡µ¹ SB 16 ªº¿ï¶µ¡C

°£¦¹¤§¥~¡A§A¥²¶·«Øºc­µ®Ä¥d I/O °ð¡C¥i°Ñ¦Ò {\ttfamily isapnp.conf} ÀÉ·|µ¹§A¤@¨Ç´£¥Ü¡A
¦pªG§A¦³³o­ÓÀÉªº¸Ü¡C¹ï§Ú¨Ó»¡¡A¤U­±ªº¤º©w­È´N°÷¤F¡C½Ðª`·N¡G®Ö¤ßµ{¦¡«Øºc©R¥O¤â½Zªº¤º©w­È
¤]¦³¥i¯à¬O¿ùªº  (¯S§O¬O {\ttfamily SBC\_IRQ} ©M {\ttfamily SB\_MPU\_BASE} ªº­È¹ï¤j³¡¥÷ªº¥d¨Ó»¡¦n¹³³£¿ù¤F)¡C

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
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]
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


¦n¤F¡A²{¦b­«·s½sÄ¶®Ö¤ßµ{¦¡¡ADebian ªº¨Ï¥ÎªÌ­n¥Î {\ttfamily kernel-package}«ü¥O¡C
³o­Ó®M¥óÅý§Ú­Ì½sÄ¶®Ö¤ßµ{¦¡´N¹³¦w¸Ë debian ªº®M¥ó¤@¼Ë®e©ö®@¡C½Ð¬Ý
{\ttfamily /usr/doc/kernel-package/}ùØªº¤å¥ó¡C³oùØ¦³­Ó´£¥Ü¡G

\begin{tscreen}
\begin{verbatim}
# make-kpkg clean
# make-kpkg -revision custom.1.0 kernel_image
\end{verbatim}
\end{tscreen}


µM«á {\ttfamily dpkg -i /usr/src/kernel-image-2.0.29\_custom.1.0\_i386.deb}.

¦pªG§Aªº¬O¨ä¥Lªº Linux ¨ÑÀ³°Óª©¥»¡A½Ð¨Ì·Ó¼Ð·Çªº¤è¦¡¨Ó½sÄ¶·sªº®Ö¤ßµ{¦¡¡C¤£­n§Ñ¤F
{\ttfamily make modules} ¥H¤Î {\ttfamily make modules\_install}¡C¸Ô±¡½Ð¬Ý Sound HOWTO ©Î Kernel HOWTO¡C






\subsection{­«¶}¾÷}



¦w¸Ë§¹·s®Ö¤ßµ{¦¡«á¡A§AÀ³¸Ó­«·s¶}¾÷ (½Ð°O±o§A­n¦³­Ó¥i¥Îªº¶}¾÷ºÏ¤ù¦b¤â¤W)¡C¥æ¤eµÛ§Aªº¤â«üÀYµ¥¤@¤U¡C

¦pªG§A¦³­Ó PnP ¥d¡A½Ð½T»{¦b¶}¾÷±Ò°Ê©R¥O¤â½ZùØ©Î¬O¤â°Ê¦a°õ¦æ isapnp (¹³¤W­±©Ò´£ªº¤@¼Ë)¡G

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


²{¦b§A¥i¥H¦w¸Ë­µ®ÄÅX°Êµ{¦¡¤F¡A¦pªG§A¤w§â¥¦½sÄ¶¦¨¤@­Ó¼Ò²Õ¡G

\begin{tscreen}
\begin{verbatim}
# modprobe -a sound
AWE32 Sound Driver v0.3.3e (DRAM 2048k)
\end{verbatim}
\end{tscreen}


¦pªG§A»{¬°°O¾ÐÅé°»´ú¦³»~ (¦³­Ó¤H§i¶D§Ú»¡¥L¦³±i AWE64 ¥d¦³ 4096k¡AµM¦Ó ``°»´ú¨ì'' 28672k !)¡A½Ð¤É¯Å
{\ttfamily awedrv} ³nÅé©Î¬O¦b {\ttfamily /usr/src/linux/drivers/sound/lowlevel/awe\_config.h}ÀÉ®×ùØ«ü©w°O¾ÐÅé¡A
¦p¡G

\begin{tscreen}
\begin{verbatim}
#define AWE_DEFAULT_MEM_SIZE  4096   /* kbytes */
\end{verbatim}
\end{tscreen}


©êÁ¾¡A§A¥²¶·¦A­«·s½sÄ¶®Ö¤ßµ{¦¡ (¤]³\½sÄ¶³o¨Ç¼Ò²Õ´N°÷¤F¡A¦ý§Ú¤£½T©w)¡C

¦pªG¥¦¦¨¥\°Ê§@¤F¡A§A¥i¯à§Æ±æ­µ®Ä¼Ò²Õ¯à¦Û°Ê¸ü¤J¡C§A¥i¥H¨Ï¥Î {\ttfamily kerneld} (
¦b 1.4³¹¸`ùØ¦³»¡©ú¬°¦ó³o¬O­ÓÃaÂI¤l) ©Î¬O¦b§Aªº{\ttfamily /etc/modules} (Debian¨t²Î) ùØÀY
¥[¤W¤@¦æ¥]§t {\ttfamily sound} ©Î¬O¥[¤W {\ttfamily /sbin/modprobe -a sound} ¨ì§Aªº±Ò°Ê©R¥O¤â½ZùØ¡C




\section{´ú¸Õ¦w®ÄÅX°Êµ{¦¡}






\subsection{{\ttfamily /proc/devices, /dev/sndstat}}



¦pªG§A¦³¤º«Øªº­µ®Ä¤ä´©¡A§A·|¦b¶}¾÷®É¦¬¨ì¤@¨Ç¦³¥Îªº¸ê°T¡C¦pªG§Aªº­µ®Ä¤ä´©¬O¦w¸Ë¦¨¥i¸ü¤J¦¡¼Ò²Õªº¡A
§A¤]¥i¥H¥Î¤U¦C¤è¦¡±o¨ì¤@¨Ç¸ê°T (©Î³\­n¥ý¥Î {\ttfamily modprobe -r sound} ±N­µ®Ä²¾°£)¡C

\begin{tscreen}
\begin{verbatim}
# 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)
\end{verbatim}
\end{tscreen}


¦pªG§A¦³ {\ttfamily /proc} µêÀÀÀÉ®×¨t²Î¡A§A¥i¥H¥Î¤U¦C¤èªk¬Ý¨ì²Ä¤G­Ó³]³Æ

\begin{tscreen}
\begin{verbatim}
# cat /proc/devices
Character devices:
[...]
14 sound
[...]
\end{verbatim}
\end{tscreen}


±µ¤U¨Ó½Ð»{»{§A¦b {\ttfamily /dev/} ¤U¦³­Ó¤w¥¿½T¦w¸Ëªº³]³Æ¡C¸Ô±¡½Ð¬Ý Sound HOWTO ¡C
µM«á°õ¦æ {\ttfamily /dev/sndstat} ¥i¬d¸ß­µ®Ä¼Ò²Õªºª¬ºA¡C

\begin{tscreen}
\begin{verbatim}
# 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
\end{verbatim}
\end{tscreen}


¦pªG§A¨S¦³¹³³o¼Ëªº¿é¥X¡A¤]³\¦b§Aªº«ØºcùØ¦³°ÝÃD¡AÄ~Äò§ä¬Ý¬Ý­þ¨à¤£¯à°Ê¡A¦A¦^¨Ó
\ref{isapnp} {(Getting Started)}¡AÀË¬d¨C¤@¶µ¡C






\subsection{¿é¥X¡Ð Raw Audio Device}



¥h¨ú±o¤@­Ó {\ttfamily .au} ÀÉ (Sun workstation) ©Î¼Ë¥»ÀÉ®×¡AµM«á³o¼Ë°µ¡G

\begin{tscreen}
\begin{verbatim}
# cat bell.au > /dev/audio
\end{verbatim}
\end{tscreen}


resp.

\begin{tscreen}
\begin{verbatim}
# cat sample > /dev/dsp
\end{verbatim}
\end{tscreen}


§A·|À³¸Ó¥i¥H¥Ñ {\ttfamily Audio Device 0: Sound Blaster 16 (4.3)}Å¥¨ì³o­ÓÀÉ®×ªº¤º®e¡C






\subsection{¿é¥X - OPL-2/OPL-3 Synthesis}



¦pªG§A­n¨Ï¥Î OPL-2/OPL-3 FM ¦X¦¨¾¹¦b§Aªº­µ®Ä¥d¤W¼·©ñ MIDIÀÉ®×¡A½Ð¸Õ¬Ý¬Ý
{\ttfamily playmidi} ³o­Óµ{¦¡(½Ð¬Ýªþ¿ý B)¡C¨Ï¥Î¤èªk¦p¤U

\begin{tscreen}
\begin{verbatim}
# playmidi -f dance.mid
\end{verbatim}
\end{tscreen}




©Î¬O



\begin{tscreen}
\begin{verbatim}
# playmidi -4 dance.mid
\end{verbatim}
\end{tscreen}


«e³õ·|µ¹§A OPL-2¡A«á³õ·|µ¹§A OPL-3 MIDI ­µ¼Ö¡C ¦pªG§AÄ±±o³o¨ÇÁn­µÅ¥¨Ó«Ü»¹¡A
¤£­n©Ç playmidi¡A¨º¬O¦]¬° FM ¦X¦¨¾¹Å¥°_¨Ó«Ü®t°Õ¡C

±z¥i¥H·Q¹³¤@¤U§A¥u¦³¤@­Ó OSS/Free ­µ®ÄÅX°Êµ{¦¡¡G¨º´N¬O§A©Ò¯à±o¨ìªº MIDI­µ¼Öªº«~½è¤F¡C
(»P³nÅé¦X¦¨¤£¦P)¡C©¯¹Bªº¬O¡A§A¦³ SB AWE¡A§AÁÙ¥i¥H¨Ï¥Î Wave Table ¥H¤Î AWE Sound Driver Extension¤F¡C






\subsection{¿é¥X - Wave Table Synthesis}



¦b AWE Driver Extension ùØ¦³­Ó«Ü¯S§Oªº¤u¨ãµ{¦¡ ({\ttfamily awesfx}) ¥i¥Î¨Ó¨Ï¥Î EMU 8000 Wave Table ¦X¦¨¾¹¡C
­º¥ý¡A§A¥²¶·±q§Aªº­µ®Ä¥dùØ¸ü¤J Sound Font Bank ¡Ð´Nºâ§A·Q¨Ï¥Î ROM ªº¨ú¼Ë ! §A¥i¥H±q§Aªº Windows ªº
¦w¸Ë¤¤¨ú±o³o­ÓÀÉ ¡Ð´M§äªþ¥[ÀÉ¦W¬° {\ttfamily *.sfb} ©Î {\ttfamily *.sf2}ªºÀÉ®×¡C

ROM ¨ú¼Ë¥i¥H¨Ï¥Î {\ttfamily SYNTHGM.SBK}¨Ó¸ü¤J¡A ¯u¹êªº¨ú¼Ë©ñ¦b {\ttfamily SYNTHGS.SBK} ¤Î {\ttfamily SYNTHMT.SBK}
¥H¤Î {\ttfamily SAMPLE.SBK}ùØ¡C§A¤]¥i¥H±q ftp©Î www ¨Ó¨ú±o¨ä¥Lªº Sound Font Banksvia ¡A¥i¥H¸Õ¸Õ
Creative Labs ªº EMU ªººô­¶¡A ¦³­Ó Chaos ¨ú¼Ë¡A¥L­Ì¯uªº«Ü´Î (½ÐÀË¬d AWE ÅX°Êµ{¦¡ºô¯¸)¡C

¸Õ¬Ý¬Ý¸ü¤J¼Ð·Çªº GM (ROM) set ¡A¨Ï¥Î

\begin{tscreen}
\begin{verbatim}
# sfxload -i synthgm.sbk
\end{verbatim}
\end{tscreen}


µM«á¼·©ñ­Ó¦ñÀHµÛ§Aªº SB AWE ªº midi ÀÉ®×¡G

\begin{tscreen}
\begin{verbatim}
# drvmidi dance.mid
\end{verbatim}
\end{tscreen}







\subsection{²V­µ\label{mixing}}



¨ú±o§A³Ì³ßÅwªº²V­µ¾¹µ{¦¡¨Ã°õ¦æ¥¦¡C¦b¦P¤@®É¶¡¼·©ñ¤@­Ó­µ®Ä¨ú¼Ë¥H¤Î¨â­Ó MIDI ÀÉ¼Ë¥»¡A
µM«á¸Õ¸Õ²V­µ¾¹ªº³]©w¡C ¼·¤@·|¨à¡A«Ü®e©öªº¡C¥H¤U¦³¥L­Ì³QºÙ©Iªº³]³Æ¦Cªí¡G

\begin{description}
\item[Yamaha OPL-3] \mbox{}

Synth ©Î FM

\item[AWE32 Driver] \mbox{}

Synth ©Î FM (¦³¤Hª¾¹D²V­µ¾¹¬O a mixer were the last
two are separated from each other?)

\item[Sound Blaster 16 (4.13)] \mbox{}

PCM ©Î DSP

\item[PC Speaker (still alive)] \mbox{}

Spkr

\end{description}


ÁÙ¦³¤@¨Ç»P CD ROM ¬ÛÃöªº²V­µ¾¹¡A¥i¯à³s±µµÛ­µ®Ä¥dªº¦³ Master Volume, Bass, Treble ©M¤£¦P
¿é¤J­y¹Dªº¿ý­µ°ª§C¡C §A¥i¥H«ü©w­þ¨Ç­y¹DÀ³¸Ó³Q¿ý­µ¤U¨Ó¡C




\subsection{¿é¤J¡Ð¨Ï¥ÎRaw Audio Device¨Ó¨ú¼Ë}



§A¥i¥H¿ý¤U¤£¦Pªº­µ·½¡G¬Û³sªº CD ROM¡B»P {\ttfamily mic} ¬Û³sªº³Á§J­·¡A¥H¤Î»P {\ttfamily line in}
¬Û³s±µªº¥ô¦ó­µ·½¡C±N²V­µ¾¹³]©w¦b¾A·íªº¦ì¸m¡C¼·©ñ¤@­ÓÁn­µ¨Ã±N¥¦¿ý­µ¦¨¤@­ÓÀÉ®×¡A¦A¥Ñ
Raw Audio Device¨ÓÅª¨ú¡A¨Ò¦p¡G

\begin{tscreen}
\begin{verbatim}
# cdplay
# dd bs=8k count=5 </dev/dsp >music.au
5+0 records in
5+0 records out
# cat music.au >/dev/dsp
\end{verbatim}
\end{tscreen}


±q¿é¤J³]³Æ¨Ó¿ý­µ¥H¤Î¼·©ñ 5 ¬íªºÁn­µ¡C




\subsection{MIDI °ð}



©êÁ¾¡A¥Ø«eÁÙ¨S¦³Ãö©ó MIDI °ðªº¸ê°T!




\section{AWE ÅX°Êµ{¦¡³nÅé}






\subsection{{\ttfamily sfxload}}



§A¥i¥H¨Ï¥Î  {\ttfamily sfxload} ¤u¨ã¨Ó¸ü¤J­µ®Ä¥d¤Wªº DRAM ¨ú¼Ë¨ì¡C°O±o§A¥u¯à¦b¨C­Ó bank ùØ¸ü¤J¤@­Ó¨ú¼Ë¡A
¤º©w¬° bank 0¡C¦]¦¹¡A¦b {\ttfamily sfxload synthgs.sbk} ¤§«á¡A¦b§Aªº­µ®Ä¥d¤W°ß¤@ªº¨ú¼Ë´N¬O GS ¨ú¼Ë¡C
¦pªG§A­n¸ü¤J¨ä¥Lªº Sound Font Bank¡A½Ð¨Ï¥Î {\ttfamily -b} ¿ï¶µ¡A¨Ò¦p¡G

\begin{tscreen}
\begin{verbatim}
# sfxload synthgs.sbk
# sfxload -b1 sample.sbk
# drvmidi sfx.mid
\end{verbatim}
\end{tscreen}


¤]¥i¥H¦w¸Ë¼Ò²Õ¨Ó¦Û°Ê¸ü¤J¤º©wªº Sound Font Bank¡C¥u»Ý¥[¤W³o¤@¦æ

\begin{tscreen}
\begin{verbatim}
post-install sound /usr/bin/sfxload synthgm.sbk
\end{verbatim}
\end{tscreen}


¨ì§Aªº {\ttfamily /etc/conf.modules} ÀÉ®×ùØ

¸Ô±¡½Ð¬ÝÃö©ó {\ttfamily sfxload} ªº¤å¥ó




\subsection{{\ttfamily drvmidi}}



¨Ï¥Î {\ttfamily drvmidi} µ{¦¡¡A§A¥i¥H¨Ï¥Î§Aªº AWE ÅX°Êµ{¦¡¨Óºt«µ MIDI ÀÉ®×¡C
¥u­n¦b©R¥O«á­±¥[¤W§Aªº midi ÀÉ¦W§Y¥i¡G

\begin{tscreen}
\begin{verbatim}
# drvmidi waltz.mid
\end{verbatim}
\end{tscreen}


¸Ô±¡½Ð¬ÝÃö©ó {\ttfamily drvmidi} ªº¤å¥ó




\section{ªþ¿ý}






\subsection{ªþ¥[¸ê°T\label{moreinfo}}



\begin{description}
\item[Linux Sound HOWTO] \mbox{}

§@ªÌ: Jeff Tranter, {\ttfamily $<$\onlynameurl{jeff\_tranter@pobox.com}$>$}

³Ì·sª©: v1.17, 1997¦~ 8¤ë 4¤é

½Ð¦n¦n¾\Åª¤@¤U Sound HOWTO (¥i±q sunsite.unc.edu ¥H¤Î¨ä¥L¯¸¨ú±o)¡C
¥¦¦³«Ü¦nªº¸ê°TÃö©ó½sÄ¶®Ö¤ßµ{¦¡¨Ó¤ä´©­µ®Ä¡A¨Ã¸ÑÄÀ«Ü¦h­µ®Ä³]³Æ¥H¤ÎÀ³¥Îµ{¦¡µ¥µ¥¡C

I understand this HOWTO as an addition to the Sound HOWTO.



\item[Linux Sound Playing HOWTO] \mbox{}

§@ªÌ: Yoo C. Chung, {\ttfamily $<$\onlynameurl{wacko@laplace.snu.ac.kr}$>$}

³Ì·sª©: v1.4,  1997 ¦~ 5¤ë 13¤é

§AÀ³¸Ó¤]¾\Åª Sound Playing HOWTO¡C¥¦·|§i¶D§A«Ü¦h¦UºØÁn­µ®æ¦¡¥H¤Îºt«µ¥L­ÌªºÀ³¥Îµ{¦¡¡C



\item[AWE ÅX°Êµ{¦¡ FAQ] \mbox{}

§@ªÌ: Takashi Iwai {\ttfamily $<$\onlynameurl{iwai@dragon.mm.t.u-tokyo.ac.jp}$>$}

¨Ó·½: \nameurl{http://bahamut.mm.t.u-tokyo.ac.jp/~iwai/awedrv/awedrv-faq.html}{}

¦pªG§A¦b¦w¸Ë AWE ÅX°Êµ{¦¡®É¡B©Î¬O¨Ï¥Î§Aªº Sound Blaster ¥dªº Wave Table ¦X¦¨¾¹¡A¨º´N¬Ý³o¨à¤F¡C



\item[ISA PnP FAQ ±`°Ý¶°] \mbox{}

§@ªÌ: Peter Fox {\ttfamily $<$\onlynameurl{fox@roestock.demon.co.uk}$>$}

¨Ó·½: \nameurl{http://www.roestock.demon.co.uk/isapnptools/isapnpfaq.html}{}

¦pªG§A­n¦w¸Ë ISA PnP ¥d¡A¨º´N­n¬Ý§A¦Û¤v¤F¡C



\end{description}





\subsection{¨Ó·½\label{sources}}



\begin{description}


\item[{\ttfamily isapnptools}] \mbox{}

§@ªÌ: Peter Fox {\ttfamily $<$\onlynameurl{fox@roestock.demon.co.uk}$>$}

³Ìªñª©¥»: 1.11

¨Ó·½: \nameurl{http://www.roestock.demon.co.uk/isapnptools/index.html}{}

¦pªG§A­n³ø§i­×¸É¡B¯ä¦ä©Î¬OÄ³¨¥¡A½Ð¦b¥DÃDÄæùØ­±¥[¤W 'isapnp' ¡A¨Ã¶l±H¨ì isapnp@roestock.demon.co.uk



\item[{\ttfamily awedrv}] \mbox{}

§@ªÌ: Takashi Iwai {\ttfamily $<$\onlynameurl{iwai@dragon.mm.t.u-tokyo.ac.jp}$>$}

³Ì·sª©¥»: 0.4.2c

¨Ó·½: \nameurl{http://bahamut.mm.t.u-tokyo.ac.jp/~iwai/awedrv/}{}



\item[Linux kernel] \mbox{}

§@ªÌ: Linus Torvald and many other

³Ì·sª©¥»: ¦b¦¹¨è¡A§A¥i¥H¥Î 2.0.29

¨Ó·½: ¨ì³B³£¥i¥H¨ú±o Linux {\ttfamily :)}



\item[OSS/Free] \mbox{}

§@ªÌ: Hannu Savolainen (Please check \nameurl{http://www.4front-tech.com/usslite before mailing me}{}).

³Ì·sª©¥»: §Ú¦³ 3.5.5-beta1 ª©

¨Ó·½: ©M Linux ®Ö¤ß­ì©lµ{¦¡®M¥ó¤@°_

¸ê°T:  \nameurl{http://www.4front-tech.com/usslite}{} or \nameurl{http://personal.eunet.fi/pp/voxware}{European mirror}.



\end{description}





\subsection{½d¥» {\ttfamily isapnp.conf}\label{isapnpconf}}



¥Ñ pnpdump ©Ò«Ø¥ßªº ISA PnP «ØºcÀÉ¡A§Aªº PnP ¥d°ß¤@¥X²{ªº¶µ¥Ø¿é¥X¦p¤U¡A
¦³¤@±i¥d³Q°»´ú¥X (­µ®Ä¥d)¡A¨Ã¦³¥|­ÓÅÞ¿è³]³Æ¡G

\begin{itemize}
\item {\ttfamily LD 0}: Audio Device
\item {\ttfamily LD 1}: IDE Device
\item {\ttfamily LD 2}: WaveTable Device
\item {\ttfamily LD 3}: Gameport Device
\end{itemize}


§Ú¸Ñ°£ {\ttfamily LD 1} ªº«Øºc¡A¦]¬°§Ú¨S¦³¦b­µ®Ä¥dªº IDE °ð¤W±µµÛ CD ROM¡C¦pªG§Aªº SB ¨S¦³ IDE °ð
¡A¨º»ò {\ttfamily LD 1} ´N¬O Gameport ³]³Æ¡A¦Ó {\ttfamily LD 3} ´N¤£·|¥X²{¤F¡C

½Ð°Ñ¦Ò \ref{isapnp} {(Getting started)} ³o­Ó³¹¸`ùØ¦³§ó¦hªº¸ê°T («Ü­«­n!)¡C

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
# $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)
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}




Ä¶ªÌ«ö: ­Y±zµo²{¥»¤å¥ó¤º®e¦³Â½Ä¶¤£¶¶ºZ©Î¿ù»~ªº¦a¤è¡A½Ð±z¨Ó«H§i¶D§Ú¡A¥H°µ§ó¥¿¡AÁÂÁÂ¡C
{\ttfamily \onlynameurl{linuxer.bbs@cis.nctu.edu.tw}}¡C
Ä¶µù¡G³o¥÷¤å¥óªº¤¤¤åª©¥i¦b\nameurl{http://www.linux.org.tw/LCDP/}{}¤U¨ú±o¡C

\end{document}
