LDP/LDP/howto/linuxdoc/Soundblaster-AWE.sgml

934 lines
32 KiB
Plaintext

<!doctype linuxdoc system>
<!-- This is the Sound Blaster AWE 32/64 HOWTO by Marcus Brinkmann -->
<article>
<title>Sound Blaster AWE 32/64 HOWTO
<author>by Marcus Brinkmann <tt>&lt;<htmlurl url="mailto:Marcus.Brinkmann@ruhr-uni-bochum.de"
name="Marcus.Brinkmann@ruhr-uni-bochum.de">&gt;</tt>
<date>v1.2, 11 January 1998
<abstract>
This document describes how to install and configure a Sound Blaster 32 (SB AWE
32, SB AWE 64) card from Creative Labs in a Linux System using the AWE
Sound Driver Extension written by Takashi Iwai. It also covers some special
tools and players for the SB AWE series. Reference system is a Debian
GNU/Linux System, but every other Linux Distribution should also work.
</abstract>
<toc>
<sect>Introduction<p>
This is the Sound Blaster AWE HOWTO. It gives you detailed information about
getting the most out of your Sound Blaster 32 or better, including Wave
Table synthesis. This document covers all SB cards up from the SB 32.
The Sound Blaster series is well-known in the DOS and Windows community, and
a lot of Linux users want to use this sound card under Linux as well.
Unfortunately, Creative Labs only provides a sound driver for Windows and
DOS, so it is not trivial to install and use a SB card under Linux. This
document tries to describe how one can use the features of the SB AWE series
under a Linux environment.
<sect1>Acknowledgments<p>
This documents contains information I got from the AWE Driver FAQ and the ISA PnP FAQ.
See section <ref id="sources" name="Sources"> for author and location of this
documents. Thanks to the authors, the SB AWE support is possible.
A lot of essential work was done by <url
url="http://www.4front-tech.com/usslite" name="Hannu
Savolainen">, who developed the sound driver
that comes with the Linux kernel. Thank you!
I want to thank <url name="Nicola Bernardelli"
url="mailto:n.bern@mail.protos.it">
for testing the AWE64 stuff. Without
him, many errors would have remained undetected.
Thanks to the <url
url="ftp://sunsite.unc.edu/pub/Linux/utils/text/sgml-tools-0.99.0.tar.gz"
name="SGML Tools"> package, this HOWTO is available in several
formats, all generated from a common source file.
<sect1>Revision History<p>
<descrip>
<tag>Version 1.0</tag>first version
<tag>Version 1.1</tag>corrected spelling (thanks Curt!), added version
requirement for <tt/isapnp/, now available via sunsite and lots of mirrors
<tag>Version 1.2</tag>French version now available!, minor corrections, lots
of spelling fixed (thanks to ispell)
</descrip>
<sect1>New versions of this document<p>
The latest version can be found on my Home Page, namely at
<url url="http://homepage.ruhr-uni-bochum.de/Marcus.Brinkmann/soundblaster.html"
name="Sound Blaster AWE HOWTO">.
New versions of this document will be uploaded
to various anonymous ftp sites that archive such information including
<url url="ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/mini">.
Hypertext versions of this and other Linux HOWTOs are available on
many World-Wide-Web sites, including <url
url="http://sunsite.unc.edu/LDP/">. Most Linux CD-ROM
distributions include the HOWTOs, often under the
<tt>/usr/doc</tt> directory.
Thanks to Arnaud Launay <htmlurl url="mailto:zoro@lsol.tm.fr"
name="zoro@lsol.tm.fr">, a French version of this document is now available!
The latest version can be found via <url url="http://www.freenix.fr/linux/HOWTO"
name="http">
or <url url="ftp://ftp.lip6.fr/pub/linux/french/docs/HOWTO" name="anonymous ftp">.
If you make a translation of this document into another language, let
me know and I'll include a reference to it here.
<sect1>Feedback<p>
I rely on you, the reader, to make this HOWTO useful. If you have any
suggestions, corrections, or comments, please send them to me,
<htmlurl url="mailto:Marcus.Brinkmann@ruhr-uni-bochum.de"
name="Marcus.Brinkmann@ruhr-uni-bochum.de">, and I will try to incorporate
them in the next revision.
i would especially welcome information about the startup procedure (boot
scripts etc.) of other famous Linux distributions, e. g. Red Hat or SuSE
Linux.
If you publish this document on a CD-ROM or in hardcopy form, a
complimentary copy would be appreciated. Mail me for my postal
address. Also consider making a donation to the Linux Documentation
Project to help support free documentation for Linux. Contact the
Linux HOWTO coordinator, Tim Bynum <htmlurl
url="mailto:linux-howto@sunsite.unc.edu" name="linux-howto@sunsite.unc.edu">,
for more information.
<sect1>Distribution Policy<p>
Copyright 1997 Marcus Brinkmann.
This HOWTO is free documentation; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This document is distributed in the hope that it will be useful, but
<bf>without any warranty</bf>; without even the implied warranty of
<bf>merchantability</bf> or <bf>fitness for a particular purpose</bf>.
See the GNU General Public License for more details.
You can obtain a copy of the GNU General Public License by writing to
the <url url="http://www.fsf.org" name="Free Software Foundation">,
Inc., 675 Mass Ave, Cambridge, MA 02139,
USA.
<sect>Before you start<p>
<sect1>Introduction<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 <url name="Debian GNU/Linux" url="http://www.debian.org">
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).
Be sure to read the Linux Sound HOWTO (see section <ref id="moreinfo"
name="Additional Information">) 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.
<sect1>Some general notes about the SB AWE cards<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.
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.
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).
<sect1>Some general notes about the Plug and Play cards<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:
<enum>
<item>
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.
<item>
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.
<item>
You have a special program, started at boot time, that initializes your
PnP cards. This is the way we do it.
</enum>
The most commonly used software to initialize PnP cards under Linux are the
``isapnptools'' (see section <ref id="sources" name="Sources"> and section
<ref id="isapnp" name="Getting Started">). They provide a predictable way to
configure all ISA PnP cards in your machine, not only your sound card.
<sect1>Some general notes about loadable kernel modules<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 <ref id="moreinfo" name="Additional
Information">).
If you have a PnP card, you <em/must/ 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.
The sound kernel module can be loaded manually via <tt/insmod sound/ or
<tt/modprobe -a sound/ or in the appropriate boot script of your Linux system
(in Debian, it is sufficient to append a single line containing
<tt/sound/ to <tt>/etc/modules</tt>). Another approach is to
launch <tt/kerneld/, a daemon that installs and removes kernel
modules as needed.
Note that <tt>kerneld</tt> 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 <tt/kerneld/ 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
<tt/kerneld/ from removing it when it is idle. By the way: You can
manually insert the sound module and use <tt/kerneld/ at the same
time. The two methods don't conflict, but <tt/kerneld/ does not care
about the sound module anymore.
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 <ref id="mixing" name="Mixing">
(there is described how you can start your mixer automatically
when the sound module gets inserted). However, it takes time for
<tt/kerneld/ 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 <tt/kerneld/ remove it.
<sect1>Some general notes about the kernel sound driver<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.
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.
If you want to use the Wave Table device, you can either buy the
commercial sound driver from <url name="4Front Technologies"
url="http://www.4front-tech.com"> (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.
The AWE32 Sound Driver Extension (see section <ref id="sources"
name="Sources">) 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.
The <tt/awedrv/ 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.
<sect>How to install SB AWE sound support<p>
<sect1>Things you will need<p>
These are the requirements for SB AWE support under Linux:
<itemize>
<item>
a functional Linux system (e.g. the Debian GNU/Linux distribution),
<item>
a SB AWE 32 or compatible card (e.g. SB32, SB32 PnP, SB AWE64, ...),
<item>
the sources of the Linux kernel, including the sound driver OSS/Free
(normally included, check in <tt>/usr/src/Linux/drivers/sound/Readme</tt>),
<item>
the AWE 32 sound driver extensions.
</itemize>
If you have a PnP card, you will also need:
<itemize>
<item>
the isapnptools software package.
</itemize>
Look in section <ref id="sources" Name="Sources"> for information where you
can obtain these programs.
If you have a Debian GNU/Linux system, this means that you will need
the packages <tt>kernel-source-&lt;version&gt;</tt>, <tt>awe-drv</tt>
and perhaps the package <tt>isapnptools</tt>.
You will want some of the other <tt>awe-*</tt> packages
although they are not essential. I strongly recommend the
<tt>kernel-package</tt> for easy kernel compiling and installing.
<sect1>Getting started<label id="isapnp"><p>
Let's assume you have properly installed your card in a socket on your
motherboard and perhaps already tested it under a DOS or Windows environment.
The next step is to initialize the card at boot time if and only if it is a
PnP card. Follow the documentation in the source package to compile and
install <tt/isapnptools/ (or just use the Debian binary package), and make a
<tscreen><verb>
# pnpdump > /etc/isapnp.conf
</verb></tscreen>
<p>
as root. This will generate a hopefully proper configuration file for your
PnP cards, but with all devices commented out. Please edit this file
carefully, and compare the values for DMA channels, IO bases and interrupts
with the configuration of the cards under an DOS or Window environment if
possible (with Win95, look at the resources used by the card under
<tt/resources/ in the <tt/device manager/). If you have problems,
read the documentation that ships with the <tt/isapnptools/ carefully.
<em/CAUTION:/ <tt/isapnptools/ often fails to detect all three I/O ports
of the SB AWE Wave Table device. Please check carefully the <tt/WaveTable/
entry in your <tt/isapnp.conf/ against the example at the end of this HOWTO.
Adjust the I/O base addresses if necessary.
<p>
<em/CAUTION:/ According to the <tt/isapnp-faq/, sometimes <tt/isapnp/
fails to program the number of the logical device. If you encounter error
messages like the following:
<tscreen><verb>
Error occurred executing request 'LD 2' on or around line...
</verb></tscreen>
then try adding <tt/(VERIFYLD N)/ at the top of <tt/isapnp.conf/. You have
to use at least version 1.10 for this to work. If you can't use version 1.10
or newer, you can also POKE the logical device numbers directly. Please
refer to the <tt>isapnp-faq</tt> for more information on this approach. If it
doesn't work for you, please contact me (and the <tt/isapnp/ people
will be interested, too, I would think).
<em>CAUTION:</em> Make sure that the last line is <tt>(WAITFORKEY)</tt>,
that will sometimes be omitted by older versions of <tt>pnpdump</tt>.
A sample <tt>isapnp.conf</tt> for only one PnP card (the sound card) can be found at
the end of the document (see section <ref id="isapnpconf" name="Sample
<tt>isapnp.conf</tt>">).
If you have a Debian system, no further adjustments are necessary.
<tt/isapnp/ will be started at boot time in <tt>/etc/init.d/boot</tt> with
this snippet of script code, that you may want to include in your boot scripts:
<code>
# 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
</code>
where <tt>/etc/init.d/isapnp</tt> is
<code>
#! /bin/sh
# /etc/init.d/isapnp: configure Plug and Play boards
test -x /sbin/isapnp || exit 0
/sbin/isapnp /etc/isapnp.conf
exit 0
</code>
If you have another Linux distribution, you are on your own. I don't know
what to do (anybody willing to submit more specific information?). Just make
sure that isapnp gets started <em/before/ the modules will be loaded (see
below).
<sect1>Compiling the kernel<p>
Before recompiling the kernel, you have to apply the AWE Driver Extension to
the sound driver. Even if your kernel source tree already includes the
<tt/awedrv/ extension (check <tt>/drivers/sound/lowlevel/</tt> for that), you
may want to upgrade the <tt/awedrv/ software. Follow the installation
instructions in the <tt/awedrv/ source directory. In brief, you have to run
an installation script that applies the patches to the kernel sources.
Be careful if you have upgraded the kernel source tree after running the
install script. The script just checks if a certain file exists - if it
exists, it does not apply the necessary patch. You are well advised to
remove the file <tt>drivers/sound/lowlevel/awe_wav.c</tt> before running the
script after upgrading the kernel source.
Next you have to configure the kernel for sound support. I hope you know a
bit about kernel compiling; see the Sound HOWTO and the Kernel HOWTO for
details. Go in the source directory of your kernel sources
(<tt>/usr/src/linux</tt> for example), and do
<tscreen><verb>
# make config
</verb></tscreen>
or <tt>make menuconfig</tt> or <tt>make xconfig</tt>. Then you have to
configure your kernel in the standard way. Use this opportunity to make
a small and powerful kernel, especially designed for your system. Be sure
to answer <tt/Enable loadable module support/ with <tt/Y/, if you want to
install the sound driver as a loadable module (a <em/must/ if you
have a PnP card), but I'm sure you want to do it anyway.
At one point, you will be asked if you want sound card support. You are free
to answer with <tt/Y/ or with <tt/M/ if you have <em/not/ a PnP card.
You <em/must/ answer with <tt/M/, for module, if you have a PnP card.
You have to compile sound card support as a module if you have a PnP
card because the PnP card has to be initialized before the module gets loaded.
The following questions you should answer with <tt/Y/, all other with
<tt/N/:
<code>
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/?]
</code>
Only the latter is actually for the Wave Table synthesis. The others are SB 16
options from the OSS/Free sound driver.
In addition, you have to configure the sound card I/O port. Look at the
<tt/isapnp.conf/ file for hints, if you have one. For me, the following default
values are sufficient. Note that the default value from the kernel
configuration script may be wrong (especially the values <tt/SBC_IRQ/ and
<tt/SB_MPU_BASE/ seem to be incorrect for most cards).
<code>
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]
</code>
Now recompile the kernel. Debian users should use the
<tt/kernel-package/. This package makes the kernel compile as easy as
installing a debian package. Look at the documentation in
<tt>/usr/doc/kernel-package/</tt>. Here is a hint:
<tscreen><verb>
# make-kpkg clean
# make-kpkg -revision custom.1.0 kernel_image
</verb></tscreen>
and then <tt>dpkg -i /usr/src/kernel-image-2.0.29_custom.1.0_i386.deb</tt>.
If you have another Linux distribution, follow the standard way for
compiling a new kernel. Don't forget <tt/make modules/ and <tt/make
modules_install/. Look at the Sound HOWTO and perhaps the Kernel HOWTO
for more information.
<sect1>Reboot<p>
After installing the new kernel, you should do a reboot (be sure to have a
functional boot disk at hand). Cross you fingers.
If you have a PnP card be sure to launch isapnp either in a boot script (as
described above) or manually:
<tscreen><verb>
# /sbin/isapnp /etc/isapnp.conf
Board 1 has Identity 74 00 00 e3 10 48 00 8c 0e: CTL0048 Serial No 58128
[checksum 74]
</verb></tscreen>
Now you can install the sound driver, if you have compiled it as a module:
<tscreen><verb>
# modprobe -a sound
AWE32 Sound Driver v0.3.3e (DRAM 2048k)
</verb></tscreen>
If you think the memory detection was not correct (I have a report of one
who has a AWE64 with 4096k, and ``detected'' have been 28672k), try either
to upgrade the <tt/awedrv/ software or to specify the amount of memory in the file
<tt>/usr/src/linux/drivers/sound/lowlevel/awe_config.h</tt>, for example:
<tscreen><verb>
#define AWE_DEFAULT_MEM_SIZE 4096 /* kbytes */
</verb></tscreen>
Sorry, you have to recompile the kernel then (perhaps compiling the modules
will be sufficient, but I don't know for sure).
If it works, you may want to have the sound module loaded automatically.
You can use <tt/kerneld/ (why this is a bad idea is explained in section 1.4) or
append a single line containing <tt/sound/ to your <tt>/etc/modules</tt> (in Debian)
or add <tt>/sbin/modprobe -a sound</tt> to your start-up script.
<sect>Testing the Sound Driver<p>
<sect1><tt>/proc/devices, /dev/sndstat</tt><p>
If you have built-in sound support, you will get some useful information at
boot time. If you have sound support installed as a loadable module, you can
get the same information (perhaps after removing the sound module with
<tt>modprobe -r sound</tt> first) with
<tscreen><verb>
# 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)
</verb></tscreen>
If you have a <tt>/proc</tt> virtual file system, you can look for the sound device
with
<tscreen><verb>
# cat /proc/devices
Character devices:
[...]
14 sound
[...]
</verb></tscreen>
Next make sure you have the correct devices installed under <tt>/dev/</tt>. Please
look at the Sound HOWTO for details. Then ask <tt>/dev/sndstat</tt> about the status of
the sound module:
<tscreen><verb>
# 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
</verb></tscreen>
If you don't have an output like this, perhaps there is an error in your
configuration. Go on and see what doesn't work, then go back to step <ref
id="isapnp" name="Getting Started">, checking everything.
<sect1> Output - The Raw Audio Device<p>
Try to get an <tt>.au</tt> file (Sun workstation) or a raw sample file, and do
<tscreen><verb>
# cat bell.au > /dev/audio
</verb></tscreen>
resp.
<tscreen><verb>
# cat sample > /dev/dsp
</verb></tscreen>
You should hear the content of the file via the <tt>Audio Device 0: Sound
Blaster 16 (4.3)</tt>.
<sect1>Output - The OPL-2/OPL-3 Synthesis
<p>
If you want to use the OPL-2/OPL-3 FM synthesis to play MIDI-Files with your
sound card, try the program <tt>playmidi</tt> (see Appendix B). Start it with
<tscreen><verb>
# playmidi -f dance.mid
</verb></tscreen>
<p>
or
<p>
<tscreen><verb>
# playmidi -4 dance.mid
</verb></tscreen>
The former will give you OPL-2, the latter OPL-3 MIDI music. If you are
embarrassed about the sound, don't blame playmidi: It is the FM synthesis
that sounds bad.
Imagine you would only have the OSS/Free Sound Driver: Than this is the
quality of MIDI Music you can achieve (apart from software synthesis).
Fortunately, you have a SB AWE, and you can use the Wave Table capabilities
with the AWE Sound Driver Extension.
<sect1>Output - The Wave Table Synthesis<p>
The AWE Driver Extension comes with special tools (<tt/awesfx/) to make use of the
EMU 8000 Wave Table synthesis. First, you have to load a Sound Font Bank on
your card - even if you want to use the ROM samples! You can get the files
from your Windows installation - look for files ending in <tt>*.sfb</tt> or
<tt>*.sf2</tt>.
The ROM samples can be loaded with <tt>SYNTHGM.SBK</tt>, real samples are in
<tt>SYNTHGS.SBK</tt> and <tt>SYNTHMT.SBK</tt>, as well as in
<tt>SAMPLE.SBK</tt>. You can get other
Sound Font Banks via ftp or www, try the EMU Homepage, the web site from
Creative Labs, and look out for the Chaos samples, they are really good (be
sure to check out the AWE Driver Web Site).
Try to load the standard GM (ROM) set with
<tscreen><verb>
# sfxload -i synthgm.sbk
</verb></tscreen>
and then play a midi file that comes with your SB AWE:
<tscreen><verb>
# drvmidi dance.mid
</verb></tscreen>
<sect1>Mixing<label id="mixing"><p>
Get your favorite mixer program and start it. Start a raw audio
sample and two MIDI files at the same time, and try out the mixer settings.
Play a bit, it should be very easy. Here a list of the devices and how they
are called:
<descrip>
<tag>Yamaha OPL-3</tag>Synth or FM
<tag>AWE32 Driver</tag>Synth or FM (does anyone know a mixer were the last
two are separated from each other?)
<tag>Sound Blaster 16 (4.13)</tag>PCM or DSP
<tag>PC Speaker (still alive)</tag>Spkr
</descrip>
Other mixer settings refer to the CD ROM, possibly connected to the
sound card, to Master Volume, Bass, Treble and Recording Level of the
different input lines. You can specify which lines should be recorded.
<sect1>Input - Sampling with the Raw Audio Device<p>
You can record different sources: a connected CD ROM, a microphone connected
to <tt>mic</tt>, and any that you can connect to <tt>line in</tt>. Set the
mixer in the appropriate position. Play a sound and record into a file,
reading from the Raw Audio Device, for example:
<tscreen><verb>
# cdplay
# dd bs=8k count=5 &etago;dev/dsp >music.au
5+0 records in
5+0 records out
# cat music.au >/dev/dsp
</verb></tscreen>
records and plays five seconds of audio from the input device.
<sect1>The MIDI Port<p>
Sorry, no information about MIDI port yet!
<sect>AWE Driver Software<p>
<sect1><tt>sfxload</tt><p>
You can load samples in your DRAM on the sound card with the <tt/sfxload/
tool. Note that you can only load one sample file per bank, with bank 0 as
default. So, after <tt>sfxload synthgs.sbk</tt>, the only samples on your
sound card are the GS samples. If you want to load additional Sound Font
Banks, you have to use the <tt/-b/ option, for example:
<tscreen><verb>
# sfxload synthgs.sbk
# sfxload -b1 sample.sbk
# drvmidi sfx.mid
</verb></tscreen>
You can load a default Sound Font Bank automatically with installing the
module. Just append a line like
<tscreen><verb>
post-install sound /usr/bin/sfxload synthgm.sbk
</verb></tscreen>
to your <tt>/etc/conf.modules</tt> file.
See the documentation for more details about <tt/sfxload/.
<sect1><tt>drvmidi</tt><p>
With the <tt/drvmidi/ program, you can use your AWE Driver to play MIDI
files. Just specify the name of your midi file after the command:
<tscreen><verb>
# drvmidi waltz.mid
</verb></tscreen>
See the documentation for more details about <tt/drvmidi/
<sect>Appendix<p>
<sect1>Additional Information<label id="moreinfo"><p>
<descrip>
<tag>The Linux Sound HOWTO</tag>
Author: Jeff Tranter, <tt>&lt;<htmlurl url="mailto:jeff&lowbar;tranter@pobox.com"
name="jeff&lowbar;tranter@pobox.com">&gt;</tt>
Last Version: v1.17, 4 August 1997
Please take a good look at the Sound HOWTO (available from sunsite.unc.edu
and other sites). It contains a bulk of data about compiling the kernel with
sound support, and explains a lot about the sound devices, applications etc.
I understand this HOWTO as an addition to the Sound HOWTO.
<tag>The Linux Sound Playing HOWTO</tag>
Author: Yoo C. Chung, <tt>&lt;<htmlurl url="mailto:wacko@laplace.snu.ac.kr"
name="wacko@laplace.snu.ac.kr">&gt;</tt>
Last Version: v1.4, 13 May 1997
You should also look at the Sound Playing HOWTO. It tells you about the
various sound formats and applications to play them.
<tag>The AWE Driver FAQ</tag>
Author: Takashi Iwai <tt>&lt;<htmlurl url="mailto:iwai@dragon.mm.t.u-tokyo.ac.jp"
name="iwai@dragon.mm.t.u-tokyo.ac.jp">&gt;</tt>
Source: <url url="http://bahamut.mm.t.u-tokyo.ac.jp/~iwai/awedrv/awedrv-faq.html">
If you have problems installing the AWE Driver or using the Wave Table synthesis
of your Sound Blaster card, then look here.
<tag>The ISA PnP FAQ</tag>
Author: Peter Fox <tt>&lt;<htmlurl url="mailto:fox@roestock.demon.co.uk"
name="fox@roestock.demon.co.uk">&gt;</tt>
Source: <url url="http://www.roestock.demon.co.uk/isapnptools/isapnpfaq.html">
If you have problems configuring your ISA PnP card, then this is your book
of wisdom.
</descrip>
<sect1>Sources<label id="sources"><p>
<descrip>
<tag><tt>isapnptools</tt></tag>
Author: Peter Fox <tt>&lt;<htmlurl url="mailto:fox@roestock.demon.co.uk"
name="fox@roestock.demon.co.uk">&gt;</tt>
Last Version: 1.11
Source: <url url="http://www.roestock.demon.co.uk/isapnptools/index.html">
If mailing patches, bug reports or comments, please put 'isapnp'
somewhere in the subject line, and mail to isapnp@roestock.demon.co.uk.
<tag><tt>awedrv</tt></tag>
Author: Takashi Iwai <tt>&lt;<htmlurl url="mailto:iwai@dragon.mm.t.u-tokyo.ac.jp"
name="iwai@dragon.mm.t.u-tokyo.ac.jp">&gt;</tt>
Last Version: 0.4.2c
Source: <url url="http://bahamut.mm.t.u-tokyo.ac.jp/~iwai/awedrv/">
<tag>Linux kernel</tag>
Author: Linus Torvald and many other
Last Version: At the moment, you should use 2.0.29
Source: everywhere, where you can obtain Linux <tt>:)</tt>
<tag>OSS/Free</tag>
Author: Hannu Savolainen (Please check <url url="http://www.4front-tech.com/usslite before mailing
me">).
Last Version: I have 3.5.5-beta1
Source: with the Linux kernel source package
Information: <url url="http://www.4front-tech.com/usslite"> or <url
url="http://personal.eunet.fi/pp/voxware" name="European mirror">.
</descrip>
<sect1>Sample <tt>isapnp.conf</tt><label id="isapnpconf"><p>
In the ISA PnP configuration file created by pnpdump, the single devices of
your PnP cards appear as sections. In the output below, one card was
detected (the sound card), with four logical devices:
<itemize>
<item><tt>LD 0</tt>: Audio Device
<item><tt>LD 1</tt>: IDE Device
<item><tt>LD 2</tt>: WaveTable Device
<item><tt>LD 3</tt>: Gameport Device
</itemize>
I left <tt>LD 1</tt> unconfigured, because I have no CD ROM attached to my sound card
IDE port. If you have no IDE port on your SB, then <tt>LD 1</tt> will be the Gameport
Device and <tt>LD 3</tt> will not appear.
Please refer to section <ref id="isapnp" name="Getting started"> for further
(important!) information about this file.
<code>
# $Id$
# 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)
</code>
</article>