old-www/HOWTO/Soundblaster-AWE-2.html

169 lines
8.1 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<TITLE>Sound Blaster AWE 32/64 HOWTO: Before you start</TITLE>
<LINK HREF="Soundblaster-AWE-3.html" REL=next>
<LINK HREF="Soundblaster-AWE-1.html" REL=previous>
<LINK HREF="Soundblaster-AWE.html#toc2" REL=contents>
</HEAD>
<BODY>
<A HREF="Soundblaster-AWE-3.html">Next</A>
<A HREF="Soundblaster-AWE-1.html">Previous</A>
<A HREF="Soundblaster-AWE.html#toc2">Contents</A>
<HR>
<H2><A NAME="s2">2. Before you start</A></H2>
<P>
<P>
<H2><A NAME="ss2.1">2.1 Introduction</A>
</H2>
<P>
<P>This document tries to help you install and use a Sound Blaster AWE 32 or
Sound Blaster AWE 64 from Creative Labs in your Linux system. The reference
system is a
<A HREF="http://www.debian.org">Debian GNU/Linux</A>
system on an Intel i586 platform, but it should work with any other Linux
distribution as well as on every platform that is supported by the Linux
sound driver (differences are mentioned where they appear, if any).
<P>Be sure to read the Linux Sound HOWTO (see section
<A HREF="Soundblaster-AWE-6.html#moreinfo">Additional Information</A>) carefully. I consider my document a supplement
to the Sound HOWTO, and often you can find more information about things
I have left out there.
<P>
<P>
<H2><A NAME="ss2.2">2.2 Some general notes about the SB AWE cards</A>
</H2>
<P>
<P>The SB AWE 32 sound card provides a raw audio device, standard OPL-2/OPL-3
synthesis, a MPU-401 MIDI port and 32 voices EMU 8000 Wave Table synthesis
(for an explanation on these and other terms see the Linux Sound HOWTO).
One goal of this document is to help you get all these features to
work properly.
<P>The SB AWE 64 has the capabilities of the SB AWE 32 and an additional
Wave Guide synthesis Creative Labs is especially proud of. The problem for
Linux users is, that the additional 32 voices are software generated and
output via the raw wave devices. Because Creative Labs sees no market in
Linux drivers, a Wave Guide synthesis sound driver is only available for
Windows 3.1 and Windows 95.
<P>This means that, from a Linux user's point of view, the SB AWE 32 and
SB AWE 64 are almost identical. From now on I will only refer to the
SB AWE in general and will only mention differences where they appear (if
any).
<P>
<P>
<H2><A NAME="ss2.3">2.3 Some general notes about the Plug and Play cards</A>
</H2>
<P>
<P>Most modern cards for the Intel platform are ISA PnP cards, which is an
abbreviation for ``Plug and Play''. This means, that the card has to be
configured by the operation system, and this has to be done through an
initialization routine at boot time. In general, there are at least three
possible ways to do this:
<P>
<OL>
<LI>You have a PnP Bios, which means that your Bios is aware of PnP
cards and can configure them. If you think you can use all the
features of your SB AWE PnP just because you have a PnP Bios, you
are out of luck. Even if the Bios claims to support PnP cards it
only initializes a subset of the ports and addresses used by your
sound card. You will probably be able to play raw wave data, but you
won't be able to play MIDI music, for example. For this reason, a
PnP Bios is not an option.
</LI>
<LI>You have an operating system that supports PnP cards. The current stable
Linux kernel (2.0.x) is not such an operating system, so we have to wait for
future kernel releases, that will support PnP devices.
</LI>
<LI>You have a special program, started at boot time, that initializes your
PnP cards. This is the way we do it.</LI>
</OL>
<P>The most commonly used software to initialize PnP cards under Linux are the
``isapnptools'' (see section
<A HREF="Soundblaster-AWE-6.html#sources">Sources</A> and section
<A HREF="Soundblaster-AWE-3.html#isapnp">Getting Started</A>). They provide a predictable way to
configure all ISA PnP cards in your machine, not only your sound card.
<P>
<P>
<H2><A NAME="ss2.4">2.4 Some general notes about loadable kernel modules</A>
</H2>
<P>
<P>Some device drivers can be built as modules instead of compiling them into the
kernel. You can find more information about modules in the Kernel HOWTO and
the Module HOWTO (see section
<A HREF="Soundblaster-AWE-6.html#moreinfo">Additional Information</A>).
<P>If you have a PnP card, you <EM>must</EM> install sound support as a loadable kernel
module. This means, that you can't build the sound driver into the kernel,
but you will have to build it as a module that can be loaded into the
kernel at runtime. This is because the kernel will be installed before your
ISA PnP card can be configured, and your sound driver has to be loaded after
your ISA PnP card is configured.
<P>The sound kernel module can be loaded manually via <CODE>insmod sound</CODE> or
<CODE>modprobe -a sound</CODE> or in the appropriate boot script of your Linux system
(in Debian, it is sufficient to append a single line containing
<CODE>sound</CODE> to <CODE>/etc/modules</CODE>). Another approach is to
launch <CODE>kerneld</CODE>, a daemon that installs and removes kernel
modules as needed.
<P>Note that <CODE>kerneld</CODE> may not be the best solution for the AWE
sound driver module, because it takes time to load the module in the
kernel, especially if you want to use Wave Table synthesis and load big
Sound Font banks, which you have to do each time after inserting the
module. Because <CODE>kerneld</CODE> removes unused modules after one minute by default,
it is perhaps better to insert the sound module manually or at boot
time. Note that inserting the sound module manually or at boot time does prevent
<CODE>kerneld</CODE> from removing it when it is idle. By the way: You can
manually insert the sound module and use <CODE>kerneld</CODE> at the same
time. The two methods don't conflict, but <CODE>kerneld</CODE> does not care
about the sound module anymore.
<P>This is especially useful if your mixer settings get disturbed after
removing and reinstalling the module. A solution for this problem will be
given in section
<A HREF="Soundblaster-AWE-4.html#mixing">Mixing</A>
(there is described how you can start your mixer automatically
when the sound module gets inserted). However, it takes time for
<CODE>kerneld</CODE> to load the module, to load the sound font bank and to start
your mixer, and for this and other reasons it is better to install the sound module
at boot time and not let <CODE>kerneld</CODE> remove it.
<P>
<P>
<H2><A NAME="ss2.5">2.5 Some general notes about the kernel sound driver</A>
</H2>
<P>
<P>You can install sound support in the kernel as a built-in or as a loadable
module. If you have a PnP card, you have to install sound support as a
module, because the PnP card needs to be initialized via the isapnptools
before the module gets installed.
<P>As you can imagine, you will have to recompile the kernel. I will give you a
few hints about it below. For now, let's talk about the sound support in the
kernel source. The kernel ships with the Free (Lite) Version of the OSS (USS)
sound driver. The current version of this driver (3.5.4) does not support the
SB AWE in full, but the SB 16 part of it. So you can have a raw audio device
and OPL-2/OPL-3 synthesis if you use it, but you will not be able to play midi
music with Wave Table synthesis.
<P>If you want to use the Wave Table device, you can either buy the
commercial sound driver from
<A HREF="http://www.4front-tech.com">4Front Technologies</A> (someone please confirm me that it can do it,
please), or patch your kernel with the AWE 32 Sound Driver Extension by Takashi
Iwai. The former is beyond the scope of this document, I assume you want to use
the latter.
<P>The AWE32 Sound Driver Extension (see section
<A HREF="Soundblaster-AWE-6.html#sources">Sources</A>) is published under the GNU copyright license and
ships with a number of tools to make use of the EMU 8000
wave synthesis of the SB AWE cards.
<P>The <CODE>awedrv</CODE> software is already included in newer kernel source trees
(starting from some 2.1.x kernels, but perhaps you want to upgrade the
sources in your kernel tree, they may be old.
<P>
<P>
<HR>
<A HREF="Soundblaster-AWE-3.html">Next</A>
<A HREF="Soundblaster-AWE-1.html">Previous</A>
<A HREF="Soundblaster-AWE.html#toc2">Contents</A>
</BODY>
</HTML>