@database ahiusr.guide
@Master ahiusr.texinfo
@Width 72

This is AmigaGuide(R) ahiusr.guide, produced by makeinfo version 4.6
from ahiusr.texinfo.

   This file documents AHI release 6.0, a hardware independent audio
subsystem for Amiga. The version number of this document is 5.9.2.8
(2005-09-22).

   Copyright (C) 1994-2005 Martin Blom.

   Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
preserved on all copies.

   Permission is granted to copy and distribute modified versions of
this manual under the conditions for verbatim copying, provided also
that the sections entitled "Distribution", "GPL" and "LGPL" are included
exactly as in the original, and provided that the entire resulting
derived work is distributed under the terms of a permission notice
identical to this one.

   Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
versions, except that this permission notice may be stated in a
translation approved by the Free Software Foundation.

   THIS PUBLICATION IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
IN ANY WAY OUT OF THE USE OF THIS PUBLICATION, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.


     $Id: ahiusr.texinfo,v 5.9.2.8 2005/09/22 20:09:18 martin Exp $
     $Log: ahiusr.texinfo,v $
     Revision 5.9.2.8  2005/09/22 20:09:18  martin
     Docs/ahiusr.texinfo: Added Gunther Nikl and Davy Wentzler to
     "Contributors". Removed all contributor e-mail addresses.
     
     Revision 5.9.2.7  2005/06/19 21:43:57  martin
     AHItoccataPlayBufferSize and AHItoccataRecordBufferSize.
     
     Revision 5.9.2.6  2005/02/02 21:49:52  martin
     * Updated all copyright years to 2005.
     
     * Bumped all version numbers to 6.0.
     
     * Docs/ahidev.texinfo (The Author): Updated the authors address (5
     years later).
     
     Revision 5.9.2.5  2005/01/08 22:38:09  martin
     Added note about the volume scaling.
     Removed list of names in Honourable mention.
     
     Revision 5.9.2.4  2004/11/02 13:18:53  martin
     Updated copyright year and removed almost all CVS/RCS tags from the
     source code.
     
     Revision 5.9.2.3  2004/10/23 12:19:39  martin
     Fixed some typos.
     
     Revision 5.9.2.2  2004/09/08 13:56:37  martin
     Added description of the default anti-click time
     
     Revision 5.9.2.1  2004/06/08 21:16:16  martin
     Added 7.1 multichannel support.
     
     Revision 5.9  2004/06/01 19:00:01  martin
     Makeinfo fix.
     
     Revision 5.8  2004/02/19 20:45:03  martin
     Added note about AddAudioModes and sound card/AC97 initializing.
     
     Revision 5.7  2003/07/20 17:04:14  martin
     Replaced Nicolas Sallin with Genesi and bbrv.
     
     Revision 5.6  2003/02/09 15:04:48  martin
     Added a link to CyberSound.lha for 14 bit Paula calibration.
     Clarified the relationshit between units and sound cards.
     
     Revision 5.5  2003/02/08 14:14:18  martin
     Wrote about the "Paula:DMA 8 bit stereo" mode.
     
     Revision 5.4  2003/01/23 23:23:23  martin
     Updated the list of supported sound cards.
     
     Revision 5.3  2003/01/23 23:15:45  martin
     Updated the Acknowledgments chapter. Added Donors and Honourable
     mention sections. Updated my address.
     
     Revision 5.2  2003/01/19 16:16:39  martin
     Added not about dynamic volume adjusting in V6.
     
     Revision 5.1  2003/01/19 12:22:41  martin
     Another year, another copyright update.
      ... which seems to have caused the translation files to change slightly.
     
     Revision 5.0  2000/11/28 00:16:20  lcs
     Bumped CVS revision to 5.0.
     
     Revision 4.23  1999/09/20 21:08:52  lcs
     Minor rearrengment of the Acknowledgements chapter.
     Added Frank Wille to Contributors.
     
     Revision 4.22  1999/09/19 14:05:28  lcs
     Changed the license text.
     Some polishing.
     
     Revision 4.21  1999/03/28 22:32:49  lcs
     AHI is now GPL/LGPL software.
     Make target bindist work correctly when using a separate build directory.
     Small first steps towards a WarpOS PPC version.
     
     Revision 4.20  1999/01/10 19:27:48  lcs
     The move to GNU make is done.
     
     Revision 4.19  1999/01/10 16:07:58  lcs
     Moved to GNU make (still moving...)
     
     Revision 4.18  1998/12/06 11:51:25  lcs
     Removed the stuff about paula not being exactly like the filesave driver
     (it is, now).
     
     Revision 4.17  1998/10/25 15:38:30  lcs
     Added note about that paula.audio cannot behave exactly like filesave.audio.
     
     Revision 4.16  1998/10/25 13:31:50  lcs
     Added info about the paula.audio AHIpaulaFakeMixFreq variable.
     
     Revision 4.15  1998/03/11 09:28:51  lcs
     Added info about how to make the Amiga video 31 kHz.
     
     Revision 4.14  1998/01/18 19:50:42  lcs
     Updated the acknowledges. Probably more.
     
     Revision 4.13  1997/12/17 19:53:17  lcs
     Added the translators of of Hrvatski and Magyar to the hall of fame...
     
     Revision 4.12  1997/11/02 02:01:48  lcs
     Added Concierto (again!).
     
     Revision 4.11  1997/10/21 01:33:40  lcs
     The version number is now the AHI release version, not the documents version.
     
     Revision 4.10  1997/09/30 13:11:09  lcs
     Added reasons why "Fast" or "Hifi" modes should be used.
     
     Revision 4.9  1997/09/28 04:31:56  lcs
     Added notes about Maestor Pro and Melody MPEG. Added Thorsten Hansen
     to the contributors section. And some other minor things.
     
     Revision 4.8  1997/09/18 00:51:00  lcs
     Added Maestro Pro stuff.
     
     Revision 4.7  1997/08/10 15:38:57  lcs
     Minor changes. added \@ahi macro!
     
     Revision 4.6  1997/08/03 22:48:26  lcs
     Added Concierto to list of supported sound cards.
     Added Christian Buchner to the Acknowledgments section.
     Changed Teemu Suikki's email address.
     
     Revision 4.5  1997/07/27 19:04:10  lcs
     Added description of the AHIpaulaSwapChannels env. variable.
     
     Revision 4.4  1997/07/15 00:50:40  lcs
     This is the second bugfix release of AHI 4.
     
     Revision 4.3  1997/05/04 15:52:58  lcs
     Initial revision.


@node Main "ahiusr.guide"
@next "Overview"

AHI User's Guide
****************

For AHI release 6.0. Document version 5.9.2.8 (2005-09-22).

   Copyright (C) 1994-2005 Martin Blom

   The latest release of AHI can always be found at
<http://www.lysator.liu.se/~lcs/ahi.html>.


 @{" Overview                   " link "Overview"}  Brief introduction
 @{" Distribution               " link "Distribution"}  What you are allowed to do and not

 @{" System description         " link "System description"}  The components of AHI

 @{" The Author                 " link "The Author"}  Who designed it?
 @{" Acknowledgments            " link "Acknowledgments"}  Thanks, guys!

 @{" GPL                        " link "GPL"}  The main license
 @{" LGPL                       " link "LGPL"}  The @{b}ahi.device@{ub} license

 @{" Concept Index              " link "Concept Index"}  Concept Index

@endnode

@node "Overview" "ahiusr.guide/Overview"
@next "Distribution"
@prev "Main"
@toc "Main"

Overview
********

The @{i}Amiga@{ui} has always had excellent sound capabilities.  In 1986, they
were awesome.  Today, well.... Perhaps not awesome, but still very
good.  The OS interface, @{b}audio.device@{ub} has however never been as good as
it could have been.  It is tied hard to the underlying hardware, and
doesn't work very well for music.  This has led to a situation where
most audio programs only use @{b}audio.device@{ub} to allocate the audio
resource, and then poke around in the hardware registers--making it
next to impossible to replace the @{i}Paula@{ui} chip (1).

   There have been attempts to write an @{b}audio.device@{ub} clone that uses a
sound card instead of Paula, but so far nobody has succeeded.  It is
definitely possible, but the question is if it is worth the trouble--too
many of the programs bang the hardware.

   Entering AHI (2).  AHI is a new audio subsystem, designed to be
flexible, hardware independent, expandable and future safe.  It is
designed with real-time applications in mind.  It is designed to play
@{i}modules@{ui} (3) and sound effects as efficient as possible, taking
advantage of modern DSP-based sound cards.

   Yet AHI allows applications that don't need full control over the
audio hardware to share the resource, so that many different programs
can play and record sound at the same time, without conflicts.

   As a user you will hopefully not see much of AHI, other than the
audio mode requesters.  They works almost exactly like screen mode
requesters.

   AHI was never supposed to be @{i}the@{ui} standard for hardware independent
audio.  It was meant as a temporary solution until @{i}Amiga Technologies@{ui}
delivered an official standard.  However, the situation looks worse and
worse for every day that passes by, and this may be all you will ever
get.

   ---------- Footnotes ----------

   (1) Paula is one of the custom chips, and she is responsible for the
sound (and more).  Unfortunately, this chip has not been updated since
the very first Amiga was released.

   (2) The name AHI was chosen because the functions in the system had
to have a prefix, and the author couldn't come up with anything better
than @{i}Audio Hardware Interface@{ui}, something that he has regretted ever
since.  The suggested pronunciation is "atchii", as in "God bless!".

   (3) Originally designed in 1986 by Karsten Obarski, modules have
become a de facto standard for game and demo music.  The original format
has been improved many times, and many new music formats have--more or
less--been derived from it, including the popular @{i}S3M@{ui} and @{i}XM@{ui} formats.

@endnode

@node "Distribution" "ahiusr.guide/Distribution"
@next "System description"
@prev "Overview"
@toc "Main"

Distribution
************

Copyright (C) 1994-2005 Martin Blom

   AHI is available under a dual license. The device itself is under
the "GNU Library General Public License" (see @{"LGPL" link "LGPL"}), while the utility
programs and the @{b}AUDIO:@{ub} device is covered by the "GNU General Public
License" (see @{"GPL" link "GPL"}).

   If you use this software in a commercial or shareware product, please
consider giving the author (see @{"The Author" link "The Author"})--and preferably each one
of the contributors too (see `AHI User's Guide')--an original or
registered copy or sample of your work.  Should you want to distribute
the AHI software with your own product, there is really nothing to
consider, right?

@endnode

@node "System description" "ahiusr.guide/System description"
@next "The Author"
@prev "Distribution"
@toc "Main"

System description
******************


 @{" AddAudioModes              " link "AddAudioModes"}  Database maintenance and more
 @{" AHI                        " link "AHI"}  Preferences program
 @{" AHI-Handler                " link "AHI-Handler"}  DOS-device

 @{" System Files               " link "System Files"}  The files in @{b}DEVS:@{ub}

@endnode

@node "AddAudioModes" "ahiusr.guide/AddAudioModes"
@next "AHI"
@prev "System description"
@toc "System description"

AddAudioModes
=============

Format
     [FILES <file|pattern>] [QUIET] [REFRESH] [REMOVE] [DBLSCAN]

Template
     FILES/M,QUIET/S,REFRESH/S,REMOVE/S,DBLSCAN/S

Purpose
     To build and remove a list of audio modes that AHI can understand.

Path
     C:ADDAUDIOMODES

Specification
     @{b}AddAudioModes@{ub} is used to build and remove a list of audio modes
     that AHI can understand.  The definitions of the audio modes are
     stored in @{b}DEVS:Audiomodes@{ub} (see @{"The Mode Descriptors" link "The Mode Descriptors"}).  Normally
     you don't have to run this program, since @{b}ahi.device@{ub} automatically
     reads all mode descriptors when it is used for the first time.  It
     can, however, be useful in installation scripts.

     In addition to rebuilding the audio mode database, it has the side
     effect that the audio drivers are loaded into memory. This causes
     the audio hardware to be initialized and, perhaps, AC97 mixers to
     be set up to the default, which is good if, for example, your CD
     is connected to your soundcard.

     The @{b}FILES@{ub} option specifies with descriptor(s) to be added to the
     current mode list.

     The @{b}QUIET@{ub} option, if specified, will suppress error and output
     messages.

     The @{b}REFRESH@{ub} option, if specified, will scan @{b}DEVS:Audiomodes@{ub} and
     add all descriptors found there to the current mode list.

     The @{b}REMOVE@{ub} option, if specified, will flush the current audio mode
     list from memory.

     The @{b}DBLSCAN@{ub} option does not have anything to do with the audio mode
     list.  If specified, it will open and then immediately close a
     native, double-scan screen.  On some systems using a graphic card,
     this will enable >28 kHz sample frequencies with the native audio.
     You need an appropriate monitor driver in @{b}DEVS:Monitors@{ub} to make
     it work.


@endnode

@node "AHI" "ahiusr.guide/AHI"
@next "AHI-Handler"
@prev "AddAudioModes"
@toc "System description"

AHI
===

Format
     [FROM <filename>] [EDIT] [USE] [SAVE] [PUBSCREEN <public screen
     name>

Template
     FROM,EDIT/S,USE/S,SAVE/S,PUBSCREEN/K

Purpose
     To specify default audio options

Path
     SYS:Prefs/AHI

Specification
     @{b}AHI@{ub} without any arguments or with the @{b}EDIT@{ub} argument opens the AHI
     preferences editor.  The @{b}FROM@{ub} argument lets you specify a file to
     open.  This must be a file that was previously saved with the @{b}Save
     As...@{ub} menu item of the AHI preferences editor.  For example, if
     you have saved a special configuration of the AHI preferences
     editor to a file in the @{b}Presets@{ub} drawer, you can use the @{b}FROM@{ub}
     argument to open that file.  If the @{b}USE@{ub} switch is also given, the
     editor will not be opened, but the settings in the @{b}FROM@{ub} file will
     be used.  If the @{b}SAVE@{ub} switch is given, the editor will not open,
     but the settings in the @{b}FROM@{ub} file will be saved.  The @{b}PUBSCREEN@{ub}
     option allows you to specify a public screen on which the program
     will open its window.

     Example:

          AHI Prefs/Presets/AHI.Delfina USE

     loads and uses the specifications saved in the @{b}AHI.Delfina@{ub} file.
     If the system is rebooted, the last saved specifications will be
     loaded.


   Note that the preferences program requires either @{b}bgui.library@{ub}
version 41 (1) or @{i}MUI@{ui} version 3.8 (2)


 @{" Menus                      " link "Menus"}  
 @{" Pages                      " link "Pages"}

   ---------- Footnotes ----------

   (1) @{i}BGUI@{ui} is Copyright © 1996-1997 Ian J.  Einman

   (2) @{i}MUI@{ui} is Copyright © 1992-1997 Stefan Stuntz

@endnode

@node "Menus" "ahiusr.guide/Menus"
@next "Pages"
@prev "AHI"
@toc "AHI"

Menus
-----


 @{" Project Menu               " link "Project Menu"}  
 @{" Edit Menu                  " link "Edit Menu"}  
 @{" Settings Menu              " link "Settings Menu"}  
 @{" Help Menu                  " link "Help Menu"}

@endnode

@node "Project Menu" "ahiusr.guide/Project Menu"
@next "Edit Menu"
@prev "Menus"
@toc "Menus"

@{b}Project@{ub} Menu
............

The @{b}Project@{ub} menu options let you save the editor settings to a specific
file and open previously saved files.

@{b}Open...@{ub}
     Loads the information from a specified preset file.

@{b}Save As...@{ub}
     Specify the preset file in which to save the currently displayed
     settings.  The requester provides a default file name in the
     @{b}Presets@{ub} drawer.  If you want to change it, type in the full path
     to a different file and select @{b}OK@{ub}.

@{b}About...@{ub}
     Shows the credits.

@{b}Quit@{ub}
     Exits the editor without performing any changes (the same as the
     @{b}Cancel@{ub} gadget).


@endnode

@node "Edit Menu" "ahiusr.guide/Edit Menu"
@next "Settings Menu"
@prev "Project Menu"
@toc "Menus"

@{b}Edit@{ub} Menu
.........

The @{b}Edit@{ub} menu options allow you to restore previously used settings or
the default settings.  The options are:

@{b}Reset to Default@{ub}
     Returns the editor settings to the default settings.

@{b}Last Saved@{ub}
     Returns the editor settings to the last settings you saved.

@{b}Restore@{ub}
     Returns the editor to the settings displayed when the editor first
     opened.


@endnode

@node "Settings Menu" "ahiusr.guide/Settings Menu"
@next "Help Menu"
@prev "Edit Menu"
@toc "Menus"

@{b}Settings@{ub} Menu
.............

The @{b}Settings@{ub} menu contains the @{b}Create Icons?@{ub} item that allows you to
save project icons representing your editor settings in the same drawer
as your files.  For example, if you save the specifications to the
@{b}SYS:Prefs/Presets/AHI.pre@{ub} file, the icon for the file appears in the
@{b}Presets@{ub} window.  Double-click on the icon to activate the file's
settings.

@endnode

@node "Help Menu" "ahiusr.guide/Help Menu"
@prev "Settings Menu"
@toc "Menus"

@{b}Help@{ub} Menu
.........

The @{b}Help@{ub} menu's items let you view the on-line "AHI User's Guide" using
AmigaGuide.

@{b}Help...@{ub}
     Brings up the chapter about the preferences program (this chapter).

@{b}AHI User's Guide...@{ub}
     Brings up the first page of "AHI User's Guide".

@{b}Concept Index...@{ub}
     Brings up the index of "AHI User's Guide".


@endnode

@node "Pages" "ahiusr.guide/Pages"
@prev "Menus"
@toc "AHI"

Pages
-----

The preferences program's GUI is divided in two pages:


 @{" Mode settings              " link "Mode settings"}  
 @{" Advanced settings          " link "Advanced settings"}

@endnode

@node "Mode settings" "ahiusr.guide/Mode settings"
@next "Advanced settings"
@prev "Pages"
@toc "Pages"

@{b}Mode settings@{ub} Page
..................

On this page you select which audio mode to use.  You can select audio
mode for both low-level programs (@{b}Music unit@{ub}) and other programs (@{b}Unit
n@{ub}) that don't require low-level audio access such as the @{b}AUDIO:@{ub} device
(see @{"AHI-Handler" link "AHI-Handler"}), sample players etc.  You can also select the sample
mixing (and recording) frequency to use and how many channels you wish
use (1).  Furthermore, you can set three hardware properties of your
sound hardware, namely the @{i}output volume@{ui}, @{i}monitor volume@{ui} and @{i}input
gain@{ui}.  Finally, you can select which input and output connectors you
wish to use.

   Normally, you configure one unit per sound card. Since most people
only have one sound card, all units but unit 0 are often unused.

   The @{b}Music unit@{ub} is the defaults for low-level programs.  Such
programs often have an audio mode requester that lets you chose an audio
mode.  If you chose @{b}Default audio mode@{ub} from this requester, these
settings will be used.  Note that the number of channels is not
selectable here, it's up to the application program to decide how many
channels to use.

   ---------- Footnotes ----------

   (1) The more channels you select, the more sounds can you play at
the same time.  However, due to the nature of sound mixing in version
4, the volume will decrease as well.  This limitation is not present in
version 6, where the volume will be adjusted dynamically. If you try to
play more sounds at the same time than there are channels, the least
important sounds will be muted until the other sounds have finished
playing.

@endnode

@node "Advanced settings" "ahiusr.guide/Advanced settings"
@prev "Mode settings"
@toc "Pages"

@{b}Advanced settings@{ub} Page
......................

This page contains some options that should not be used if you don't
understand them.

@{b}Debug level@{ub}
     Sets the debug level for AHI.  If not @{b}None@{ub}, AHI will print debug
     information to the serial port.

@{b}Echo@{ub}
     On slow processors (like anything below a MC68040) echo can take
     so much CPU power that it becomes unusable, and can therefore be
     disabled.  As an alternative, echo can be done @{b}Fast@{ub}, which means
     that the parameters will be twisted in order to gain speed.  The
     result may not be what the composer or programmer wanted, but at
     least it's echo.

@{b}Surround in "Fast" modes@{ub}
     In modes that use multiplication tables (the so-called "fast"
     modes) all surround sounds have to be mixing without using tables.
     In order to make mixing as fast as possible, surround sounds can
     be forced to ordinary ones by disabling them.

@{b}Master volume@{ub}
     Normally, the "Master volume" feature of AHI can make the output
     heavily distorted if set too high.  Turning "clipping" on can
     reduce the distortion, but will--in the current
     implementation--use 128 kB of extra memory.  Note that the
     so-called "HiFi" modes are not affected by this switch (see
     @{"The Mode Descriptors" link "The Mode Descriptors"}).

@{b}CPU usage limit@{ub}
     Some hardware drivers (but not all) can be told not to use more
     that a given percentage of the available CPU time in order to
     prevent lockups.  If your mouse pointer freezes when playing
     music, reduce the limit slightly.  If on the other hand the sound
     becomes cut and distorted, you can try to increase the limit--but
     remember that you risk locking up the computer!

@{b}Default anti-click time@{ub}
     Starting with AHI V6, the software mixer can delay the sounds an
     application wants to play until the currently playing sound goes
     through a zero-crossing, in order to avoid nasty clicks. Normally,
     it's the applications job to specify the maximum time the sounds
     may be delayed, but not all applications provide this information.
     By setting this slider to the desired value, all applications not
     specifying their own limit will will default to this value instead.

@{b}Volume scaling@{ub}
     When more than one application is using AHI at the same time, care
     has to be taken so no audible distortion is created. In AHI V4 and
     before, this implied that the volume was lowered in such a way
     that there were never any distortion. Since "clipping" (see above)
     was optional, this was the only sensible thing to do. In AHI V6,
     clipping is always used and the distortion created is often not
     audible. Because of this, all sounds are now played at full volume.

     However, should you wish so, it's possible to manually select that
     strategy to use. The available options are @{b}Safe@{ub} (as in AHI V4),
     @{b}Safe, Dynamic@{ub} (volume is dynamically adjusted based on how many
     sounds are curreltly being played), @{b}Full volume@{ub} (the new default)
     and finally @{b}-3 dB@{ub} and @{b}-6 dB@{ub}, which plays all sounds at -3 or -6 dB.


@endnode

@node "AHI-Handler" "ahiusr.guide/AHI-Handler"
@next "System Files"
@prev "AHI"
@toc "System description"

AHI-Handler
===========

The @{b}AHI-Handler@{ub} is an I/O mechanism that is used to play and record
sounds.  The @{b}AHI-Handler@{ub} is normally mounted as @{b}AUDIO:@{ub} at startup time,
or later by double-clicking on its icon or by giving the following
command in a Shell window:  @{b}mount AUDIO:  <RET>@{ub}.

   The DOSDriver entry is:

     Handler         = L:AHI-Handler
     Stacksize       = 4096
     Priority        = 5
     GlobVec         = -1

   When the device is mounted, you can read from the device to record
and write to it to play.  Options can be given like this:

     "AUDIO:PRIORITY=1 VOLUME=50"

   All slashes (@{b}/@{ub}) in the name will be translated to spaces.  Thus, if
you use slashes instead of spaces, you don't have to use quotes around
the name:

     AUDIO:PRIORITY/1/VOLUME/50

   The full template for reading is:

     B=BITS/K/N,C=CHANNELS/K/N,F=FREQUENCY/K/N,T=TYPE/K,L=LENGTH/K/N,
     S=SECONDS/K/N,BUF=BUFFER/K/N,UNIT/K/N

   The full template for writing is:

     B=BITS/K/N,C=CHANNELS/K/N,F=FREQUENCY/K/N,T=TYPE/K,V=VOLUME/K/N,
     P=POSITION/K/N,PRI=PRIORITY/K/N,L=LENGTH/K/N,S=SECONDS/K/N,
     BUF=BUFFER/K/N,UNIT/K/N

   @{b}BITS@{ub} can be one of 8, 16 or 32.  @{b}CHANNELS@{ub} can be either 1 for mono
or 2 for stereo.  The @{b}FREQUENCY@{ub} is in Hertz, @{b}TYPE@{ub} is one of @{b}SIGNED@{ub},
@{b}AIFF@{ub} or @{b}AIFC@{ub}.  @{b}VOLUME@{ub} ranges from 0 (silence) to 100 (full volume), and
@{b}POSITION@{ub} ranges from -100 (far left) via 0 (center) to 100 (far right).
The @{b}PRIORITY@{ub} can be from -128 to 127 (unstoppable).  @{b}LENGTH@{ub} is how
many bytes you wish to read or write, and @{b}SECONDS@{ub} is the same, but in
seconds instead of bytes.  The @{b}BUFFER@{ub} size is specified in bytes.  Note
that two buffers are always used, which means that the memory usage
will be two times BUFFER.  @{b}UNIT@{ub} selects which @{b}ahi.device@{ub} unit to use.

   The default options for reading are @{b}BITS=8@{ub} @{b}CHANNELS=1@{ub} @{b}FREQUENCY=8000@{ub}
@{b}TYPE=SIGNED@{ub} @{b}LENGTH=very-very-much@{ub} @{b}BUFFER=32768@{ub} @{b}UNIT=0@{ub}.

   The default options for writing are @{b}BITS=8@{ub} @{b}CHANNELS=1@{ub} @{b}FREQUENCY=8000@{ub}
@{b}TYPE=<none>@{ub} @{b}VOLUME=100@{ub} @{b}POSITION=0@{ub} @{b}PRIORITY=0@{ub} @{b}LENGTH=very-very-much@{ub}
@{b}BUFFER=32768 UNIT=0@{ub}.

   If @{b}TYPE@{ub} is not specified, the default behaviour is to identify the
data stream as @{i}IFF-AIFF@{ui} or @{i}IFF-AIFC@{ui}.  If so, the default values of
@{b}BITS@{ub}, @{b}CHANNELS@{ub}, @{b}FREQUENCY@{ub} and @{b}LENGTH@{ub} will taken from the file.  You can
still override them if you wish.  If the stream could not be
identified, the data format is assumed to be @{b}SIGNED@{ub}.

   Both when reading and writing the sample rate will be converted on
the fly to what the underlying hardware is configured to.  Normally
this is not a big problem when writing, but the quality when reading
leaves quite a lot to wish for, since no low-pass filters are used.

   Example 1:

     copy Louise.AIFF AUDIO:

   plays the file @{b}Louise.AIFF@{ub}.

   Example 2:

     copy AUDIO:SECONDS/10/TYPE/AIFC/B/16/F/44100/C/2 sample.AIFC

   records 10 seconds of audio and stores it in the file @{b}sample.AIFC@{ub} as
uncompressed @{i}IFF-AIFC@{ui}, 16 bit stereo at 44.1 kHz.

@endnode

@node "System Files" "ahiusr.guide/System Files"
@prev "AHI-Handler"
@toc "System description"

System Files
============

AHI uses a set of hardware drivers for each sound card.  This means
that it's easy to add support for new sound cards as they appear.  At
the time of writing, the following sound cards are supported:

   * AmigaXL

   * Aura (sampling only)

   * Clarity (sampling only)

   * Concierto

   * Delfina

   * DraCo Motion

   * ESS Solo-1

   * ForteMedia FM801

   * Maestro Pro

   * Melody

   * Paula (the built-in audio)

   * Prelude

   * Repulse

   * SoundBlaster 128

   * SoundBlaster Live!

   * Sunrize

   * Terratec 128i PCI

   * Terratec 512i digital

   * Toccata

   * VIA AC97

   * Wavetools


 @{" The Drivers                " link "The Drivers"}  
 @{" The Mode Descriptors       " link "The Mode Descriptors"}

@endnode

@node "The Drivers" "ahiusr.guide/The Drivers"
@next "The Mode Descriptors"
@prev "System Files"
@toc "System Files"

The Drivers
-----------

The hardware drivers themself are located in the @{b}DEVS:AHI@{ub} drawer, and
are named as @{b}<name>.audio@{ub}.  They are actually libraries, in spite of
being located under the @{b}DEVS:@{ub} assign, and will be flushed out from
memory when not in use and the system needs more RAM.  Many of the
drivers require additional files; see below.  These extra files are not
delivered with AHI.

@{b}concierto.audio@{ub}
     Requires @{b}concierto.library@{ub}.

@{b}delfina.audio@{ub}
     Requires @{b}delfina.library@{ub} version 4 or greater (1).

@{b}maestropro.audio@{ub}
     Requires @{b}maestix.library@{ub} version 40.10 or greater (2).  For more
     information about this driver as well as the most recent version of
     @{b}maestix.library@{ub}, please visit the author's WWW page (3).

@{b}melody.audio@{ub}
     Requires @{b}melodympeg.device@{ub} version 1.40 or greater (4).

@{b}paula.audio@{ub}
     On startup, the file @{b}ENV:CyberSound/SoundDrivers/14Bit_Calibration@{ub}
     is read and used for the 14 bit DAC calibration. This file can be
     created by using Christian Buchner's CyberSound calibration tool,
     which is available from
     <http://www.lysator.liu.se/~lcs/files/ahi/extras/CyberSound.lha>,
     among other places.

     The 14 bit modes cannot be used for recording, but the 8 bit modes
     supports both generic parallel port samplers as well as both the
     Aura and Clarity samplers.

     The so-called @{b}Paula:DMA 8 bit stereo@{ub} mode uses Paula's built-in
     DMA engine to play the sounds; no software mixing at all is
     performed. Because of this, only four channels are available and no
     stereo panning is available (just like all other plain "stereo"
     modes). In addition, the only mixing frequency available is Paula's
     master clock.

     The environment variable @{b}AHIpaulaFilterFreq@{ub} is checked every time
     playback starts, and should be set to a frequency in Hertz.  If
     the mixing frequency is higher than this value, the internal
     low-pass filter will be turned off.  If it is lower, the filter
     will be activated.  The default is 0 Hz, which means that the
     filter will always be turned off.  Example:

          SetEnv AHIpaulaFilterFreq 16000
          Copy ENV:AHIpaulaFilterFreq ENVARC:

     The variable @{b}AHIpaulaSampleLimit@{ub} is also checked.  This variable
     controls how the driver should handle mixing frequencies greater
     than 28 kHz, which is the limit of the hardware when using 15 kHz
     screen modes (PAL, NTSC, Euro36).  If the current screen mode is a
     VGA (31 kHz) mode, the driver allows frequencies up to 48 kHz.
     Normally, the driver checks the current screen mode, and decides
     if the higher mixing frequencies should be available or not.  By
     setting this variable, you can control that decision.  If set to
     @{b}0@{ub}, the frequency will always be limited to 28 kHz and if set to @{b}1@{ub},
     there will never be any limit.  Example:

          SetEnv AHIpaulaSampleLimit 1
          Copy ENV:AHIpaulaSampleLimit ENVARC:

     This will disable any screen mode checking, and will always allow
     up to 48 kHz in the mode requesters.

          Delete ENV:AHIpaulaSampleLimit
          Delete ENVARC:AHIpaulaSampleLimit

     This will turn on the screen mode checking again.

     Please note that this 31 kHz screen mode is not necessary the
     screen mode you're seeing on your monitor.  If you're using a
     graphic card, you must force the Amiga video signal to 31 kHz.
     CyberGraphX users might want to try this command (see
     @{"AddAudioModes" link "AddAudioModes"} for more information):

          AddAudioModes DBLSCAN

     Picasso 96 users just need to set the @{b}Picasso96/AmigaVideo@{ub} variable
     to @{b}31kHz@{ub}:

          SetEnv Picasso96/AmigaVideo 31kHz

     Because of incorrect hardware documentation, there is great
     confusion about which hardware channels are sent to the left
     speaker, and which are sent to the right.  @{b}paula.audio@{ub} uses the
     correct order (right, left, left, right) but many other programs
     don't.  The @{b}AHIpaulaSwapChannels@{ub} variable was added to let the
     user decide if the correct or incorrect behaviour should be used.
     In not present or set to @{b}0@{ub}, the correct behaviour is used.  If set
     to @{b}1@{ub}, the left and right channels will be swapped.

     By setting the @{b}AHIpaulaFakeMixFreq@{ub} variable to @{b}1@{ub}, you can make
     @{b}paula.audio@{ub} not report the actual mixing frequency used, but rather
     exactly the frequency that the program asked for. The default, @{b}0@{ub},
     will report the nearest possible mixing frequency that the Paula
     sound chip can use.

     Why would anyone want this, you may ask. Well, by setting the
     variable to @{b}1@{ub}, you will make @{b}paula.audio@{ub} behave exactly like
     @{b}filesave.audio@{ub}, which can be important if you are making music that
     you will later render and put on a CD, for example. Be warned,
     however, that setting this variable to @{b}1@{ub} can make the sound
     produced sound a little false (but not when rendered, of course)!

     Finally, the variable @{b}AHIpaulaBufferLength@{ub} controls the minimum
     playback buffer size to use.  Because of the limited @{i}Chip RAM@{ui}
     bandwidth, a @{i}MC68060@{ui} CPU might run into trouble when using the
     default minimum buffer size (0).  By setting this variable to @{b}1024@{ub},
     for example, you will reduce the number of interrupts caused and
     increase the number of samples transferred each time to at least
     1024 samples.  But take care!  Setting this variable too high will
     cause long periods with multitasking disabled.

@{b}toccata.audio@{ub}
     Requires @{b}toccata.library@{ub} version 12 or greater (5).  This driver
     also reads the environment variables @{b}AHItoccataNoTask@{ub} and
     @{b}AHItoccataIrqSize@{ub}.  If @{b}AHItoccataNoTask@{ub} is set to @{b}1@{ub}, all mixing
     will be done in a @{i}Software Interrupt@{ui} which means the sound output
     will not suffer when multitasking is turned off.  The back side is
     that it requires a faster CPU.  Much faster.  Only use this option
     as a last resort.  Example:

          SetEnv AHItoccataNoTask 1
          Copy ENV:AHItoccataNoTask ENVARC:

     @{b}AHItoccataIrqSize@{ub} specifies the number of bytes transferred to the
     card each interrupt and defaults to @{b}512@{ub}.  It must be one of @{b}32@{ub},
     @{b}64@{ub}, @{b}128@{ub}, @{b}256@{ub} or @{b}512@{ub}.  If you encounter problems with serial port
     hardware, you might want to set this variable to a lower value
     than the default.

     @{b}AHItoccataPlayBufferSize@{ub} specifies the number of bytes transferred
     to the card when playing and defaults to @{b}512@{ub}.  It must between 512
     and 16384 and also a multiple of 512.  If you encounter problems
     with serial port hardware, you might want to set this variable to
     a higher value than the default.

     @{b}AHItoccataRecordBufferSize@{ub} specifies the number of bytes
     transferred from the card when recording and defaults to @{b}16384@{ub}.
     It must between 512 and 16384 and also a multiple of 512.  If you
     think the latency when recording is too high, you might want to
     set this variable to a lower value than the default.

     Please note that this driver is used for both the DraCo Motion and
     the Toccata.

@{b}wavetools.audio@{ub}
     Requires @{b}dad_audio.device@{ub}.


   ---------- Footnotes ----------

   (1) The latest version of the Delfina software can be found at
Petsoff Limited Partnership's WWW page:  <http://www.sci.fi/~petsoff>.

   (2) @{b}maestix.library@{ub} is available from AmiNet, for example
<ftp://ftp.germany.aminet.org/pub/aminet/util/libs/Maestix.lha>.

   (3) Richard Körber's WWW page:
<http://www.is-koeln.de/einwohner/shred>.

   (4) @{b}melodympeg.device@{ub} and the latest version of this driver can be
found at the Kato Development Group's WWW page:
<http://home.pages.de/~kato>.

   (5) @{b}toccata.library@{ub} is available from AmiNet, for example
<ftp://ftp.germany.aminet.org/pub/aminet/util/libs/toclib12.lha>.

@endnode

@node "The Mode Descriptors" "ahiusr.guide/The Mode Descriptors"
@prev "The Drivers"
@toc "System Files"

The Mode Descriptors
--------------------

The files in @{b}DEVS:AudioModes@{ub} describes the available audio modes that
you can chose from in the audio mode requester.  All files located in
this drawer will be scanned the first time AHI is used, and added to
the internal mode database.

   The following modes are available for most drivers:

@{b}Mono@{ub}
     Mono output, all sounds will be centered, and no surround sound is
     possible.

@{b}Stereo@{ub}
     Stereo output, but all sounds are either forces to the extreme
     left or extreme right--centered sounds are not possible, for
     example.  This mode will probably use slightly more CPU power than
     the "mono" mode.  Since all sounds are forced to one of the
     extreme positions, stereo sounds will play with either the left or
     the right part muted.

@{b}Stereo++@{ub}
     Stereo output with free positioning of all sounds--an instrument
     can be placed anywhere between the two speakers, for example.
     Unless the program only uses the extremes when positioning a
     sound, this mode will eat more CPU cycles than the "stereo" mode.

@{b}Fast mono@{ub}
@{b}Fast stereo@{ub}
@{b}Fast stereo++@{ub}
     "Fast" modes take some shortcuts in order to reduce the CPU usage.
     For 8 bit samples, multiplication tables will be used, which
     speeds up mixing by magnitudes and still gives the same quality
     with the exception of volume levels--instead of 256 levels only 32
     are available.  The disadvantage of multiplication tables is that
     they require a fair amount of free RAM.  For 16 bit samples, the
     shortcuts are a bit more crude:  the volume of each sound will be
     rounded to a power of 2 before it's played.  This means that a 16
     bit sound will only be played at volume levels of 100%, 50%, 25%,
     12.5% etc.  If surround sounds are played, the normal (not "fast")
     mixing routines will be used.  You can use the preferences program
     (see @{"Advanced settings" link "Advanced settings"}) to disable surround sounds for "fast"
     modes.

     "Fast" modes are useful if you wish to use as little CPU power as
     possible, but don't mind spending some memory to reach that goal.
     They are also very useful when playing 16 bit audio streams--from
     a sample or MPEG player, for example--since that usually doesn't
     involve volume scaling and frequency recalculation. However, if
     used for playing streams, make sure the mixing frequency is the
     same as the stream frequency!

@{b}HiFi mono@{ub}
@{b}HiFi stereo@{ub}
@{b}HiFi stereo++@{ub}
     "HiFi" modes use much better mixing algorithms than the other
     modes, using 32 bits internally and linear interpolation.  They
     are also @{i}much@{ui} slower than the other modes.  "HiFi" modes turn on
     master volume with clipping automatically (see @{"Advanced settings" link "Advanced settings"}).

     "HiFi" modes are useful when you're playing music--@{i}MIDI@{ui} songs or
     @{i}modules@{ui}, for example--and want the best possible quality AHI has
     to offer.

@{b}HiFi 7.1@{ub}
     "HiFi 7.1" modes can be used by movie players or audio editors.


@endnode

@node "The Author" "ahiusr.guide/The Author"
@next "Acknowledgments"
@prev "System description"
@toc "Main"

The Author
**********

The author can be reached at the following addresses:

Electronic mail
     <martin\@blom.org>

Standard mail
     Martin Blom
     Luftvärnsgatan 42
     SE-587 34 Linköping
     Sweden

World-Wide Web
     <http://martin.blom.org>



 @{" The Man                    " link "The Man"}  
 @{" The Myth                   " link "The Myth"}  
 @{" The Concept                " link "The Concept"}

@endnode

@node "The Man" "ahiusr.guide/The Man"
@next "The Myth"
@prev "The Author"
@toc "The Author"

The Man
=======

Martin Blom was born 1974 in a town in Sweden called Jönköping.  He had
a happy childhood, lots of good friends, and a great family.  He did his
homework and went to church every Sunday.

   But then, one cold, dark Christmas Eve in the year of our Lord 1986,
everything went wrong.  This was the day when @{i}it@{ui} entered his life.  At
once, there were fights among the brothers.  They all wanted to use @{i}it@{ui}.
Martin started to avoid playing with kids that didn't share his
passion for @{i}it@{ui}.  The school work suffered.  Other interests suffered.
@{i}It@{ui} was the Commodore 64 home computer, and it would forever change his
life.

   Today, more than ten years after the tragedy, things are worse than
ever.  He is studying @{i}Computer Science and Engineering@{ui} at @{i}Linköping
Institute of Technology@{ui}, surrounded every day by other computer nerds.

   Martin has spent loads of money on computers over the years:  Amiga
500, Amiga 4000/040, Commodore 128D, Commodore 64 (in order of
appearance), modem, monitors, disks, mice etc.  Interesting enough, no
sound card.  He did, however, build a sound card of his own for the
Commodore 64, and he likes to mention that now and then (you see, this
was one of the few hardware projects that actually worked!).  4
channels, 8 bit samples.  He even wrote a module player for the good
old 64.  And it had quadrascopes.

@endnode

@node "The Myth" "ahiusr.guide/The Myth"
@next "The Concept"
@prev "The Man"
@toc "The Author"

The Myth
========

Some people actually seem to believe that Martin is a good programmer.
They couldn't be more wrong.  He is lazy, has no patience, he is a slow
thinker and he doesn't like anything he @{i}has@{ui} to do.

   Martin used to say

   *  If you can't write applications, write games.

   *  If you can't write games, write demos.

   *  If you can't write demos, write utilities.

   *  If you can't write utilities, write BBS intros and doors.

   *  If you can't do that either, get a modem and start trading.

   And guess what?  He tried demos.  He tried utilities.  He tried
intros.  He wrote a door for /X.  And he traded warez.

@endnode

@node "The Concept" "ahiusr.guide/The Concept"
@prev "The Myth"
@toc "The Author"

The Concept
===========

What do you do if you don't have the patience to write applications, if
you only write moderate demos, are tired of utilities, hate BBS doors,
are totally fed up with playing games and have decided to get legal and
stop pirating software?  Simple.  Try a new concept!

   Take a deep breath.  Close your eyes.  Think of one thing your
computer lacks.  Think of one of the things that makes your favorite
toy feel outdated.  Think of something that nobody has (successfully)
tried before.  Then write the software, and release it as Freeware.

   In Martins case, that something was hardware independent audio.

   Come on, admit it!  It's brilliant.  It doesn't matter if you are a
good programmer.  It doesn't matter if it takes 3 years to get to a
half-finished product.  It doesn't matter if you give it the most
unimaginative name in the world--you can even use a TLA (1).  Nobody is
going to say your software sucks, because nobody can say he has done
better himself.  Nobody is going to complain if you're slow on
releasing bug fixes and updates, because the software is free.  And
nobody is going to be angry with you if you stop developing the
software--because it sucked in the first place, remember?

   This concept won't make you rich, but are rich people really happier?

   ---------- Footnotes ----------

   (1) Three Letter Acronym

@endnode

@node "Acknowledgments" "ahiusr.guide/Acknowledgments"
@next "GPL"
@prev "The Author"
@toc "Main"

Acknowledgments
***************

There are quite a few people that have helped with the development of
AHI. Where would be a better place to thank them than in the
acknowledgments chapter? You tell me.


 @{" Thanks                     " link "Thanks"}  
 @{" Contributors               " link "Contributors"}  
 @{" Donors                     " link "Donors"}  
 @{" Honourable mention         " link "Honourable mention"}

   If you feel your name ought to be present here, please accept my
apologies and don't hesitate to contact me as soon as possible.

@endnode

@node "Thanks" "ahiusr.guide/Thanks"
@next "Contributors"
@prev "Acknowledgments"
@toc "Acknowledgments"

Special thanks
==============

The author wish to give special thanks to the following persons (in
alphabetical order):

Amiga Translators' Organization
     For the catalog translations.

Daniel Arthursson and Johan Nyblom
     For making it possible to write the first driver for a sound card,
     the @{i}Wavetools@{ui} card.  I'm sure AHI would not have been accepted as
     quick as it was without this driver.

Christian Buchner
     For the calibrated 14 bit routines for Paula.

MacroSystem Computer GmbH
     For lending me a Toccata card.

bbrv and Genesi
     For the Pegasos and that cool OS.

Przemyslaw Gruchala
     For finding all those bugs.

Ben Hermans and Hyperion Entertainment
     For hiring me to write a SBLive! driver.

Steve Krueger and SAS Institute, Inc.
     For the SAS/C compiler and all the updates.

Johan Otterström
     For all the help with the Toccata driver.

Jyrki Petsalo and Teemu Suikki
     For the Delfina driver, and for supporting AHI in the early days.
     And of course, for the sound card!

Pauli Porkka
     For active support and promotion of AHI from the beginning.

All the rest
     Many, many other have helped me, sent suggestions etc.  I owe you
     a lot.


   And of course, the actual catalog translators: Alex Plotnicov,
Andrija Antonijevic, Bernardo Innocenti, Dósa Márton, Eivind Olsen,
Frederico Borges, Ljubomir Jankoviá, Marcin Orîowski, Martin Sprenger,
Michael Malyshev, Michel Vissers, Ondrej Zima, Pauli Porkka, Petteri
Kallio, Piergiorgio Ghezzo, Roger Hågensen, Rúben Alvim, Samuel
Aguilera, Sini¹a Loliæ, Stéphane Barbaray, Sönke Tesch, Thomas Petersen,
Vit Sindlar, Vörös Viktor, me, myself and I....

@endnode

@node "Contributors" "ahiusr.guide/Contributors"
@next "Donors"
@prev "Thanks"
@toc "Acknowledgments"

Contributors
============

The following people have contributed to the AHI project with code or
drivers:

Stéphane Barbaray
     The MUI version of the preferences program.

Olaf Barthel
     The Concierto driver.

Chris Brenner
     A (never finished?) Sunrize driver.

Valenta Ferenc
     The VSS driver.

Ben Fuller
     A never finished Sunrize driver. May he rest in peace.

Simon N Goodwin
     A good attempt on the Silicon Studio driver. :-)

Przemyslaw Gruchala
     A C-Media and a Yet To Be Named driver. :-)

Thorsten Hansen
     The Melody MPEG and Amithlon drivers.

Richard Körber
     The Maestro Pro driver.

Frank Mariak
     The GREX and Pegasos drivers.

Bernd `Bernie' Meyer
     The--sniff!--never to be released Umilator driver.

Gunther Nikl
     Patches!

Kenneth Nilsen
     A (never finished?) Sunrize driver. And here I was, thinking the
     "Amiga" curse was the worst curse of them all ....

Johan Nyblom
     The latest Wavetools driver.

Pauli Porkka
     The first version of the Toccata driver.

Markus Pöllmann
     The AmigaXL driver.

Bernd Roesch
     The UAE driver.

Harry Sintonen
     The very first source code patch!

Sigbjørn Skjæret
     A 'C' version of @{b}paula.audio@{ub}.

Stefan Sommerfeld
     The RePulse driver.

Rüdiger Sopp
     The first version of the preferences program.  Too bad things
     didn't work out as planned.

Pawel Stypula
     The Mediator drivers.

Teemu Suikki
     The Delfina driver and the first PPC port.

Benjamin Vernoux
     An FM801 driver.

Davy Wentzler
     The AmigaOS 4.x port and many drivers.

Thomas Wenzel
     The Prelude driver.

Frank Wille
     The (no longer used) ELF loader.


   Many thanks!

@endnode

@node "Donors" "ahiusr.guide/Donors"
@next "Honourable mention"
@prev "Contributors"
@toc "Acknowledgments"

Donors
======

The following people has donated money to the project. It has ment a
lot to me, and please forgive me for not being able to finish a working
WarpUp or PowerUp PPC version of AHI. I hope the MorphOS and upcoming
AmigaOS 4 versions made up for that.

   Agneta Nord, Alan Surrette, Anders Drejer, Andreas Johansson, Ben
Hermans, Bernardo Innocenti, Björn Hagström, Christopher Lakatos, Davy
Wentzler, Fabio Barzagli, Fredrik Westermarck, Fredrik Zetterlund,
Gregory Donner, Göran Karlsson Ismo Houvinen, Johan Lind, John Haubrich,
John Hertell, John Hindle, John Rörland, Jonas Hulten, Jonny C.
Kitchens, Jorma Valli, Linus Silvander, Magnus Bouvin, Malcolm Harnden,
Marijan Franovic, Matteo Consolati Matthew K. Massa, Mematex AB, Mike
Masquith, Niko Tomatsidis, Ola Karlsson, Pasi Langerroos, Per Jonsson,
Robert Korzeniewski, Robert Nilsson, Staffan Bengtsson, Stefan Nilsson,
Steve Hodson, Steven Maes, The Magic Lantern Thomas & Stefan Lorenz,
Ulf Tidstrand, Vincent Morenas, Winfried Krüger and Zafer KANTAR.

@endnode

@node "Honourable mention" "ahiusr.guide/Honourable mention"
@prev "Donors"
@toc "Acknowledgments"

Honourable mention
==================

The road from AHI version 4 to version 6 has been a long one.  Maybe
not when counted in actual work hours, but definitely when counted in
calendar time.

   It began with a failed attempt to port the device to the PowerPC
processor, at which time AHI became a "shareware" product in order to
finance a Cyberstorm/PPC CPU card (see @{"Donors" link "Donors"}). When I realized I
couldn't deliver, AHI instead became Free Software, which it still and
will probably always be.

   The first release of the source code under the "GPL" was made on
April 1st, 1999, as part of the "Divine Records" joke (see
<http://martin.blom.org/ds/> and <http://martin.blom.org/dr/>(1)).

   Some people actually took their time to fill in the source code
registration form. You know who you are. Thank you! I'm sure I'll
figure out what to do will all addresses real soon now.

   But here comes the best part: Benoit Deschenes (Quebec, Canada),
Thomas Houlberg (Sdr. Bjert, Denmark) and Patrice Machin (Paris,
France) actually ordered my CD. Unfortunately, I only made a limited
amount of those CDs (17 plus one pre-production CD, if I remember
correctly) and have been out of stock ever since. To compensate for
this unusually long delivery delay, I've decided to try to produce
three extra copies and send them to you for free. Benoit, Thomas and
Patrice, if you read this and have moved since 1999, please let me know
of your new address as soon as possible!

   ---------- Footnotes ----------

   (1) Believe it or not, but I still get mail from people who want me
to publish their music now and then!

@endnode

@node "GPL" "ahiusr.guide/GPL"
@next "LGPL"
@prev "Acknowledgments"
@toc "Main"

GNU GENERAL PUBLIC LICENSE
**************************

                         Version 2, June 1991
     Copyright (C) 1989, 1991 Free Software Foundation, Inc.
     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
     
     Everyone is permitted to copy and distribute verbatim copies
     of this license document, but changing it is not allowed.

Preamble
========

The licenses for most software are designed to take away your freedom
to share and change it.  By contrast, the GNU General Public License is
intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users.  This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it.  (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.)  You can apply it to
your programs, too.

   When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it in
new free programs; and that you know you can do these things.

   To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.

   For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have.  You must make sure that they, too, receive or can get the
source code.  And you must show them these terms so they know their
rights.

   We protect your rights with two steps: (1) copyright the software,
and (2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.

   Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software.  If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.

   Finally, any free program is threatened constantly by software
patents.  We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary.  To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.

   The precise terms and conditions for copying, distribution and
modification follow.

    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
  0. This License applies to any program or other work which contains a
     notice placed by the copyright holder saying it may be distributed
     under the terms of this General Public License.  The "Program",
     below, refers to any such program or work, and a "work based on
     the Program" means either the Program or any derivative work under
     copyright law: that is to say, a work containing the Program or a
     portion of it, either verbatim or with modifications and/or
     translated into another language.  (Hereinafter, translation is
     included without limitation in the term "modification".)  Each
     licensee is addressed as "you".

     Activities other than copying, distribution and modification are
     not covered by this License; they are outside its scope.  The act
     of running the Program is not restricted, and the output from the
     Program is covered only if its contents constitute a work based on
     the Program (independent of having been made by running the
     Program).  Whether that is true depends on what the Program does.

  1. You may copy and distribute verbatim copies of the Program's
     source code as you receive it, in any medium, provided that you
     conspicuously and appropriately publish on each copy an appropriate
     copyright notice and disclaimer of warranty; keep intact all the
     notices that refer to this License and to the absence of any
     warranty; and give any other recipients of the Program a copy of
     this License along with the Program.

     You may charge a fee for the physical act of transferring a copy,
     and you may at your option offer warranty protection in exchange
     for a fee.

  2. You may modify your copy or copies of the Program or any portion
     of it, thus forming a work based on the Program, and copy and
     distribute such modifications or work under the terms of Section 1
     above, provided that you also meet all of these conditions:

       a. You must cause the modified files to carry prominent notices
          stating that you changed the files and the date of any change.

       b. You must cause any work that you distribute or publish, that
          in whole or in part contains or is derived from the Program
          or any part thereof, to be licensed as a whole at no charge
          to all third parties under the terms of this License.

       c. If the modified program normally reads commands interactively
          when run, you must cause it, when started running for such
          interactive use in the most ordinary way, to print or display
          an announcement including an appropriate copyright notice and
          a notice that there is no warranty (or else, saying that you
          provide a warranty) and that users may redistribute the
          program under these conditions, and telling the user how to
          view a copy of this License.  (Exception: if the Program
          itself is interactive but does not normally print such an
          announcement, your work based on the Program is not required
          to print an announcement.)

     These requirements apply to the modified work as a whole.  If
     identifiable sections of that work are not derived from the
     Program, and can be reasonably considered independent and separate
     works in themselves, then this License, and its terms, do not
     apply to those sections when you distribute them as separate
     works.  But when you distribute the same sections as part of a
     whole which is a work based on the Program, the distribution of
     the whole must be on the terms of this License, whose permissions
     for other licensees extend to the entire whole, and thus to each
     and every part regardless of who wrote it.

     Thus, it is not the intent of this section to claim rights or
     contest your rights to work written entirely by you; rather, the
     intent is to exercise the right to control the distribution of
     derivative or collective works based on the Program.

     In addition, mere aggregation of another work not based on the
     Program with the Program (or with a work based on the Program) on
     a volume of a storage or distribution medium does not bring the
     other work under the scope of this License.

  3. You may copy and distribute the Program (or a work based on it,
     under Section 2) in object code or executable form under the terms
     of Sections 1 and 2 above provided that you also do one of the
     following:

       a. Accompany it with the complete corresponding machine-readable
          source code, which must be distributed under the terms of
          Sections 1 and 2 above on a medium customarily used for
          software interchange; or,

       b. Accompany it with a written offer, valid for at least three
          years, to give any third party, for a charge no more than your
          cost of physically performing source distribution, a complete
          machine-readable copy of the corresponding source code, to be
          distributed under the terms of Sections 1 and 2 above on a
          medium customarily used for software interchange; or,

       c. Accompany it with the information you received as to the offer
          to distribute corresponding source code.  (This alternative is
          allowed only for noncommercial distribution and only if you
          received the program in object code or executable form with
          such an offer, in accord with Subsection b above.)

     The source code for a work means the preferred form of the work for
     making modifications to it.  For an executable work, complete
     source code means all the source code for all modules it contains,
     plus any associated interface definition files, plus the scripts
     used to control compilation and installation of the executable.
     However, as a special exception, the source code distributed need
     not include anything that is normally distributed (in either
     source or binary form) with the major components (compiler,
     kernel, and so on) of the operating system on which the executable
     runs, unless that component itself accompanies the executable.

     If distribution of executable or object code is made by offering
     access to copy from a designated place, then offering equivalent
     access to copy the source code from the same place counts as
     distribution of the source code, even though third parties are not
     compelled to copy the source along with the object code.

  4. You may not copy, modify, sublicense, or distribute the Program
     except as expressly provided under this License.  Any attempt
     otherwise to copy, modify, sublicense or distribute the Program is
     void, and will automatically terminate your rights under this
     License.  However, parties who have received copies, or rights,
     from you under this License will not have their licenses
     terminated so long as such parties remain in full compliance.

  5. You are not required to accept this License, since you have not
     signed it.  However, nothing else grants you permission to modify
     or distribute the Program or its derivative works.  These actions
     are prohibited by law if you do not accept this License.
     Therefore, by modifying or distributing the Program (or any work
     based on the Program), you indicate your acceptance of this
     License to do so, and all its terms and conditions for copying,
     distributing or modifying the Program or works based on it.

  6. Each time you redistribute the Program (or any work based on the
     Program), the recipient automatically receives a license from the
     original licensor to copy, distribute or modify the Program
     subject to these terms and conditions.  You may not impose any
     further restrictions on the recipients' exercise of the rights
     granted herein.  You are not responsible for enforcing compliance
     by third parties to this License.

  7. If, as a consequence of a court judgment or allegation of patent
     infringement or for any other reason (not limited to patent
     issues), conditions are imposed on you (whether by court order,
     agreement or otherwise) that contradict the conditions of this
     License, they do not excuse you from the conditions of this
     License.  If you cannot distribute so as to satisfy simultaneously
     your obligations under this License and any other pertinent
     obligations, then as a consequence you may not distribute the
     Program at all.  For example, if a patent license would not permit
     royalty-free redistribution of the Program by all those who
     receive copies directly or indirectly through you, then the only
     way you could satisfy both it and this License would be to refrain
     entirely from distribution of the Program.

     If any portion of this section is held invalid or unenforceable
     under any particular circumstance, the balance of the section is
     intended to apply and the section as a whole is intended to apply
     in other circumstances.

     It is not the purpose of this section to induce you to infringe any
     patents or other property right claims or to contest validity of
     any such claims; this section has the sole purpose of protecting
     the integrity of the free software distribution system, which is
     implemented by public license practices.  Many people have made
     generous contributions to the wide range of software distributed
     through that system in reliance on consistent application of that
     system; it is up to the author/donor to decide if he or she is
     willing to distribute software through any other system and a
     licensee cannot impose that choice.

     This section is intended to make thoroughly clear what is believed
     to be a consequence of the rest of this License.

  8. If the distribution and/or use of the Program is restricted in
     certain countries either by patents or by copyrighted interfaces,
     the original copyright holder who places the Program under this
     License may add an explicit geographical distribution limitation
     excluding those countries, so that distribution is permitted only
     in or among countries not thus excluded.  In such case, this
     License incorporates the limitation as if written in the body of
     this License.

  9. The Free Software Foundation may publish revised and/or new
     versions of the General Public License from time to time.  Such
     new versions will be similar in spirit to the present version, but
     may differ in detail to address new problems or concerns.

     Each version is given a distinguishing version number.  If the
     Program specifies a version number of this License which applies
     to it and "any later version", you have the option of following
     the terms and conditions either of that version or of any later
     version published by the Free Software Foundation.  If the Program
     does not specify a version number of this License, you may choose
     any version ever published by the Free Software Foundation.

 10. If you wish to incorporate parts of the Program into other free
     programs whose distribution conditions are different, write to the
     author to ask for permission.  For software which is copyrighted
     by the Free Software Foundation, write to the Free Software
     Foundation; we sometimes make exceptions for this.  Our decision
     will be guided by the two goals of preserving the free status of
     all derivatives of our free software and of promoting the sharing
     and reuse of software generally.

                                NO WARRANTY

 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
     WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
     LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
     HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT
     WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT
     NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
     FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE
     QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
     PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
     SERVICING, REPAIR OR CORRECTION.

 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
     WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY
     MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE
     LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
     INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
     INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
     DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU
     OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY
     OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
     ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

                      END OF TERMS AND CONDITIONS

How to Apply These Terms to Your New Programs
=============================================

If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these
terms.

   To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

     ONE LINE TO GIVE THE PROGRAM'S NAME AND AN IDEA OF WHAT IT DOES.
     Copyright (C) 19YY  NAME OF AUTHOR
     
     This program is free software; 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 program is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     GNU General Public License for more details.
     
     You should have received a copy of the GNU General Public License along
     with this program; if not, write to the Free Software Foundation, Inc.,
     59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.

   Also add information on how to contact you by electronic and paper
mail.

   If the program is interactive, make it output a short notice like
this when it starts in an interactive mode:

     Gnomovision version 69, Copyright (C) 19YY NAME OF AUTHOR
     Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
     type `show w'.  This is free software, and you are welcome
     to redistribute it under certain conditions; type `show c'
     for details.

   The hypothetical commands @{b}show w@{ub} and @{b}show c@{ub} should show the
appropriate parts of the General Public License.  Of course, the
commands you use may be called something other than @{b}show w@{ub} and @{b}show c@{ub};
they could even be mouse-clicks or menu items--whatever suits your
program.

   You should also get your employer (if you work as a programmer) or
your school, if any, to sign a "copyright disclaimer" for the program,
if necessary.  Here is a sample; alter the names:

     Yoyodyne, Inc., hereby disclaims all copyright
     interest in the program `Gnomovision'
     (which makes passes at compilers) written
     by James Hacker.
     
     SIGNATURE OF TY COON, 1 April 1989
     Ty Coon, President of Vice

   This General Public License does not permit incorporating your
program into proprietary programs.  If your program is a subroutine
library, you may consider it more useful to permit linking proprietary
applications with the library.  If this is what you want to do, use the
GNU Library General Public License instead of this License.

@endnode

@node "LGPL" "ahiusr.guide/LGPL"
@next "Concept Index"
@prev "GPL"
@toc "Main"

GNU LIBRARY GENERAL PUBLIC LICENSE
**********************************

                         Version 2, June 1991
     Copyright (C) 1991 Free Software Foundation, Inc.
     675 Mass Ave, Cambridge, MA 02139, USA
     Everyone is permitted to copy and distribute verbatim copies
     of this license document, but changing it is not allowed.
     
     [This is the first released version of the library GPL.  It is
      numbered 2 because it goes with version 2 of the ordinary GPL.]

Preamble
========

The licenses for most software are designed to take away your freedom
to share and change it.  By contrast, the GNU General Public Licenses
are intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users.

   This license, the Library General Public License, applies to some
specially designated Free Software Foundation software, and to any
other libraries whose authors decide to use it.  You can use it for
your libraries, too.

   When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it in
new free programs; and that you know you can do these things.

   To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the library, or if you modify it.

   For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you.  You must make sure that they, too, receive or can get the source
code.  If you link a program with the library, you must provide
complete object files to the recipients so that they can relink them
with the library, after making changes to the library and recompiling
it.  And you must show them these terms so they know their rights.

   Our method of protecting your rights has two steps: (1) copyright
the library, and (2) offer you this license which gives you legal
permission to copy, distribute and/or modify the library.

   Also, for each distributor's protection, we want to make certain
that everyone understands that there is no warranty for this free
library.  If the library is modified by someone else and passed on, we
want its recipients to know that what they have is not the original
version, so that any problems introduced by others will not reflect on
the original authors' reputations.

   Finally, any free program is threatened constantly by software
patents.  We wish to avoid the danger that companies distributing free
software will individually obtain patent licenses, thus in effect
transforming the program into proprietary software.  To prevent this,
we have made it clear that any patent must be licensed for everyone's
free use or not licensed at all.

   Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License, which was designed for utility
programs.  This license, the GNU Library General Public License,
applies to certain designated libraries.  This license is quite
different from the ordinary one; be sure to read it in full, and don't
assume that anything in it is the same as in the ordinary license.

   The reason we have a separate public license for some libraries is
that they blur the distinction we usually make between modifying or
adding to a program and simply using it.  Linking a program with a
library, without changing the library, is in some sense simply using
the library, and is analogous to running a utility program or
application program.  However, in a textual and legal sense, the linked
executable is a combined work, a derivative of the original library,
and the ordinary General Public License treats it as such.

   Because of this blurred distinction, using the ordinary General
Public License for libraries did not effectively promote software
sharing, because most developers did not use the libraries.  We
concluded that weaker conditions might promote sharing better.

   However, unrestricted linking of non-free programs would deprive the
users of those programs of all benefit from the free status of the
libraries themselves.  This Library General Public License is intended
to permit developers of non-free programs to use free libraries, while
preserving your freedom as a user of such programs to change the free
libraries that are incorporated in them.  (We have not seen how to
achieve this as regards changes in header files, but we have achieved
it as regards changes in the actual functions of the Library.)  The
hope is that this will lead to faster development of free libraries.

   The precise terms and conditions for copying, distribution and
modification follow.  Pay close attention to the difference between a
"work based on the library" and a "work that uses the library".  The
former contains code derived from the library, while the latter only
works together with the library.

   Note that it is possible for a library to be covered by the ordinary
General Public License rather than by this special one.

    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
  0. This License Agreement applies to any software library which
     contains a notice placed by the copyright holder or other
     authorized party saying it may be distributed under the terms of
     this Library General Public License (also called "this License").
     Each licensee is addressed as "you".

     A "library" means a collection of software functions and/or data
     prepared so as to be conveniently linked with application programs
     (which use some of those functions and data) to form executables.

     The "Library", below, refers to any such software library or work
     which has been distributed under these terms.  A "work based on the
     Library" means either the Library or any derivative work under
     copyright law: that is to say, a work containing the Library or a
     portion of it, either verbatim or with modifications and/or
     translated straightforwardly into another language.  (Hereinafter,
     translation is included without limitation in the term
     "modification".)

     "Source code" for a work means the preferred form of the work for
     making modifications to it.  For a library, complete source code
     means all the source code for all modules it contains, plus any
     associated interface definition files, plus the scripts used to
     control compilation and installation of the library.

     Activities other than copying, distribution and modification are
     not covered by this License; they are outside its scope.  The act
     of running a program using the Library is not restricted, and
     output from such a program is covered only if its contents
     constitute a work based on the Library (independent of the use of
     the Library in a tool for writing it).  Whether that is true
     depends on what the Library does and what the program that uses
     the Library does.

  1. You may copy and distribute verbatim copies of the Library's
     complete source code as you receive it, in any medium, provided
     that you conspicuously and appropriately publish on each copy an
     appropriate copyright notice and disclaimer of warranty; keep
     intact all the notices that refer to this License and to the
     absence of any warranty; and distribute a copy of this License
     along with the Library.

     You may charge a fee for the physical act of transferring a copy,
     and you may at your option offer warranty protection in exchange
     for a fee.

  2. You may modify your copy or copies of the Library or any portion
     of it, thus forming a work based on the Library, and copy and
     distribute such modifications or work under the terms of Section 1
     above, provided that you also meet all of these conditions:

       a. The modified work must itself be a software library.

       b. You must cause the files modified to carry prominent notices
          stating that you changed the files and the date of any change.

       c. You must cause the whole of the work to be licensed at no
          charge to all third parties under the terms of this License.

       d. If a facility in the modified Library refers to a function or
          a table of data to be supplied by an application program that
          uses the facility, other than as an argument passed when the
          facility is invoked, then you must make a good faith effort
          to ensure that, in the event an application does not supply
          such function or table, the facility still operates, and
          performs whatever part of its purpose remains meaningful.

          (For example, a function in a library to compute square roots
          has a purpose that is entirely well-defined independent of the
          application.  Therefore, Subsection 2d requires that any
          application-supplied function or table used by this function
          must be optional: if the application does not supply it, the
          square root function must still compute square roots.)

     These requirements apply to the modified work as a whole.  If
     identifiable sections of that work are not derived from the
     Library, and can be reasonably considered independent and separate
     works in themselves, then this License, and its terms, do not
     apply to those sections when you distribute them as separate
     works.  But when you distribute the same sections as part of a
     whole which is a work based on the Library, the distribution of
     the whole must be on the terms of this License, whose permissions
     for other licensees extend to the entire whole, and thus to each
     and every part regardless of who wrote it.

     Thus, it is not the intent of this section to claim rights or
     contest your rights to work written entirely by you; rather, the
     intent is to exercise the right to control the distribution of
     derivative or collective works based on the Library.

     In addition, mere aggregation of another work not based on the
     Library with the Library (or with a work based on the Library) on
     a volume of a storage or distribution medium does not bring the
     other work under the scope of this License.

  3. You may opt to apply the terms of the ordinary GNU General Public
     License instead of this License to a given copy of the Library.
     To do this, you must alter all the notices that refer to this
     License, so that they refer to the ordinary GNU General Public
     License, version 2, instead of to this License.  (If a newer
     version than version 2 of the ordinary GNU General Public License
     has appeared, then you can specify that version instead if you
     wish.)  Do not make any other change in these notices.

     Once this change is made in a given copy, it is irreversible for
     that copy, so the ordinary GNU General Public License applies to
     all subsequent copies and derivative works made from that copy.

     This option is useful when you wish to copy part of the code of
     the Library into a program that is not a library.

  4. You may copy and distribute the Library (or a portion or
     derivative of it, under Section 2) in object code or executable
     form under the terms of Sections 1 and 2 above provided that you
     accompany it with the complete corresponding machine-readable
     source code, which must be distributed under the terms of Sections
     1 and 2 above on a medium customarily used for software
     interchange.

     If distribution of object code is made by offering access to copy
     from a designated place, then offering equivalent access to copy
     the source code from the same place satisfies the requirement to
     distribute the source code, even though third parties are not
     compelled to copy the source along with the object code.

  5. A program that contains no derivative of any portion of the
     Library, but is designed to work with the Library by being
     compiled or linked with it, is called a "work that uses the
     Library".  Such a work, in isolation, is not a derivative work of
     the Library, and therefore falls outside the scope of this License.

     However, linking a "work that uses the Library" with the Library
     creates an executable that is a derivative of the Library (because
     it contains portions of the Library), rather than a "work that
     uses the library".  The executable is therefore covered by this
     License.  Section 6 states terms for distribution of such
     executables.

     When a "work that uses the Library" uses material from a header
     file that is part of the Library, the object code for the work may
     be a derivative work of the Library even though the source code is
     not.  Whether this is true is especially significant if the work
     can be linked without the Library, or if the work is itself a
     library.  The threshold for this to be true is not precisely
     defined by law.

     If such an object file uses only numerical parameters, data
     structure layouts and accessors, and small macros and small inline
     functions (ten lines or less in length), then the use of the object
     file is unrestricted, regardless of whether it is legally a
     derivative work.  (Executables containing this object code plus
     portions of the Library will still fall under Section 6.)

     Otherwise, if the work is a derivative of the Library, you may
     distribute the object code for the work under the terms of Section
     6.  Any executables containing that work also fall under Section 6,
     whether or not they are linked directly with the Library itself.

  6. As an exception to the Sections above, you may also compile or
     link a "work that uses the Library" with the Library to produce a
     work containing portions of the Library, and distribute that work
     under terms of your choice, provided that the terms permit
     modification of the work for the customer's own use and reverse
     engineering for debugging such modifications.

     You must give prominent notice with each copy of the work that the
     Library is used in it and that the Library and its use are covered
     by this License.  You must supply a copy of this License.  If the
     work during execution displays copyright notices, you must include
     the copyright notice for the Library among them, as well as a
     reference directing the user to the copy of this License.  Also,
     you must do one of these things:

       a. Accompany the work with the complete corresponding
          machine-readable source code for the Library including
          whatever changes were used in the work (which must be
          distributed under Sections 1 and 2 above); and, if the work
          is an executable linked with the Library, with the complete
          machine-readable "work that uses the Library", as object code
          and/or source code, so that the user can modify the Library
          and then relink to produce a modified executable containing
          the modified Library.  (It is understood that the user who
          changes the contents of definitions files in the Library will
          not necessarily be able to recompile the application to use
          the modified definitions.)

       b. Accompany the work with a written offer, valid for at least
          three years, to give the same user the materials specified in
          Subsection 6a, above, for a charge no more than the cost of
          performing this distribution.

       c. If distribution of the work is made by offering access to copy
          from a designated place, offer equivalent access to copy the
          above specified materials from the same place.

       d. Verify that the user has already received a copy of these
          materials or that you have already sent this user a copy.

     For an executable, the required form of the "work that uses the
     Library" must include any data and utility programs needed for
     reproducing the executable from it.  However, as a special
     exception, the source code distributed need not include anything
     that is normally distributed (in either source or binary form)
     with the major components (compiler, kernel, and so on) of the
     operating system on which the executable runs, unless that
     component itself accompanies the executable.

     It may happen that this requirement contradicts the license
     restrictions of other proprietary libraries that do not normally
     accompany the operating system.  Such a contradiction means you
     cannot use both them and the Library together in an executable
     that you distribute.

  7. You may place library facilities that are a work based on the
     Library side-by-side in a single library together with other
     library facilities not covered by this License, and distribute
     such a combined library, provided that the separate distribution
     of the work based on the Library and of the other library
     facilities is otherwise permitted, and provided that you do these
     two things:

       a. Accompany the combined library with a copy of the same work
          based on the Library, uncombined with any other library
          facilities.  This must be distributed under the terms of the
          Sections above.

       b. Give prominent notice with the combined library of the fact
          that part of it is a work based on the Library, and explaining
          where to find the accompanying uncombined form of the same
          work.

  8. You may not copy, modify, sublicense, link with, or distribute the
     Library except as expressly provided under this License.  Any
     attempt otherwise to copy, modify, sublicense, link with, or
     distribute the Library is void, and will automatically terminate
     your rights under this License.  However, parties who have
     received copies, or rights, from you under this License will not
     have their licenses terminated so long as such parties remain in
     full compliance.

  9. You are not required to accept this License, since you have not
     signed it.  However, nothing else grants you permission to modify
     or distribute the Library or its derivative works.  These actions
     are prohibited by law if you do not accept this License.
     Therefore, by modifying or distributing the Library (or any work
     based on the Library), you indicate your acceptance of this
     License to do so, and all its terms and conditions for copying,
     distributing or modifying the Library or works based on it.

 10. Each time you redistribute the Library (or any work based on the
     Library), the recipient automatically receives a license from the
     original licensor to copy, distribute, link with or modify the
     Library subject to these terms and conditions.  You may not impose
     any further restrictions on the recipients' exercise of the rights
     granted herein.  You are not responsible for enforcing compliance
     by third parties to this License.

 11. If, as a consequence of a court judgment or allegation of patent
     infringement or for any other reason (not limited to patent
     issues), conditions are imposed on you (whether by court order,
     agreement or otherwise) that contradict the conditions of this
     License, they do not excuse you from the conditions of this
     License.  If you cannot distribute so as to satisfy simultaneously
     your obligations under this License and any other pertinent
     obligations, then as a consequence you may not distribute the
     Library at all.  For example, if a patent license would not permit
     royalty-free redistribution of the Library by all those who
     receive copies directly or indirectly through you, then the only
     way you could satisfy both it and this License would be to refrain
     entirely from distribution of the Library.

     If any portion of this section is held invalid or unenforceable
     under any particular circumstance, the balance of the section is
     intended to apply, and the section as a whole is intended to apply
     in other circumstances.

     It is not the purpose of this section to induce you to infringe any
     patents or other property right claims or to contest validity of
     any such claims; this section has the sole purpose of protecting
     the integrity of the free software distribution system which is
     implemented by public license practices.  Many people have made
     generous contributions to the wide range of software distributed
     through that system in reliance on consistent application of that
     system; it is up to the author/donor to decide if he or she is
     willing to distribute software through any other system and a
     licensee cannot impose that choice.

     This section is intended to make thoroughly clear what is believed
     to be a consequence of the rest of this License.

 12. If the distribution and/or use of the Library is restricted in
     certain countries either by patents or by copyrighted interfaces,
     the original copyright holder who places the Library under this
     License may add an explicit geographical distribution limitation
     excluding those countries, so that distribution is permitted only
     in or among countries not thus excluded.  In such case, this
     License incorporates the limitation as if written in the body of
     this License.

 13. The Free Software Foundation may publish revised and/or new
     versions of the Library General Public License from time to time.
     Such new versions will be similar in spirit to the present version,
     but may differ in detail to address new problems or concerns.

     Each version is given a distinguishing version number.  If the
     Library specifies a version number of this License which applies
     to it and "any later version", you have the option of following
     the terms and conditions either of that version or of any later
     version published by the Free Software Foundation.  If the Library
     does not specify a license version number, you may choose any
     version ever published by the Free Software Foundation.

 14. If you wish to incorporate parts of the Library into other free
     programs whose distribution conditions are incompatible with these,
     write to the author to ask for permission.  For software which is
     copyrighted by the Free Software Foundation, write to the Free
     Software Foundation; we sometimes make exceptions for this.  Our
     decision will be guided by the two goals of preserving the free
     status of all derivatives of our free software and of promoting
     the sharing and reuse of software generally.

                                NO WARRANTY

 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
     WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE
     LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
     HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT
     WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT
     NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
     FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE
     QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU.  SHOULD THE
     LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
     SERVICING, REPAIR OR CORRECTION.

 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
     WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY
     MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE
     LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
     INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
     INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF
     DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU
     OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY
     OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
     ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

                      END OF TERMS AND CONDITIONS

How to Apply These Terms to Your New Libraries
==============================================

If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change.  You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of
the ordinary General Public License).

   To apply these terms, attach the following notices to the library.
It is safest to attach them to the start of each source file to most
effectively convey the exclusion of warranty; and each file should have
at least the "copyright" line and a pointer to where the full notice is
found.

     ONE LINE TO GIVE THE LIBRARY'S NAME AND AN IDEA OF WHAT IT DOES.
     Copyright (C) YEAR  NAME OF AUTHOR
     
     This library is free software; you can redistribute it and/or modify it
     under the terms of the GNU Library General Public License as published
     by the Free Software Foundation; either version 2 of the License, or (at
     your option) any later version.
     
     This library is distributed in the hope that it will be useful, but
     WITHOUT ANY WARRANTY; without even the implied warranty of
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     Library General Public License for more details.
     
     You should have received a copy of the GNU Library General Public
     License along with this library; if not, write to the Free Software
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

   Also add information on how to contact you by electronic and paper
mail.

   You should also get your employer (if you work as a programmer) or
your school, if any, to sign a "copyright disclaimer" for the library,
if necessary.  Here is a sample; alter the names:

     Yoyodyne, Inc., hereby disclaims all copyright interest in the library
     `Frob' (a library for tweaking knobs) written by James Random Hacker.
     
     SIGNATURE OF TY COON, 1 April 1990
     Ty Coon, President of Vice

   That's all there is to it!

@endnode

@node "Concept Index" "ahiusr.guide/Concept Index"
@prev "LGPL"
@toc "Main"

Concept Index
*************

@index "Concept Index"



 @{" 14 bit calibration                       " link "The Drivers"}   The Drivers
 @{" 68060 CPU                                " link "The Drivers"}   The Drivers
 @{" Acknowledgments                          " link "Acknowledgments"}   Acknowledgments
 @{" AddAudioModes <1>                        " link "The Drivers"}   The Drivers
 @{" AddAudioModes                            " link "AddAudioModes"}   AddAudioModes
 @{" Advanced settings                        " link "Advanced settings"}   Advanced settings
 @{" AHI, overview                            " link "Overview"}   Overview
 @{" AHI, preferences program                 " link "AHI"}   AHI
 @{" AHI-Handler                              " link "AHI-Handler"}   AHI-Handler
 @{" AHIpaulaBufferLength variable            " link "The Drivers"}   The Drivers
 @{" AHIpaulaFakeMixFreq variable             " link "The Drivers"}   The Drivers
 @{" AHIpaulaFilterFreq variable              " link "The Drivers"}   The Drivers
 @{" AHIpaulaSampleLimit variable             " link "The Drivers"}   The Drivers
 @{" AHIpaulaSwapChannels variable            " link "The Drivers"}   The Drivers
 @{" AHItoccataIrqSize variable               " link "The Drivers"}   The Drivers
 @{" AHItoccataNoTask variable                " link "The Drivers"}   The Drivers
 @{" AHItoccataPlayBufferSize variable        " link "The Drivers"}   The Drivers
 @{" AHItoccataRecordBufferSize variable      " link "The Drivers"}   The Drivers
 @{" AIFC                                     " link "AHI-Handler"}   AHI-Handler
 @{" AIFF                                     " link "AHI-Handler"}   AHI-Handler
 @{" AmigaVideo                               " link "The Drivers"}   The Drivers
 @{" AmigaXL                                  " link "System Files"}   System Files
 @{" Anti-click                               " link "Advanced settings"}   Advanced settings
 @{" Audio mode database                      " link "The Mode Descriptors"}   The Mode Descriptors
 @{" Audio mode settings                      " link "Mode settings"}   Mode settings
 @{" Audio modes, overview                    " link "The Mode Descriptors"}   The Mode Descriptors
 @{" AUDIO:                                   " link "AHI-Handler"}   AHI-Handler
 @{" Aura                                     " link "System Files"}   System Files
 @{" Author of AHI                            " link "The Author"}   The Author
 @{" Calibration, 14 bit                      " link "The Drivers"}   The Drivers
 @{" Clarity                                  " link "System Files"}   System Files
 @{" Clipping, master volume                  " link "Advanced settings"}   Advanced settings
 @{" Concierto                                " link "System Files"}   System Files
 @{" Contributors                             " link "Contributors"}   Contributors
 @{" Copyright                                " link "Distribution"}   Distribution
 @{" CPU usage limit                          " link "Advanced settings"}   Advanced settings
 @{" CyberGraphX                              " link "The Drivers"}   The Drivers
 @{" CyberSound                               " link "The Drivers"}   The Drivers
 @{" DAC calibration                          " link "The Drivers"}   The Drivers
 @{" Database, audio modes                    " link "The Mode Descriptors"}   The Mode Descriptors
 @{" Debug level                              " link "Advanced settings"}   Advanced settings
 @{" Default anti-click time                  " link "Advanced settings"}   Advanced settings
 @{" Delfina                                  " link "System Files"}   System Files
 @{" Disclaimer                               " link "Distribution"}   Distribution
 @{" Distortion, while recording              " link "AHI-Handler"}   AHI-Handler
 @{" Distribution                             " link "Distribution"}   Distribution
 @{" DMA                                      " link "The Drivers"}   The Drivers
 @{" DraCo Motion                             " link "System Files"}   System Files
 @{" Drivers                                  " link "System Files"}   System Files
 @{" Echo, enable-disable-fast                " link "Advanced settings"}   Advanced settings
 @{" ESS Solo-1                               " link "System Files"}   System Files
 @{" Fame                                     " link "The Concept"}   The Concept
 @{" Fast Mono (audio mode)                   " link "The Mode Descriptors"}   The Mode Descriptors
 @{" Fast Stereo (audio mode)                 " link "The Mode Descriptors"}   The Mode Descriptors
 @{" Fast Stereo++ (audio mode)               " link "The Mode Descriptors"}   The Mode Descriptors
 @{" ForteMedia FM801                         " link "System Files"}   System Files
 @{" HiFi 7.1 (audio mode)                    " link "The Mode Descriptors"}   The Mode Descriptors
 @{" HiFi Mono (audio mode)                   " link "The Mode Descriptors"}   The Mode Descriptors
 @{" HiFi Stereo (audio mode)                 " link "The Mode Descriptors"}   The Mode Descriptors
 @{" HiFi Stereo++ (audio mode)               " link "The Mode Descriptors"}   The Mode Descriptors
 @{" Honourable mention                       " link "Honourable mention"}   Honourable mention
 @{" IFF-AIFC                                 " link "AHI-Handler"}   AHI-Handler
 @{" IFF-AIFF                                 " link "AHI-Handler"}   AHI-Handler
 @{" Interpolation, linear                    " link "The Mode Descriptors"}   The Mode Descriptors
 @{" Jesus Christ                             " link "The Man"}   The Man
 @{" Legal nonsense                           " link "Distribution"}   Distribution
 @{" License                                  " link "Distribution"}   Distribution
 @{" Linear interpolation                     " link "The Mode Descriptors"}   The Mode Descriptors
 @{" Maestro Pro                              " link "System Files"}   System Files
 @{" Master volume, clipping                  " link "Advanced settings"}   Advanced settings
 @{" MC68060 CPU                              " link "The Drivers"}   The Drivers
 @{" Melody                                   " link "System Files"}   System Files
 @{" Mode settings                            " link "Mode settings"}   Mode settings
 @{" Modules on a C64                         " link "The Man"}   The Man
 @{" Mono (audio mode)                        " link "The Mode Descriptors"}   The Mode Descriptors
 @{" Multiplication tables                    " link "The Mode Descriptors"}   The Mode Descriptors
 @{" Nerd, definition of                      " link "The Man"}   The Man
 @{" Overview                                 " link "Overview"}   Overview
 @{" Paula                                    " link "System Files"}   System Files
 @{" Paula, custom chip                       " link "Overview"}   Overview
 @{" Picasso96                                " link "The Drivers"}   The Drivers
 @{" Preferences                              " link "AHI"}   AHI
 @{" Preferences, advanced                    " link "Advanced settings"}   Advanced settings
 @{" Preferences, audio mode                  " link "Mode settings"}   Mode settings
 @{" Prelude                                  " link "System Files"}   System Files
 @{" Recursion                                " link "Concept Index"}   Concept Index
 @{" Repulse                                  " link "System Files"}   System Files
 @{" Settings                                 " link "AHI"}   AHI
 @{" Settings, advanced                       " link "Advanced settings"}   Advanced settings
 @{" Settings, audio mode                     " link "Mode settings"}   Mode settings
 @{" Software license                         " link "Distribution"}   Distribution
 @{" Sound card drivers                       " link "System Files"}   System Files
 @{" SoundBlaster 128                         " link "System Files"}   System Files
 @{" SoundBlaster Live!                       " link "System Files"}   System Files
 @{" Special thanks                           " link "Thanks"}   Thanks
 @{" Stereo (audio mode)                      " link "The Mode Descriptors"}   The Mode Descriptors
 @{" Stereo++ (audio mode)                    " link "The Mode Descriptors"}   The Mode Descriptors
 @{" Sunrize                                  " link "System Files"}   System Files
 @{" Surround sound, enable-disable           " link "Advanced settings"}   Advanced settings
 @{" System description                       " link "System description"}   System description
 @{" System Files                             " link "System Files"}   System Files
 @{" Tables, multiplication                   " link "The Mode Descriptors"}   The Mode Descriptors
 @{" Terratec 128i PCI                        " link "System Files"}   System Files
 @{" Terratec 512i digital                    " link "System Files"}   System Files
 @{" The Author                               " link "The Author"}   The Author
 @{" The Concept                              " link "The Concept"}   The Concept
 @{" The Drivers                              " link "The Drivers"}   The Drivers
 @{" The Man                                  " link "The Man"}   The Man
 @{" The Mode Descriptors                     " link "The Mode Descriptors"}   The Mode Descriptors
 @{" The Myth                                 " link "The Myth"}   The Myth
 @{" Toccata                                  " link "System Files"}   System Files
 @{" VGA screen mode                          " link "The Drivers"}   The Drivers
 @{" VIA AC97                                 " link "System Files"}   System Files
 @{" Volume scaling                           " link "Advanced settings"}   Advanced settings
 @{" Wavetools                                " link "System Files"}   System Files

@endnode

