diff --git a/neo/openal/docs/ChangeLog b/neo/openal/docs/ChangeLog
deleted file mode 100644
index b4eb754d..00000000
--- a/neo/openal/docs/ChangeLog
+++ /dev/null
@@ -1,378 +0,0 @@
-2001-02-06  Bernd Kreimeier  <bk@lokigames.com>
-
-	* chp-rendering.sgml: added annotation about CONE calculation.
-	* chp-state.sgml: added more annotation on log vs. linear GAIN.
-
-2001-01-09  Bernd Kreimeier  <bk@lokigames.com>
-
-	* chp-state.sgml: ungrep of scratched DISTANCE_SCALE.
-
-2001-01-08  Bernd Kreimeier  <bk@lokigames.com>
-
-	* chp-rendering.sgml: amended MAX_DISTANCE.
-	* chp-state.sgml: culling clarification.
-	Note: MAX_DISTANCE (and consequently the current
-	Inverse Clamped Distance Model) do not fit the API.
-	The clamping of the distance (instead of clamping
-	to the effective gain at the max. distance) will
-	potentially break other distance-dependend calculations
-	further down in the processing chain.
-	TODO: revisit Inverse Clamped Distance Model. _DS3D extension?
-
-2001-01-05  Bernd Kreimeier  <bk@lokigames.com>
-
-	* chp-rendering.sgml: SOURCE_RELATIVE specification.
-
-	* chp-state.sgml: clarified distance attentuation calculation
-	a bit, and added back in the linear version as an annotation.
-	Note: watch this, it's tied into the GAIN_LINEAR issue.
-	TODO: added dist calculation requirements.
-
-2001-01-04  Bernd Kreimeier  <bk@lokigames.com>
-
-	* chp-operation.sgml: INVALID_ENUM for getters and enable,
-	not INVALID_OPERATION. Later: Delete{Object}s accepts zero. 
-
-2000-12-04  Bernd Kreimeier  <bk@lokigames.com>
-
-	* Makefile: added HTML ZIP targets ("update" for website). 
-
-2000-11-10  Bernd Kreimeier  <bk@lokigames.com>
-
-	* WWW: reworked the OpenAL web site as in CVS. This
-	includes emptying HTML files with obsolete whitepaper
-	and specification content not even linked from the
-	official pages, and reworking the official pages to
-	remove redundancy, and generally point to the snapshots.
-	Also created snapshots page (along with cronjob and
-	automated update installed by Rafael).
-
-	* Makefile: added ZIP file generation to update target. 
-
-	* index.html: edited for snapshots/ page on www.openal.org.
-	As it is next to impossible to reproduce the Official OpenAL
-	Look w/o lots of tap dancing, I use the style from the
-	DocBook HTML rendering instead.
-
-2000-11-06  Bernd Kreimeier  <bk@lokigames.com>
-
-	* Makefile (full): full rendering target added.
-	* ent-marks-full.sgml: created.
-
-2000-10-27  Bernd Kreimeier  <bk@lokigames.com>
-
-	* Makefile: rendering targets for cronjob driven update. 
-
-2000-10-26  Bernd Kreimeier  <bk@lokigames.com>
-
-	* alc-context.sgml: annotation on release of hardware resources.
-	Removed version query enry point, added size-safe GetIntegerv
-	and GetString, removed GetErrorString, added integer and string
-	query tokens, added device enumeration query. Added more annotation.
-
-	* chp-rendering.sgml: remark on release of hardware resources.
-
-	* alc-context.sgml: had INVALID_DEVICE also marked by RFC.
-	Removed the "device parameter should be NULL" leftovers.
-	Added Query functions. Removed redundant device parameters
-	to avoid GLX-style redundancy and resulting BadMatch errors.
-	
-
-2000-10-25  Bernd Kreimeier  <bk@lokigames.com>
-
-	* oalspecs.sgml: include extension list entity (below).
-	* ent-extensions.sgml: created.
-	Note: during several unsuccessful attempts to convince
-	DocBook and the DocBook toolchain to handle CDATA external
-	entities properly for <literallayout> and <programlisting>,
-	I also had to recover accidentally deleted files.
-
-2000-10-24  Bernd Kreimeier  <bk@lokigames.com>
-
-	* alc-context.sgml: shared object section. Mike Kelly request
-	as RFC. ALC Error section placeholder. ALC attribute section
-	as placeholder. Process/Suspend added plus annotation, Update
-	removed. More typo fixes. Added extension query. Removed old
-	RFC's. No UNDERFLOW error. No CHANNELS attribute, MIXAHEAD
-	redundant. Removed alcUpdate( PROCESS | SUSPEND ) RFC.
-	
-
-2000-10-23  Bernd Kreimeier  <bk@lokigames.com>
-
-	* alc-context.sgml: entities for ALCdevice and ALCcontext.
-	Fixed typos reported by CarloV on non-pointer handles.
-
-	* chp-rendering.sgml: infinite LOOPING attribute.
-
-2000-10-20  Bernd Kreimeier  <bk@lokigames.com>
-
-	* ent-examples.sgml: experimenting with external sample.c 
-	files as CDATA entities, to no avail. 
-	* oalspecs.sgml: example entities.
-
-2000-10-16  Bernd Kreimeier  <bk@lokigames.com>
-
-	* chp-rendering.sgml: moved in buffer queueing.
-	Scratched PLAY_COUNT. Fixed SourceStart{v} residue.
-
-	* chp-queueing.sgml: proof-reading, contents then moved out.
-
-2000-10-13  Bernd Kreimeier  <bk@lokigames.com>
-
-	* chp-queueing.sgml: changed according to discussion.
-	Removed some, but not all redundant annotation, and removed
-	remainders of old attribute based approach. Added annotation
-	on repetition by multiple calls. Changed signatures.
-
-2000-10-11  Bernd Kreimeier  <bk@lokigames.com>
-
-	* chp-state.sgml: removed GAIN_LINAR based equations.
-	* chp-rendering.sgml: removed GAIN_LINAR.
-	* ext-gainlinear.sgml: collected GAIN_LINEAR related sections.
-	Note: choosing to use GAIN_LINEAR_LOKI for now. The duplication
-	of tokens complicates specification and implementation, and
-	requires further discussion.
-
-	* ent-marks.sgml: added Revision mark.
-
-	* oalspecs.sgml: added per-file revision history (appendix).
-	Note: we might wind up never rendering these, I can't see
-	a consistent way to do this.
-
-	* ChangeLog: moved in revision history from oalspecs.sgml.
-	Note: see the very first entry in this document for the
-	revision history that predates this ChangeLog.
-	TODO: include ChangeLog in RFC/Revision rendering.
-
-	* chp-introduction.sgml: removed CVS based revision history.
-	Added a %Revision marked section (we now have these per-file).
-
-2000-10-10  Bernd Kreimeier  <bk@lokigames.com>
-
-	* oalspecs.sgml: reworked for new distributed document.
-
-	* app-annotations.sgml: created from original doc.
-	* app-extensionprocess.sgml: created from original doc.
-	* app-extensions.sgml: created from original doc.
-	* app-constants.sgml: created from original doc.
-	
-	* alc-context.sgml: created from original doc.
-	Note: this breaks the scheme a bit, as this is technically
-	a chapter, but if ALC turns into a multi-chapter 
-	documentation at some point down the road it will have
-	to be a separate document anyway.
-	
-	* chp-multichannel.sgml: created from original doc.
-	* chp-queueing.sgml: created from original doc.
-	* chp-buffers.sgml: created from original doc.
-	* chp-rendering.sgml: created from original doc.
-	* chp-state.sgml: created from original doc.
-	* chp-operation.sgml: created from original doc.
-	* chp-introduction.sgml: created from original doc.
-	* sec-bookinfo.sgml:  created from original doc.
-	
-	* ent-names.sgml: created from original doc.
-	* ent-marks.sgml: got it working.
-	Note: this will be a temporary file (created from the Makefile),
-	not sure whether it should be in CVS at all.
-	
-	* ChangeLog: created.
-
-2000--1999  Bernd Kreimeier  <bk@lokigames.com>
-	
-	* oalspecs.sgml: moved out CVS Revision History (below).
-
-	The AL Specification was originally maintained as an HTML
-	document, and subsequently as a single SGML file. With the
-	split into several files, it is no longer possible or
-	desirable to maintain a single revision history. As we 
-	have a manually maintained revhistory within the DocBook
-	source, I decided to move the old revision history into
-	the ChangeLog.
-
-	Revision 1.11  2000/10/11 18:44:46  bk
-        More JMJ typo corrections. IA-SID I3DL2 section rephrased. Moved
-        marked section toggles in ent-marks.sgml file so that these can
-        be generated or modified from the Makefile. Split document up into
-        several separate files using external entities. Created external
-        ChangeLog. From now on, revision history and changes will be
-        maintained in the ChangeLog as it is scattered over files.
-
-        Revision 1.10  2000/09/27 22:57:02  bk
-        Commit w/o subdoc (doesn't work).
-
-        Revision 1.9  2000/09/27 22:54:36  bk
-        Typos from MKV and JMJ. Fixed Inverse Square Law. Scratched
-        ProgagationSpeed. Described distance models in full. Changed
-        to INVERSE_DISTANCE (both models use ROF). Added GH text (parts)
-        as annotation to "View" sections, added Basic AL Operation text
-        he sent (some changes, removed redundant section), marked source
-        as Example sections. Changed Terminology annotation. Added TBA
-        on Fundamentals. RFC'ed distributed error section from GL and
-        annotation. Added TBA on Floating Point Computation. Added AL
-        State TBA. Added AL entity as opposed to OAL. Added Command Syntax
-        TBA (minimal) plus annotation. More fixes from JMJ. No NaN
-        check comment. Rephrased invalid commmands. Disclaimer on
-        Enable/Disable being unused. Query with NULL destination
-        clarified. Example values for simple query. TBA on data
-        conversions. Cleaned out Time query/scaling, added RFC,
-        marked DURATION/REMAINDER as Scratch. Euclidean. No Transforms
-        now annotation. Promoted RFC on Source( BUFER, NONE ) to spec
-        text. Scratch'ed Streaming Buffer remarks. Removed IMPLIED.
-        Scratch'ed Buffer Traversal and a whole shebang of queueing
-        annotation to go with it. ALC cleanup, RFC on multiple
-        current contexts. Skipped Buffer Queueing section for now.
-        SUBDOC NO in DocBook declaration. Validation pass for CVS.
-
-        Revision 1.8  2000/09/20 01:21:33  bk
-        Fixes from Ian Ollman: fixed wrong title on Buffer Attributes
-        section. Annotation on No application selected Names. Fixes
-        from JMJ: typos and mistakes on I3DL2. Renamed LOOP_COUNT to
-        PLAY_COUNT and clarified counting as requested. DOPPLER_FACTOR,
-        DOPPLER_VELOCITY, Doppler Effect section rewritten according to
-        announced changes. Removed DistanceFactor, added scale invariance.
-        Scratch-marked Multichannel sketch. Added BufferWriteData as Loki
-        extension. Removed obsolete RFC on depercating BUFFER. Rewrote
-        Buffer queueing state section and renamed BUFFERS_USED to
-        BUFFERS_PROCESSED following discussion with John Kraft, to remove
-        ambiguity. Rewrote BUFFERS_PROCESSED description. Added
-        MAX_DISTANCE plus MUTE annotation. Added No Culling section.
-        Edited DISTANCE_MODEL section. Distance Model Source Attributes
-        added. Rolloff quantization annotation added. Evaluation order
-        on attenuation/gain. Marked Scratch the current IASIG section
-        per JMJ's request, added Source Environment Attribute section
-        as TBA. Removed and moved RFC's (AppendData, GenStreaming).
-        Clarified directional attenuation. Clarified CONE_OUTER_GAIN
-        as scaling factor. Added a Programmers and Implementors View.
-
-        Revision 1.7  2000/08/15 02:47:03  bk
-        Fixed RFC markup error needed for Full version.
- 
-        Revision 1.6  2000/08/15 02:20:49  bk
-        Clarified BUFFER_USED vs. buffer state. Started section on
-        handling multichannel output. Moved out GenStreamingBuffer
-        in annotation on BufferAppendData extension. Added BufferWriteData
-        with internalFormat parameter and discussion on mono vs.
-        multichannel buffers. Added Multichannel objects (kept short in
-        case we demote to extension or replace). Some annotation.
-        Tried GGI docbook2texi in attempt to end those rogue linux/doc
-        activities, to no avail. Removed messy scratchpad section.
-        Removed outdated example listing. Turned remaining scratch
-        annotation into appendix. Created minimal Makefile (cleanup).
-
-        Revision 1.5  2000/08/08 02:56:05  bk
-        alcGetCurrentContext. Attempt to formulate Design Objectives as
-        a guideline. RFC's on INITIAL state, ACTIVE misnomer. RFC on
-        INVALID_POINTER. Lots of scratch stuff (fallout from buffer
-        queueing discussions). Annotations on various buffer queue
-        rejects and related issues. Added Scaling and Timing sections
-        and related calls. Added CONE_OUTER_GAIN. Added Doppler sections.
-        Rewrote and shuffle globale state, simple query, string query.
-        Moved Extensions sections in Appendix. Added annotation and
-        RFC's regarding distance/gain model. No more ILLGEAL - finally
-        checked the specs and Mesa 3.3 to be sure. Picked OPERATION at
-        the same time, also specs conformat (no comment...). Removed
-        JMJ as responsible author (all blame shall be mine). Fixed
-        Play(), INITIAL vs. STOPPED. Edited related RFC's, stripped
-        obsolete commentary. Rewrote State/State Transition section.
-        Fixes on SGML. CHANNELS and BITS moved in RFC's. Moved and
-        rewrote RFC on Duration/Remainder queries into Time section.
-        Stripped BYTE_LOKI of all but the essentials. Added placeholders
-        for Callback and AppendData in same (backwards compatibility)
-        section. Lots of Buffer Queueing.
- 
-        Revision 1.4  2000/07/25 17:19:17  bk
-        Changed ILLEGAL_OPERATION to ILLEGAL_COMMAND consistently. Added
-        excerpts from mailinglist to scratch section. Added Appendix on
-        Extension Process. Typos. RFC on EXTENSIONS changed to Annotation.
-        SGML validation and error fixes (not done on cvs1.3, sorry).
-
-        Revision 1.3  2000/07/24 21:18:53  bk
-        Reordered manual revision history to be CVS compliant. Diff against
-        Rev. 1.4/bk000626 as it was not checked in CVS. Created scratch
-        section for removed RFC 's. Checked edits on Extension section and
-        removal of related RFC/bk000506. Converted removed RFC/bk000504
-        on IsExtensionPresent in Annotation. Rewrote Mike's annotations
-        on source types and distance attentuation clamping as RFC's and
-        added some removed RFC sections back. Rewrote annotation added by
-        MikeV on compressed buffers, split of RFC on AL_SIZE query.
-        Re-added RFC's an buffer attribute defaults, edited annotation
-        on GetEnumValue return. RFC's on factory methods for streaming
-        buffers, memory budgeting, initial object state. Re-inserted and
-        extended RFC on format enum issue. Re-inserted the global
-        setter/getter in scratch section. Implementation requirement
-        section. Resurrected CONE_OUTSIDE_GAIN as RFC. BITS bitching,
-        annotation to explain why not enumerating frequencies. Got a grip
-        and recognized BITS and CHANNELS as query-only. More on frequency
-        in BufferData. Into CVS before current discussions are added.
-
-        Revision 1.2  2000/07/19 15:16:58  briareos
-        Enable/Disable return void, not enum.
-
-        Revision 1.1  2000/06/29 00:27:24  briareos
-        Initial draft of OpenAL specs.
-
-       
-        1.4/briareos : not in CVS
-        Finished editing related to my comments, with Joe's
-        feedback, in preparation for use by Creative and eventual
-        public dissemination later this week.
- 
-        1.4/bk000626 : not in CVS
-        Started using id attribute on RFC note elements, to ensure unique
-        identifiers. Added Annote level. Added oal15-jm/overview.html 
-        changes. Added oal15-jm/object-state.html (mostly). Removed
-        Filtering/Spatialization distinction and merged attribute table.
-        Moved Filter chapter to annotation. Moved Geometry to annotation,
-        rewrote annotation with my latest conclusions on A3D/EAGLE like
-        approach. Stripped out ALU and ALUT, added annotation on reasons.
-        Added some text to introduction chapter. Moved ALC chapter to end 
-        of specification. Followed John Hall advice to enable section
-        numbers in print stylesheet. Rewrote section on GetError. Created
-        I3DL2 extension appendix. Reworked all tables for better
-        formatting with separated descriptions. Took out a bunch of 
-        outdated RFC's. Rewrote Query and String Query section. Added
-        Scratch sections. Added ARB/Ack section. Didn't get RFC comments
-        from MikeV. Fixed permission to copy.
-    
-        1.4/bk000508 : not in CVS.
-        Added RFC to Device section. Made nested RFC around entire
-        device section to make sure. Added trailing blanks to data type
-        entities as a cheap workaround to the HTML backend problem in
-        FuncSynopsis. Added RFC from BYTE_LOKI discussion on mailinglist.
-
-        1.4/bk000507 : not in CVS.
-        Added altypes.h info on scalar types, copied Linux OpenGL Base 
-        ABI layout. Also added some missing enums. Checked alc.h header, 
-        added UpdateContext and RFC's. Changed alc*Context signatures to 
-        include ALCdevice handle. Checked al.h header, fixed outdated 
-        BufferData/BufferAppendData signatures, added RFC's. Added comments
-        on differing return types. This pretty much concludes the inventory.
-    
-        1.4/bk000506 : not in CVS.
-        The HTML in CVS was completely mangled between the 1.2 and 1.3
-        revisions. Also, redundant al and AL_ prefixes were added, and
-        the document was restructured. I tried SaveAs ASCII and
-        whitespace insensitive compare, and finally did the compare
-        manually (no guarantees). The text sections that looked
-        relevant have been added in RFC's with the bk000506 tag.
-        Also added a revision history and CVS tags for future CVS based
-        revision control (post-E3).
-       
-        1.4/bk000505 : not in CVS.
-        SGML version. Merges AL specification and API reference as
-        of GDC (v1.2) with each other. Adds ALC placeholder.
-        Addition of several RFCs based on recent discussions.
- 
-        1.3/cvogelsa : only in CVS.   
-        api-reference.html    CVS v1.14
-        specification.html    CVS v1.3
-     
-        1.2/briareos : 8 March 2000, released at GDC.
-        api-reference.html    CVS v1.13
-        specification.html    CVS v1.2
-
-        x.xx/nn : early specifications. 
-        Neither the early working papers by Terry Sikes, Sean L. Palmer 
-        and others nor the first versions of the &OAL; specification
-        as compiled at Loki were archived and versioned in a coherent way.
\ No newline at end of file
diff --git a/neo/openal/docs/Makefile b/neo/openal/docs/Makefile
deleted file mode 100644
index ce5932b9..00000000
--- a/neo/openal/docs/Makefile
+++ /dev/null
@@ -1,148 +0,0 @@
-## ------------------------------------------------
-## Makefile for openal/docs/
-
-
-## DocBook stuff
-DB2PS  =  db2ps
-DB2PDF =  db2pdf
-DB2HTML = db2html
-
-## TexInfo stuff
-MAKEINFO  = makeinfo
-
-
-
-## Targets
-OALSPEC = oalspecs
-DB_OBJS = $(OALSPEC).ps  $(OALSPEC)/index.html
-
-TEXI_OBJS = openal.info
-
-.SUFFIXES: .texi .info
-
-## Rules
-%.ps   : %.sgml
-	$(DB2PS) $<
-
-%/index.html : %.sgml
-	$(DB2HTML) $<
-
-
-## Fixme - config.h
-%.info : %.texi ../config.h
-	$(MAKEINFO) $<
-
-
-
-## ----------------
-## Standard targets
-default: all
-
-all:	render
-
-render: $(DB_OBJS)
-
-texi:   $(TEXI_OBJS)
-
-
-## --------------
-## Cronjob target
-update: specs annotated full 
-
-
-## ----------------------------------------------------------
-## Specification - prototypes, tokens, explanation
-##
-specs-ps:
-	-rm -f  $(OALSPEC)-specs.ps
-	cp ent-marks-specification.sgml ent-marks.sgml
-	$(DB2PS) $(OALSPEC).sgml
-	mv $(OALSPEC).ps $(OALSPEC)-specs.ps
-	zip -9 $(OALSPEC)-specs.ps.zip $(OALSPEC)-specs.ps
-
-specs-html:
-	-rm -rf $(OALSPEC)-specs/
-	cp ent-marks-specification.sgml ent-marks.sgml
-	$(DB2HTML) $(OALSPEC).sgml
-	mv $(OALSPEC)    $(OALSPEC)-specs
-	-rm  $(OALSPEC)-specs.html.zip
-	zip -r9 $(OALSPEC)-specs.html.zip   $(OALSPEC)-specs/
-
-specs: specs-ps specs-html
-
-
-## -----------------------------------------------------------
-## Annotated Version - including annotation seections
-##  (not Programmer's Guide, no examples)
-annotated-ps:
-	-rm -f  $(OALSPEC)-annote.ps
-	cp ent-marks-annotated.sgml ent-marks.sgml
-	$(DB2PS) $(OALSPEC).sgml
-	mv $(OALSPEC).ps $(OALSPEC)-annote.ps
-	zip -9 $(OALSPEC)-annote.ps.zip $(OALSPEC)-annote.ps
-
-annotated-html:
-	-rm -rf $(OALSPEC)-annote/
-	cp ent-marks-annotated.sgml ent-marks.sgml
-	$(DB2HTML) $(OALSPEC).sgml
-	mv $(OALSPEC)    $(OALSPEC)-annote
-	-rm  $(OALSPEC)-annote.html.zip
-	zip -r9  $(OALSPEC)-annote.html.zip $(OALSPEC)-annote/
-
-annotated: annotated-ps annotated-html
-
-## ----------------------------------------------------------
-## FULL Version - include's the RFC's and everything else
-##
-full-ps:
-	-rm -f  $(OALSPEC)-full.ps
-	cp ent-marks-full.sgml ent-marks.sgml
-	$(DB2PS) $(OALSPEC).sgml
-	mv $(OALSPEC).ps $(OALSPEC)-full.ps
-	zip -9 $(OALSPEC)-full.ps.zip $(OALSPEC)-full.ps
-
-full-html:
-	-rm -rf $(OALSPEC)-full/
-	cp ent-marks-full.sgml ent-marks.sgml
-	$(DB2HTML) $(OALSPEC).sgml
-	mv $(OALSPEC)    $(OALSPEC)-full
-	-rm  $(OALSPEC)-full.html.zip
-	zip -r9 $(OALSPEC)-full.html.zip   $(OALSPEC)-full/
-
-full: full-ps full-html
-
-
-## ----------------------------------------------------------
-## ZIP - create archive
-##
-
-
-
-clean:  db_clean texi_clean
-
-db_clean:
-	-rm -f $(OALSPEC).dvi
-	-rm -f $(OALSPEC).aux
-	-rm -f $(OALSPEC).log
-	-rm -f $(OALSPEC).tex
-	-rm -rf $(OALSPEC).junk
-	-rm -f \#*\#
-	-rm -f *~
-
-texi_clean:
-	@echo "Not done."
-
-install:
-	@echo "Not done."
-
-distclean: clean
-	-rm -rf \
-	$(OALSPEC)-full/	\
-	$(OALSPEC)-full.ps	\
-	$(OALSPEC)-annote/	\
-	$(OALSPEC)-annote.ps	\
-	$(OALSPEC)-specs/	\
-	$(OALSPEC)-specs.ps	\
-	*.zip
-
-
diff --git a/neo/openal/docs/alc-context.sgml b/neo/openal/docs/alc-context.sgml
deleted file mode 100644
index 3b0ae0f4..00000000
--- a/neo/openal/docs/alc-context.sgml
+++ /dev/null
@@ -1,846 +0,0 @@
-
-
-   <chapter id="alc">
-   <title>AL Contexts and the ALC API</title>
-   <para>
-     This section of the AL specification describes ALC, the AL Context API.
-     ALC is a portable API for managing &AL; contexts, including 
-     resource sharing, locking, and unlocking. Within the core AL API the 
-     existence of a Context is implied, but the Context is not exposed. The 
-     Context encapsulates the state of a given intance of the AL state machine. 
-   </para>
-   <para>
-     To avoid confusion with the AL related prefixes implied throughout
-     this document, the "alc" and "ALC_" prefixes have been made explicit
-     in the ALC related sections.
-   </para>
-   <para>
-     ALC defines the following objects: Contexts.
-   </para>
-   
-
-    <![ %Annote [
-      <note><title>Annotation (ALC entry points)</title><para>
-         While the actual ALC implemention might be supplied
-         as a separate library, or as part of a server or
-         daemon, the specification requires that the AL library
-         provides the actual ALC entry points.
-       </para></note>
-    ]]>
-
-    <![ %Annote [
-      <note><title>Annotation (ALC OS independend)</title><para>
-          ALC is meant to be OS-independent. OS specifics are
-          expected to be adressed by defining proper device
-          specifiers strings, and configuration attributes.
-          In this, ALC differs from GLX/WGL, which (due to the
-          tighter coupling with the window manager and
-          operating system) attempt to abstract OS specifics
-          to a much lesser degree.
-      </para></note>
-    ]]>
-
-
-    <![ %RFC [
-       <note id="rfc-bk001024-02"><title>RFC/ Issues </title><para>  
-          Hardware init/deinit, mapping many processes with
-          multiple contexts to many devices, sharing resources
-          among processes.
-      </para></note>
-    ]]>
-
-
-   <sect1>
-   <title>Managing Devices</title>
-   <para>
-      ALC introduces the notion of a Device. A Device can be,
-      depending on the implementation, a hardware device, or
-      a daemon/OS service/actual server. This mechanism also
-      permits different drivers (and hardware) to coexist
-      within the same system, as well as allowing several
-      applications to share system resources for audio, including 
-      a single hardware output device. The details are left
-      to the implementation, which has to map the available
-      backends to uniq7ue device specifiers (represented as
-      strings).
-   </para>
-    
-
-    <![ %Annote [
-      <note><title>Annotation (Network transparency)</title><para>
-      &AL; is meant for interoperability with &OGL;. Some
-      implementations of &OGL; bindings (e.g. GLX) are network 
-      transparent. The Device API theoretically allows for 
-      a network transparent AL implementation. No wire protocol
-      is specified, no specification or implementation is planned.
-       </para></note>
-    ]]>
-
-    <![ %Annote [
-      <note><title>Annotation (Device Enumeration)</title><para>
-         At this time, ALC does not provide mechanism to query
-         for available devices, and request device enumerations.
-         This might be added at a later time, depending on demand
-         and the ability to abstract OS and configuration specifics. 
-       </para></note>
-    ]]>
-
-    <![ %Annote [
-      <note><title>Annotation (X11 Audio)</title><para>
-        The ALC API intentionally mimicks XOpenDisplay
-        and XCloseDisplay. There is no X Audio standard,
-        although proposals have been made in the past.
-        The ALC API design accounts for this possibility
-        in a minimal way.
-      </para></note>
-    ]]>
-
-   <sect2>
-   <title>Connecting to a Device</title>
-   <para>
-      The alcOpenDevice function allows the application (i.e. the
-      client program) to connect to a device (i.e. the server).
-       <funcsynopsis><funcprototype> 
-      <funcdef> &device; * <function>alcOpenDevice</function></funcdef>
-      <paramdef> const &ubyte;* <parameter>deviceSpecifier</parameter></paramdef>      
-      </funcprototype></funcsynopsis>
-      If the function returns NULL, then no sound driver/device has
-      been found. The argument is a null terminated string that requests 
-      a certain device or device configuration. If NULL is specified,
-      the implementation will provide an implementation specific default. 
-    </para>
-    <![ %Annote [
-      <note><title>Annotation (Operating system dependencies)</title><para>
-         At this point, system specific configuration, and operating system 
-         specific details, are handled by leaving the details of the
-         string specifier to the implementation. The application coder
-         has to determine how he wants to obtain this information from the
-         OS or the user. If, at a later point, device enumeration and
-         configuration requests are supported through ALC, the resulting
-         string might still be operating system and implementation specific.
-      </para></note>
-    ]]>
-   </sect2>  
-
-   <sect2>
-   <title>Disconnecting from a Device</title>
-   <para>
-      The alcCloseDevice function allows the application (i.e. the
-      client program) to disconnect from a device (i.e. the server).
-       <funcsynopsis><funcprototype> 
-      <funcdef> &void; <function>alcCloseDevice</function></funcdef>
-      <paramdef> &device; * <parameter>deviceHandle</parameter></paramdef>      
-      </funcprototype></funcsynopsis>
-      If deviceHandle is NULL or invalid, an ALC_INVALID_DEVICE error
-      will be generated. Once closed, a deviceHandle is invalid.
-   </para>
-   </sect2>
-   </sect1>
- 
-
-
-
-   <sect1>
-   <title>Managing Rendering Contexts</title>
-   <para>
-      All operations of the AL core API affect a current AL context.
-      Within the scope of AL, the ALC is implied - it is not visible as
-      a handle or function parameter. Only one AL Context per INprocess 
-      can be current at a time. Applications maintaining multiple
-      AL Contexts, whether threaded or not, have to set the current
-      context accordingly. Applications can have multiple threads
-      that share one more or contexts. In other words, AL and ALC are
-      threadsafe.
-   </para>  
-   <para>
-      The default AL Context interoperates with a hardware device driver.
-      The application manages hardware and driver resources by
-      communicating through the ALC API, and configures and uses
-      such Contexts by issuing AL API calls. A default AL Context
-      processes AL calls and sound data to generate sound output.
-      Such a Context is called a Rendering Context. There might
-      be non-rendering contexts in the future.
-   </para>
-   <para>
-      The word "rendering" was chosen intentionally to emphasize the
-      primary objective of the AL API - spatialized sound - and the
-      underlying concept of AL as a sound synthesis pipeline that
-      simulates sound propagation by specifying spatial arrangements
-      of listeners, filters, and sources. If used in describing an
-      application that uses both &OGL; and &AL;, "sound rendering
-      context" and "graphics rendering context" should be used for
-      clarity. Throughout this document, "rendering" is used
-      to describe spatialized audio synthesis (avoiding ambiguous
-      words like "processing", as well as proprietary and restrictive
-      terms like "wavetracing"). 
-   </para>
-
-
-    <sect2>
-    <title>Context Attributes</title>
-    <para>
-       The application can choose to specify certain attributes for
-       a context. Attributes not specified explicitely are set to
-       implementation dependend defaults. 
-    </para>
-  <para>
-    <table>
-    <title>Context Attributes</title>
-    <tgroup cols="2" align="left" colsep=1 rowsep=1>
-    <colspec colname=c1>
-    <colspec colname=c2>
-    <thead>
-    <row>
-       <entry>Name</>
-       <entry>Description</>        
-    </row>
-    </thead>
-    <tbody>
-    <row>
-       <entry>ALC_FREQUENCY</>
-       <entry>Frequency for mixing output buffer, in units of Hz.</>  
-    </row>
-    <row>
-       <entry>ALC_REFRESH</>
-       <entry>Refresh intervalls, in units of Hz.</>  
-    </row>
-    <row>
-       <entry>ALC_SYNC</>
-       <entry>Flag, indicating a synchronous context.</>  
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-    </para>
-
-    <![ %Annote [
-      <note><title>Annotation (Refresh Control)</title><para>
-         Applications might have a fixed, or bounded, schedule for
-         state changes (e.g. synchronously with the GL framerate).
-         In this case it is desirable to specify the mixahead
-         interval (milliseconds), or refresh rate (Hz), for the 
-         mixing thread. This is especially important for a synchronous
-         context, where the application has to specify the refresh
-         interval it intends to keep.  
-      </para></note>
-    ]]>
-
-
-    <![ %RFC [
-       <note id="rfc-bk001026-05"><title>RFC / Mixing Buffer Configuration </title><para>  
-         ALC_RESOLUTION was originally used to specify the accuracy of the
-         mixing output buffer. For the time being this is not supported, but
-         could be added if mixing path and result accuracy control is desirable
-         to scale resource requirements.
-         A full ALC_FORMAT (including channel and other attributes) does not
-         make sense for rendering contexts, but will be necessary for PBuffers
-         (mix to memory). 
-      </para></note>
-    ]]>
-
-    <![ %RFC [
-       <note id="rfc-bk001026-01"><title>RFC / LOKI extensions </title><para>  
-      <programlisting>
-
-       ALC_SOURCES_HINT_LOKI, /* # of sources to pre-allocate */
-       ALC_BUFFERS_HINT_LOKI, /* # of buffers to pre-allocate */
-
-       ALC_CD_LOKI,           /* demand CD/DVD control */
-      
-      </programlisting>
-      </para></note>
-    ]]>
-    </sect2>
-
-
-    <sect2>
-    <title>Creating a Context</title>
-    <para>
-       A context is created using alcCreateContext. The device parameter
-       has to be a valid device. The attribute list can be NULL,
-       or a zero terminated list of integer pairs composed of valid
-       ALC attribute tokens and requested values.
-      <funcsynopsis><funcprototype> 
-      <funcdef> &context; * <function> alcCreateContext </function></funcdef>
-      <paramdef> const &device; * <parameter> deviceHandle </parameter></paramdef>
-      <paramdef> &int; * <parameter> attrList </parameter></paramdef>
-      </funcprototype></funcsynopsis>
-       Context creation will fail
-       if the application requests attributes that, by themselves,
-       can not be provided. Context creation will fail if the
-       combination of specified attributes can not be provided.
-       Context creation will fail if a specified attribute, or
-       the combination of attributes, does not match the default
-       values for unspecified attributes.
-    </para>
-   </sect2>
-
-    <sect2>
-    <title>Selecting a Context for Operation</title>
-    <para>
-      To make a Context current with respect to AL Operation (state
-      changes by issueing commands), alcMakeContextCurrent is used. 
-      The context parameter can be NULL or a valid context pointer.
-      The operation will apply to the device that the context was
-      created for. 
-      <funcsynopsis><funcprototype> 
-      <funcdef> &bool; <function> alcMakeContextCurrent </function></funcdef>
-      <paramdef> &context; * <parameter> context </parameter></paramdef>
-      </funcprototype></funcsynopsis>
-      For each OS process (usually this means for each application), only
-      one context can be current at any given time. All AL commands apply
-      to the current context. Commands that affect objects shared among
-      contexts (e.g. buffers) have side effects on other contexts.
-    </para>
-    <![ %Annote [
-      <note><title>Annotation (No Explicit Device)</title><para>
-         An ALC context is bound to the device it was created for.
-         The context carries this information, thus removing the
-         need to specify the device explicitely. Contexts can not
-         be made current for any other device aside from the one
-         they were created for. 
-       </para></note>
-    ]]>
-
-    <![ %Annote [
-      <note><title>Annotation (No Multiple Current)</title><para>
-          There is only one current context per process, even
-          in multithreaded applications, even if multiple
-          devices are used.   
-      </para></note>
-    ]]>
-
-
-    <![ %Annote [
-      <note><title>Annotation (Current NULL)</title><para>
-          The implementation is encouraged to exploit optimizations
-          possible if the application sets the current context
-          to NULL, indicating that no state changes are intended
-          for the time being. The application should not set the
-          current context to NULL if more state changes are
-          pending on the most recent, or another context created
-          for the same device.
-       </para></note>
-    ]]>
-
-    <![ %Annote [
-      <note><title>Annotation (Shared Objects)</title><para>
-         Buffers are shared among contexts. As mutiple contexts
-         can exist at the same time, the state of shared objects
-         is also shared among contexts.
-       </para></note>
-    ]]>
-
-    <![ %RFC [
-       <note id="rfc-bk001026-06"><title>RFC / Buffer Deletion </title><para>  
-         Buffers that have not yet been processed in another context
-         can not be deleted from any other context.  
-      </para></note>
-    ]]>
-    </sect2>
-
-    <sect2>
-    <title>Initiate Context Processing</title>
-    <para>
-      The current context is the only context accessible to state
-      changes by AL commands (aside from state changes affecting
-      shared objects). However, multiple contexts can be processed
-      at the same time. To indicate that a context should be
-      processed (i.e. that internal execution state like offset
-      increments are supposed to be performed), the application
-      has to use alcProcessContext.
-      <funcsynopsis><funcprototype> 
-      <funcdef> &void; <function>alcProcessContext</function></funcdef>
-      <paramdef> &context; * <parameter> context </parameter></paramdef>
-      </funcprototype></funcsynopsis>
-      Repeated calls to alcProcessContext are legal, and do not
-      affect a context that is already marked as processing. The
-      default state of a context created by alcCreateContext is
-      that it is not marked as processing. 
-    </para>
-
-    <![ %Annote [
-      <note><title>Annotation (Sync and async implementations)</title><para>
-      Unfortunately, the exact semantics of alcProcessContext is
-      not independend of the implementation. Ideally it should be completely 
-      transparent to the application whether the sound driver is threaded or 
-      synced. Unfortunately a synced context has to have its execution 
-      initiated by the application, which requires calls of 
-      alcProcessContext timed in accordance to the drivers mixahead,
-      or the rendering buffer will underflow. For a threaded driver,
-      the implementation is free to consider alcProcessContext 
-      a NOP once the context has been marked as processing.
-      </para><para>
-      One consequence is that an application that was developed
-      using a threaded implementation of AL might not work
-      properly with a synchronous implementation of AL (on
-      the other hand, an AL application that works using a
-      synchronous implementation is guaranteed to work with
-      a threaded implementation.
-      </para><para>
-      Enforcing alcProcessContext calls would defeat the purpose
-      of a threaded implementation. Permitting the AL implementation
-      to e.g. schedule optimizations based on alcProcessContext
-      calls would similarly obfuscate the exact semantincs.
-      Consequently, the application coder has to accept this 
-      implementation dependency, and has to rely on the ALC_SYNC
-      attribute to explicitely request a synchronous implementation.
-      The implementation can expect the application to be aware
-      of the additonal constraints imposed on alcProcessContext in
-      this case.   
-       </para></note>
-    ]]>
-
-    <![ %Annote [
-      <note><title>Annotation (Multiple Contexts and SYNC refresh)</title><para>
-       The application can request SYNC contexts or threaded contexts,
-       however, the implementation is not obliged to provide both, or provide
-       a mixture of both on the same device.
-       </para></note>
-    ]]>
-
-     
-    <![ %RFC [
-       <note id="rfc-bk001024-03"><title>RFC/ Implications for Networking</title><para>  
-         What does alcProcessContext imply for networking? 
-         For AL, will we add alFlush/alFinish?
-      </para></note>
-    ]]>
-   </sect2>
- 
-   <sect2>
-    <title>Suspend Context Processing</title>
-    <para>
-      The application can suspend any context from processing
-      (including the current one). To indicate that a context should be
-      suspended from processing (i.e. that internal execution state like 
-      offset increments is not supposed to be changed), the application
-      has to use alcSuspendContext.
-      <funcsynopsis><funcprototype> 
-      <funcdef> &void; <function>alcSuspendContext</function></funcdef>
-      <paramdef> &context; * <parameter> context </parameter></paramdef>
-      </funcprototype></funcsynopsis>
-      Repeated calls to alcSuspendContext are legal, and do not
-      affect a context that is already marked as suspended. The
-      default state of a context created by alcCreateContext is
-      that it is marked as suspended. 
-    </para>
-
-  <![ %Annote [
-      <note><title>Annotation (Sync and async implementations)</title><para>
-      Unfortunately, the exact semantics of alcSuspendContext is
-      also not independend of the implementation. For a threaded
-      implementation, alcSuspendContext is necessary to ensure a context
-      is not processed. For a synchronous implementation, omitting
-      alcProcessContext calls will ultimately have the same effect,
-      but will also generate rendering buffer underflow errors.
-      Again, the application coder that requests a synchronous
-      context using ALC_SYNC has to make sure that alcSuspendContext
-      is used accordingly.
-      </para></note>
-    ]]>
-
-    <![ %Annote [
-      <note><title>Annotation (Suspending vs. Muting a context)</title><para>
-         By setting Listener GAIN to zero, an application can mute a
-         context, and expect the implementation to bypass all rendering.
-         However, the context is still processing, and the internal
-         execution state is still updated accordingly. Suspending a
-         context, whether muted or not, will incidentally suspend rendering
-         as well. However, it is the application's responsibility to
-         prevent artifacts (e.g. by proper GAIN control to fade in and
-         out). It is recommended to mute a context before suspending. 
-       </para></note>
-    ]]>
-
-    <![ %Annote [
-      <note><title>Annotation (Current Context Suspended)</title><para>
-          It is possible to make a suspended context current, or
-          suspend the current context. In this case, the implementation
-          is still obliged to immediately verify AL commands as they
-          are issued, and generate errors accordingly. The implementation
-          is permitted to postpone propagating the actual state changes
-          until the context is marked for processing again, with the
-          exception of dereferencing data (e.g. buffer contents).
-          For efficiency reasons (memory usage), most if not all
-          AL commands applied to a suspended context will usually
-          be applied immediately. State changes will have to be applied
-          in the sequence they were requested. It is possible to
-          use suspension of a current context as an explicit locking
-          (to enforce apparent synchronicity), but execution is still
-          guaranteed to be in sequence, and the implementation is not
-          expected to optimize this operation. A typical use would
-          be setting up the initial configuration while loading a
-          scene.  
-       </para></note>
-    ]]>
-
-    <![ %Annote [
-      <note><title>Annotation (Release of Hardware Resources)</title><para>
-         The specification does not guarantee that the implementation
-         will release hardware resources used by a suspended context.
-         This might well depend on the details of the hardware and driver.
-         Neither a muted context nor a suspended context can be expected
-         to free device resources. If all contexts for a given device
-         are suspended, and no context of this device is current, the 
-         implementation is expected to release all hardware resources if possible.
-       </para></note>
-    ]]>
-
-
-    </sect2>
-
-
-    <sect2>
-    <title>Destroying a Context</title>
-    <para>
-      <funcsynopsis><funcprototype> 
-      <funcdef> &void; <function> alcDestroyContext </function></funcdef>
-      <paramdef> &context; * <parameter> context </parameter></paramdef>
-      </funcprototype></funcsynopsis>
-       The correct way to destroy a context is to first release it using
-       alcMakeCurrent and NULL. Applications should not attempt to destroy 
-       a current context.
-    </para>
-   </sect2>
-   </sect1>
-
-
-
-    <sect1>
-    <title>ALC Queries</title>
-   
-    <sect2>
-    <title>Query for Current Context</title>
-    <para>
-      The application can query for, and obtain an handle to, the current
-      context for the application. If there is no current context, NULL is 
-      returned. 
-      <funcsynopsis><funcprototype> 
-      <funcdef> &context; * <function>alcGetCurrentContext</function></funcdef>
-      <void>
-      </funcprototype></funcsynopsis>
-    </para>
-   </sect2>
-
-   <sect2>
-    <title>Query for a Context's Device</title>
-    <para>
-      The application can query for, and obtain an handle to, the device
-      of a given context. 
-      <funcsynopsis><funcprototype> 
-      <funcdef> &device; * <function>alcGetContextsDevice</function></funcdef>
-      <paramdef> &context; * <parameter> context </parameter></paramdef>
-      </funcprototype></funcsynopsis>
-    </para>
-    </sect2>
-
-
-   <sect2>
-   <title>Query For Extensions</title>
-   <para>
-     To verify that a given extension is available for the current
-     context and the device it is associated with, use 
-        <funcsynopsis>
-	  <funcprototype>
-	    <funcdef>&bool;<function>IsExtensionPresent</function></funcdef>
-            <paramdef> const &device; * <parameter>deviceHandle</parameter></paramdef>  
-	    <paramdef>const &ubyte; * <parameter> extName </parameter></paramdef>
-	  </funcprototype>
-	</funcsynopsis>
-     A NULL name argument returns FALSE, as do invalid and unsupported string
-     tokens. A NULL deviceHandle will result in an INVALID_DEVICE error.
-    <![ %Annote [
-      <note><title>Annotation (Exlicit Device Parameter)</title><para>
-         Certain ALC Extensions might be relevant to context creation
-         (like additional attributes, or support for unusual multi-context
-         combinations), thus the application might have to query these
-         before a context is created. On the other hand, ALC Extensions
-         are specific to the device.
-       </para></note>
-    ]]>
-   </para>
-   </sect2>
-
-   <sect2>
-     <title>Query for Function Entry Addresses</title>
-      <para>
-       The application is expected to verify the applicability of
-       an extension or core function entry point before requesting
-       it by name, by use of alcIsExtensionPresent.
-       <funcsynopsis><funcprototype> 
-       <funcdef> &void; * <function> alcGetProcAddress</function></funcdef>
-       <paramdef> const &device; * <parameter>deviceHandle</parameter></paramdef>  
-       <paramdef> const &ubyte; * <parameter> funcName </parameter></paramdef>      
-       </funcprototype></funcsynopsis> 
-       Entry points can be device specific, but are not context specific.
-       Using a NULL device handle does not guarantee that the entry
-       point is returned, even if available for one of the available
-       devices. Specifying a NULL name parameter will cause an
-       ALC_INVALID_VALUE error.
-    </para>
- 
-   </sect2>
-   <sect2>
-    <title>Retrieving Enumeration Values</title>
-    <para>
-       Enumeration/token values are device independend, but tokens
-       defined for extensions might not be present for a given device.
-       Using a NULL handle is legal, but only the tokens defined by
-       the AL core are guaranteed. Availability of extension tokens
-       dependends on the ALC extension.
-       <funcsynopsis><funcprototype> 
-       <funcdef> &uint; <function> alcGetEnumValue </function></funcdef>
-       <paramdef> const &device; * <parameter>deviceHandle</parameter></paramdef>  
-       <paramdef> const &ubyte; <parameter> enumName </parameter></paramdef>      
-       </funcprototype></funcsynopsis> 
-       Specifying a NULL name parameter will cause an
-       ALC_INVALID_VALUE error.
-    </para> 
-   </sect2>
-
-    <sect2>
-    <title>Query for Error Conditions</title>
-    <para>
-      ALC uses the same conventions and mechanisms as AL for error
-      handling. In particular, ALC does not use conventions
-      derived from X11 (GLX) or Windows (WGL).
-      The alcGetError function can be used to query ALC errors.
-      <funcsynopsis><funcprototype> 
-      <funcdef>&enum;<function>alcGetError</function></funcdef>
-      <paramdef> &device; * <parameter>deviceHandle</parameter></paramdef>
-      </funcprototype></funcsynopsis>
-      Error conditions are specific to the device.
-     </para>
-
-    <para>
-    <table>
-    <title>Error Conditions</title>
-    <tgroup cols="2" align="left" colsep=1 rowsep=1>
-    <colspec colname=c1>
-    <colspec colname=c2>
-    <thead>
-    <row>
-       <entry>Name</>
-       <entry>Description</>        
-    </row>
-    </thead>
-    <tbody>
-    <row>
-       <entry>ALC_NO_ERROR</>
-       <entry>The device handle or specifier does name an accessible driver/server.</>  
-    </row>
-    <row>
-       <entry>ALC_INVALID_DEVICE</>
-       <entry>The Context argument does not name a valid context.</>  
-    </row>
-    <row>
-       <entry>ALC_INVALID_CONTEXT</>
-       <entry>The Context argument does not name a valid context.</> 
-    </row>
-    <row>
-       <entry>ALC_INVALID_ENUM</>
-       <entry>A token used is not valid, or not applicable.</>  
-    </row>
-    <row>
-       <entry>ALC_INVALID_VALUE</>
-       <entry>An value (e.g. attribute) is not valid, or not applicable.</>  
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-    </para>
- 
-
-    <![ %Annote [
-      <note><title>Annotation (No UNDERFLOW error)</title><para>
-         Applications using synchronous (and, depending on CPU 
-         load, even an asynchronous implementation itself) might
-         fail to prevent underflow of the rendering output
-         buffer. No ALC error is generated in these cases,
-         as it this error condition can not be applied to a
-         specific command. 
-       </para></note>
-    ]]>
-  </sect2>
-
-  <sect2>
-  <title>String Query</title>
-  <para>
-     The application can obtain certain strings from ALC.
-      <funcsynopsis><funcprototype> 
-      <funcdef>const &ubyte; * <function>alcGetString</function></funcdef>
-      <paramdef> &device; * <parameter>deviceHandle</parameter></paramdef>      
-      <paramdef> &enum; <parameter> token </parameter></paramdef>      
-      </funcprototype></funcsynopsis>
-     For some tokens, NULL is is a legal value for the deviceHandle.
-     In other cases, specifying a NULL device will generate an 
-     ALC_INVALID_DEVICE error.
-  </para>
-  <para>
-    <table>
-    <title>String Query Tokens</title>
-    <tgroup cols="2" align="left" colsep=1 rowsep=1>
-    <colspec colname=c1>
-    <colspec colname=c2>
-    <thead>
-    <row>
-       <entry>Name</>
-       <entry>Description</>        
-    </row>
-    </thead>
-    <tbody>
-    <row>
-       <entry>ALC_DEFAULT_DEVICE_SPECIFIER</>
-       <entry>The specifier string for the default device (NULL handle is legal).</>  
-    </row>
-    <row>
-       <entry>ALC_DEVICE_SPECIFIER</>
-       <entry>The specifier string for the device (NULL handle is not legal).</>  
-    </row>
-    <row>
-       <entry>ALC_EXTENSIONS</>
-       <entry>The extensions string for diagnostics and printing.</>  
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-    </para>
-
-   <para>
-     In addition, printable error message strings are provided for 
-     all valid error tokens, including ALC_NO_ERROR, ALC_INVALID_DEVICE,
-     ALC_INVALID_CONTEXT, ALC_INVALID_ENUM, ALC_INVALID_VALUE.
-   </para>
-  </sect2> 
-
-  <sect2>
-  <title>Integer Query</title>
-  <para>
-    The application can query ALC for information using an integer
-    query function.
-      <funcsynopsis><funcprototype> 
-      <funcdef>  &void; <function>alcGetIntegerv</function></funcdef>
-      <paramdef> &device; * <parameter>deviceHandle</parameter></paramdef>
-      <paramdef> &enum; <parameter> token </parameter></paramdef>     
-      <paramdef> &sizei; <parameter> size </parameter></paramdef>     
-      <paramdef> &int; <parameter> dest </parameter></paramdef>     
-      </funcprototype></funcsynopsis>
-    For some tokens, NULL is a legal deviceHandle. In other
-    cases, specifying a NULL device will generate an ALC_INVALID_DEVICE 
-    error. The application
-    has to specify the size of the destination buffer provided.
-    A NULL destination or a zero size parameter will cause ALC to ignore
-    the query.
-  </para>
-
-  <para>
-    <table>
-    <title>Integer Query Tokens</title>
-    <tgroup cols="2" align="left" colsep=1 rowsep=1>
-    <colspec colname=c1>
-    <colspec colname=c2>
-    <thead>
-    <row>
-       <entry>Name</>
-       <entry>Description</>        
-    </row>
-    </thead>
-    <tbody>
-    <row>
-       <entry>ALC_MAJOR_VERSION</>
-       <entry>Major version query.</>  
-    </row>
-    <row>
-       <entry>ALC_MINOR_VERSION</>
-       <entry>Minor version query.</>  
-    </row>
-    <row>
-       <entry>ALC_ATTRIBUTES_SIZE</>
-       <entry>The size required for the zero-terminated attributes
-               list, for the current context. NULL is an invalid
-               device. NULL (no current context for the
-               specified device) is legal.</> 
-    </row>
-    <row>
-       <entry>ALC_ALL_ATTRIBUTES</>
-       <entry>Expects a destination of ALC_CURRENT_ATTRIBUTES_SIZE,
-               and provides the attribute list for the current
-               context of the specified device. NULL is an invalid
-               device. NULL (no current context for the
-               specified device) will return the default attributes
-               defined by the specified device.</>  
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-    </para>
- 
-    <![ %Annote [
-      <note><title>Annotation (Backward Compatibility)</title><para>
-      Backward compatibility is guaranteed only for minor revisions.
-      Breaking ABI backwards compatibility will require a issuing
-      major revision.
-      </para></note>
-    ]]>
-
-    <![ %RFC [
-       <note id="rfc-bk001026-02"><title>RFC / Version Matching </title><para>  
-        The ALC version can be different from the AL version. 
-        The ALC major version has to be identical between
-        application and driver (client and server). 
-        The ALC minor version can differ between client and server, 
-        and the minimum of the two minor version numbers is returned.
-      </para></note>
-    ]]>
-  
-    <![ %RFC [
-       <note id="rfc-bk001027-03"><title>RFC / Device Enumeration </title><para>  
-         ALC_NUM_DEVICE_SPECIFIERS could be provided as an extension,
-         but it requires the number of device configurations to be
-         finite and small, as they are to be represented by strings.
-      </para></note>
-    ]]>
-
-   </sect2> 
-   </sect1>
-
-
-
-   <sect1>
-   <title>Shared Objects</title>
-   <para>
-      For efficiency reasons, certain AL objects are shared across
-      ALC contexts. At this time, AL buffers are the only shared
-      objects.
-   </para>
-
-    <![ %RFC [
-       <note id="rfc-bk001024-01"><title>RFC/ Sharing Sources?</title><para>  
-          Mike Kelly from Dynamix describes an application scenario with
-          multiple camera views of the same scene (implemented using
-          several viewports on a single, "split screen", context)
-          in which he needs multiple listeners (one per view) to
-          preceive the same sources, with the rendering results of
-          each listener to mixed for a single output device. As an
-          alternative to permitting multiple listeners within a context,
-          it might be preferable to introduce a mechanism to explicitely
-          share certain AL objects among contexts, at a later time.
-          It is not desirable to share Sources by default, especially
-          as the more common multi-listener application is expected to
-          maintain listeners with disjunct sets of sources. 
-      </para></note>
-    ]]>
-   <sect2>
-   <title>Shared Buffers</title>
-   <para>
-      Buffers are shared among contexts. The processing state of a buffer
-      is determined by the dependencies imposed by all contexts, not just
-      the current context. This includes suspended contexts as well as
-      contexts that are processing.  
-   </para>
-   </sect2>
-   </sect1>
- 
-
-   </chapter>
diff --git a/neo/openal/docs/api-reference.html b/neo/openal/docs/api-reference.html
deleted file mode 100644
index 37607702..00000000
--- a/neo/openal/docs/api-reference.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<html>
-
-<head>
-<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1252">
-<title>OpenAL API Reference</title>
-</head>
-
-<body>
-<h1>OpenAL API Reference</h1>
-  <p>
-     This document has been removed.
-  </p>
-
-  </body>
-</html>
diff --git a/neo/openal/docs/app-annotations.sgml b/neo/openal/docs/app-annotations.sgml
deleted file mode 100644
index 6eabf4b5..00000000
--- a/neo/openal/docs/app-annotations.sgml
+++ /dev/null
@@ -1,297 +0,0 @@
-
-   <appendix>
-   <title>Miscellaneous Annotations</title>
-
-   <section id="reverb-objects">
-   <title>Reverberation Objects?</title>
-   <para>
-     In a generalization of the I3DL2 Extension for
-     listener specific reverberation effects, it might
-     be best to implement Reverb Objects. A Reverb Object
-     is one example of a parametrized filter. Each
-     such object encapsulates a set of attributes (the
-     filter parameters). Sources and Listener alike
-     have an attribute that allows the application coder
-     to choose a reverb object for application either
-     at the origin of the sound, or at the position of
-     the listener. Initial implementation would only
-     support one Reverb Object per Context, applied at
-     the listener position.
-    </para>
-    <para>
-      The I3DL2 Environment is a filter that alters the 
-      way the user experiences the virtual world. As 
-      filters require DSP operations it is limited by hardware
-      processing capabilities.
-    </para>
-    <para>
-      The I3DL2 Environment models the surroundings of the 
-      listener by simplifying the presumed acoustic properties
-      of those surroundings into a small set of parameters.
-      It allows to reproduce the effects of sound reflections 
-      and reverberation caused by walls and obstacles, and
-      the muffling effects of obstacles inside environments 
-      or partitions between environments.
-    </para>
-    <para>
-      Environment properties: 
-      Early reflections level and delay. 
-      Late reverberation level and delay, low- and high-frequency decay time. 
-      Reverberation diffusion, density and spectrum. 
-    </para>
-    <para>
-      Source properties: 
-      Direct path intensity and spectrum. 
-      Reverberation intensity and spectrum.
-    </para>            
-   </section>
-
-   <section id="al-objects-filters">
-      <title>On Filters</title>
-      <para>
-        RFC/bk000502: Filters as the general concept of modifiers?
-        Environment as a special case filter? 
-        Can we break down EAX environments into ReverbFilters where we
-        parametrize late reflections, and ReflectFilters, which fake
-        early reflections? Do we need this separation if we have
-        calculated or distinct echo effect reflections instead of
-        stocastic ones? Does it make sense to superimpose a general
-        reverb kicking in after a delay t, with reflections (random
-        or not) or should reverb only kick in after reflections are
-        discarded?
-      </para>
-      <para>
-        RFC/bk000502: old text.
-        (Environment) Properties: 
-        Geometry - geometry is specified using an immediate mode API which is 
-        similar to OpenGL. Support for scene lists are also provided on a basis 
-        similar to OpenGL's display lists. 
-        Materials - specify the absorptive and reflective qualities of a piece 
-        of geometry. &AL; should provide a facility for accessing preset 
-        materials, and storing and retrieving new materials at runtime. 
-      </para>
-      <para>
-        RFC/nn: Atmospheric/ambient properties? 
-        REF/nn: A3D 2.0 IA3dMaterial 
-      </para>
- 
-      <section id="al-objects-filters-atmospheric">
-      <title>Atmospheric Filter</title>
-      <para>
-        The atmospheric filter the effects of media with constant density,
-        on propagating sound waves. The effect of the atmospheric filter
-        is distance dependent. Atmospheric effects can be parameterized
-        by specifying attenuation per unit distance, the scale for the
-        unit distance, for one of a minimum of two frequency ranges
-        (low frequency and high frequency roll-off).
-      </para>
-      <para>
-        RFC/bk000502: do we specify the atmospheric filter per-source?
-        The effect is clearly dominated by the most dense medium, but
-        we have little chance simulating crossings between different
-        media this way. Distance attenuation in media clearly depends
-        on source and listener being embedded in the same medium,
-        without any obstruction along the LOS.
-      </para>
-      </section>
-
-      <section id="al-objects-filters-listenerreverb">
-      <title>Listener Reverb</title>
-      <para>
-        Listener Reverb is a parameterized filter that modifies the sound at
-        listener position to emulate effects of the surroundings, namely 
-        effects of late reflections. Without simulating sound propagation
-        this reverb accounts for the averaged outcome of different arrangements
-        of reflecting/absorbing surfaces around the listener. 
-      </para>
-      </section>
-
-      <section id="al-objects-filters-sourcereverb">
-      <title>Source Reverb</title>
-      <para>
-        There is currently no support for reverb at the source position.
-      </para>
-      </section>
-
-      <section id="al-objects-filters-reflection">
-      <title>Reflection Filter</title>
-      <para>
-        First order reflection (and, if support, O(n) reflection for small n)
-        can choose to simulate the effects of different materials by 
-        parametrizing reflection filters.
-        There is currently no support for reflections.
-      </para>
-      </section>
-
-      <section id="al-objects-filters-transmission">
-      <title>Transmission Filter</title>
-      <para>
-        Sound propagation along the LOS can pass through obstructions
-        specified as convex polygons. The effects of lossy transmission
-        can be approximated by applying a once-off filtering. Like
-        atmospheric filters, this can be a frequency-dependent roll-off,
-        unlike atmospheric filters this does not take distance into
-        account. Transmission filters can be used to emulate losses
-        on crossing separating surfaces between different media (water/air
-        borders).
-        There is currently no support for transmissions.
-      </para>
-      </section>
-    </section>
-    
-    <section>
-    <title>Parameterization over Time</title>
-    <para>
-       Fading and cross-fading. There are three ways to handle any kind
-       of gain control as a function of time:
-       <itemizedlist>
-       <listitem>
-       <para>
-         manipulate gain per frame/sufficiently often
-       </para>
-       </listitem>
-       <listitem>
-       <para>
-         parameterize, i.e. specify a target gain, 
-          a duration over which to interpolate, and an interpolation function
-       </para>
-       </listitem>
-       <listitem>
-       <para>
-         provide an buffer that indicates amplitude, stretched over
-         a duration/by a frequency
-       </para>
-       </listitem>
-      The last mechanism also works for early reflections and echos,
-      and any other temporal filtering. The first and second approach 
-      also work for attributes like Pitch.
-    </para>
-    </section>
-
-
-   <section>
-   <title>On Geometry</title>
-     <para>
-        Both the A3D API and implementation as well as EAX related utilities
-        like EAGLE seem to indicate that any effort to handle scene geoemtry
-        at API level will inevitably duplicate modules found in common game 
-        engines for purposes of collision detection, path planning, AI
-        support, visibility and sound propagation culling.
-      </para>
-      <para>
-        In other words, any such effort will inevitably lead to competing
-        subsystems and multiple use of processing and memory resources to
-        implement the same functionality. While it makes sense to provide
-        templates, examples, and even utilities like EAGLE and SDK's to
-        developers, it makes no sense to integrate any such functionality
-        with the API.
-      </para>
-      <para>
-        The geometry based processing inevitably leads to a scene graph
-        API, with all the resulting problems. On closer examination it
-        seems that the specification and storage of source and listener
-        positions is a red herring.
-      </para>
-      <para>
-        Second and higher order reflections seem to be irrelevant.
-      </para>
-      <para>
-        Reflection can be faked by stochastic means, but an actual
-        presence/immersion effect will require smooth transitions
-        depending on the continuous change of distance between
-        sources, listener, and dominant reflectors.
-      </para>
-      <para>
-        Dominant reflectors are presumed to be 1st order,
-        with material properties that incur little or no loss
-        (or even provide amplification), and significant
-        surface area.
-      </para>
-      <para>
-        Transmission loss through dense media is equivalent to
-        the distance attenuation model.
-      </para>
-      <para>
-        Refraction/reflection loss at border surfaces separating
-        media....
-      </para>
-      <para>
-        No explicit geometry to check whether there is any indirect
-        (1st order reflection, multiple reflections) path between
-        source and listener - the application is usually better
-        equipped to handle this (portal states, PHS). The benefit
-        of forcing the AL implementation to check for obstruction
-        (object inersecting LOS) is questionable at best - LOS
-        checking is also better done by the main application.
-        In essence, the application might even handle the 1st
-        order reflections IFF we provide the means to generate
-        early reflection instead of rolling dice, and if we
-        make it cheap to enable a path between a source and
-        the listener complete with a material. Come to think of
-        it: the implementation guarantees n paths with m filters
-        one of which is transmission or reflection, one is
-        distance attenuation, one is source reverb, one is
-        listener reverb....
-      </para>
-   </section>
-  
-   <section>
-   <title>No ALU</title>
-      <note id="bk000019-01"><title>RFC</title><para>
-         ALU, like GLU, is a problem: linkage dependencies, multiple drivers
-         sharing one ALU etc. It would be best to not clutter the specification
-         with ALU/ALUT. Any support code/template repository/SDK can be 
-         maintained as a separate open source project.
-      </para></note>
-     <para>
-       ALU provides operations that do not affect driver or hardware state.
-       These can be resampling/conversion methods or other sample data
-       processing, or utilities for (optimized) filter generation. ALU
-       does not provide I/O operations.  At this time,
-       ALU is not specified and not implemented.
-     </para>
-     <para>
-       RFC/bk000502: GLU is becoming a bit of a problem right now, with
-       most applications avoiding it as they load GL DLL's explicitely,
-       but do not trust the ABI specification enough to link against GLU,
-       and not bothering to load it. A vendor-neutral open source ALU
-       works for me, but we can not accept link time dependencies to AL.
-       ALU (like GLU) is meant for minimal convenience, in small
-       building blocks, it is not meant as an SDK. 
-     </para>   
-     <para>
-       RFC/bk000502: old text.
-       ALU is the AL Utility library, and provide functions for performing audio 
-       conversion, preset material properties, and a compatability layer for 
-       legacy stereo format audio. This includes support for panning and per 
-       channel volume control.
-     </para> 
-     <para>
-       RFC/nn: Er, what else does the world of 2D sound usually need? 
-     </para>
-   </section>
- 
-
-   <section>
-   <title>No ALUT</title>
-     <para>
-      Application coders frequently request additional support for sound
-      handling to the extent of sophisticated SDKs. It is expected that
-      SDK vendors will provide such products on top of AL. ALUT (in analogy
-      to GLUT) would constitute an "official" SDK if desired. At this time,
-      ALUT is not specified and not implemented, and not intended to be part
-      of &AL; proper.
-     </para>
-     <para>
-      ALUT is a utility toolkit for &AL;. It sits on top of ALC.
-      It provides convenience functions for accessing files, for playing sounds, 
-      and an API for accessing CDROM functionality.      
-     </para>
-   </section>
-
-<!-- Driver DDK section
-http://www.microsoft.com/directx/
-http://www.microsoft.com/DDK/DDKdocs/win98ddk/ds-ddk_8eas.htm
- -->
-
-   </appendix>
\ No newline at end of file
diff --git a/neo/openal/docs/app-constants.sgml b/neo/openal/docs/app-constants.sgml
deleted file mode 100644
index 8c852e20..00000000
--- a/neo/openal/docs/app-constants.sgml
+++ /dev/null
@@ -1,43 +0,0 @@
-
-   <appendix>
-   <title>Global Constants</title> 
-     <para>
-    <table>
-    <title>Misc. &AL; Global Constants</title>
-    <tgroup cols="4" align="left" colsep=1 rowsep=1>
-    <colspec colname=c1>
-    <colspec colname=c2>
-    <thead>
-    <row>
-       <entry>Name            </>
-       <entry>&OAL; datatype  </>
-       <entry>Description     </>        
-       <entry>Literal value   </>  
-    </row>
-    </thead>
-    <tbody>
-    <row>
-        <entry> ALenum                               </entry>
-        <entry> FALSE                                </entry>
-        <entry> boolean false                        </entry>
-        <entry> 0                                    </entry>
-    </row>
-    <row>
-        <entry> ALenum                               </entry>
-        <entry> TRUE                                 </entry>
-        <entry> boolean true                         </entry>
-        <entry> 1                                    </entry>
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-    </para>
-
-
-    <![ %RFC [
-      <note id="bk000621-01"><title>RFC</title><para>  
-        NONE, ONE, ZERO needed?
-      </para></note>
-    ]]>
-    </appendix>
-
diff --git a/neo/openal/docs/app-extensionprocess.sgml b/neo/openal/docs/app-extensionprocess.sgml
deleted file mode 100644
index 778c0912..00000000
--- a/neo/openal/docs/app-extensionprocess.sgml
+++ /dev/null
@@ -1,36 +0,0 @@
-
-   <appendix>
-   <title>Extension Process</title> 
-   <para>
-     There are two ways to suggest an Extension to AL or ALC.
-     The simplest way is to write an ASCII text that matches
-     the following template:
-
-     <literallayout>
-
-         RFC:         rfc-iiyymmdd-nn
-         Name:        (indicating the purpose/feature)
-         Maintainer:  (name and spam-secured e-mail)
-         Date:        (last revision)
-         Revision:    (last revision)
-
-         new enums
-         new functions
-
-         description of operation
-
-     </literallayout>
-
-    Such an RFC can be submitted on the &AL; discussion
-    list (please use RFC in the Subject line), or send to the
-    maintainer of the &AL; specification. If you are shipping
-    an actual implementation as a patch or as part of the
-    &AL; CVS a formal writeup is recommend. In this case,
-    the Extension has to be described as part of the
-    specification, which is maintained in DocBook SGML
-    (available for UNIX, Linux and Win32). The SGML source of
-    the specification is available by CVS, and the Appendix
-    on Extensions can be used as a template. Contact the
-    maintainer for details.
-   </para> 
-   </appendix>
diff --git a/neo/openal/docs/app-extensions.sgml b/neo/openal/docs/app-extensions.sgml
deleted file mode 100644
index 1f4b3b92..00000000
--- a/neo/openal/docs/app-extensions.sgml
+++ /dev/null
@@ -1,754 +0,0 @@
-
-   <appendix>
-   <title>Extensions</title>
-    <para>
-       Extensions are a way to provide for future expansion of the &AL; API. 
-       Typically, extensions are specified and proposed by a vendor, and
-       can be treated as vendor neutral if no intellectual property
-       restrictions apply. Extensions can also be specified as, or
-       promoted to be, ARB extensions, which is usually the final step
-       before adding a tried and true extension to the core API. ARB
-       extensions, once specified, have mandatory presence for
-       backwards compatibility. The handling of vendors-specific or
-       multi-vendor extensions is left to the implementation. The IA-SIG
-       I3DL2 Extension is an example of multi-vender extensions to 
-       the current &AL; core API. 
-     </para>
-
-    <sect1>
-    <title>Extension Query</title>
-     <para>
-       To use an extension, the application will have to obtain function addresses 
-       and enumeration values. Before an extension can be used, the application will 
-       have to verify 
-       the presence of an extension using IsExtensionPresent(). The application 
-       can then retrieve the address (function pointer) of an extension entry 
-       point using GetProcAddress. Extensions and entry points can be 
-       Context-specific, and the application can not count on an Extension being available
-       based on the mere return of an entry point. The application also
-       has to maintain pointers on a per-Context basis.
-
-        <funcsynopsis>
-	  <funcprototype>
-	    <funcdef> &bool; <function>IsExtensionPresent</function></funcdef>
-	    <paramdef> const &ubyte; * <parameter>extName</parameter></paramdef>
-	  </funcprototype>
-	</funcsynopsis>
-
-      Returns TRUE if the given extension is supported for the current
-      context, FALSE otherwise.
-      </para>
-
-      <![ %Annote [
-      <note id="ann-bk000721-22"><title>Annotation (IsExtensionPresent)</title><para>
-        This function is inspired by the GLU addition, but placed in
-        the core API as we intend to avoid a separate ALU. This function 
-        avoids potential string overflow and string parsing issues (strstr)
-        raised by GetString( EXTENSIONS ).
-       </para></note>
-      ]]>
-
-
-     <![ %Annote [
-      <note><title>Annotation/ EXTENSIONS</title><para>
-         GetString( EXTENSIONS ) is supported as well, as it allows for
-         easy archiving and priting of the list of supported extensions.
-       </para></note>
-     ]]>
-     </sect1>
-
-     <sect1>
-     <title>Retrieving Function Entry Addresses</title>
-      <para>
-       <funcsynopsis><funcprototype> 
-       <funcdef> &void;* <function>GetProcAddress</function></funcdef>
-       <paramdef> const &ubyte; * <parameter>funcName</parameter></paramdef>      
-       </funcprototype></funcsynopsis> 
-       Returns NULL if no entry point with the name funcName can be found.
-       Implementations are free to return NULL if an entry point is present,
-       but not applicable for the current context. However the specification 
-       does not guarantee this behavior. 
-    </para>
-    <para>
-       Applications can use GetProcAddress to obtain core API entry points,
-       not just extensions. This is the recommended way to dynamically load
-       and unload &AL; DLL's as sound drivers.
-    </para>
-
-     <![ %RFC [
-      <note><title>RFC/bk000504:</title><para>  
-       Original spec required all addresses are Context independent. 
-       This matches the Linux &OGL; ABI specification, but imposes
-       additional implementation constraints. For now, the specification
-       does not guarantee this.
-     </para></note>
-     ]]>
-    </sect1>
-
-
-    <sect1>
-    <title>Retrieving Enumeration Values</title>
-    <para>
-       To obtain enumeration values for extensions, the application has 
-       to use GetEnumValue of an extension token. Enumeration values are
-       defined within the &AL; namespace and allocated according to
-       specification of the core API and the extensions, thus they are
-       context-independent.
-       <funcsynopsis><funcprototype> 
-       <funcdef> &uint; <function> GetEnumValue </function></funcdef>
-       <paramdef> const &ubyte;<parameter> enumName </parameter></paramdef>      
-       </funcprototype></funcsynopsis> 
-       Returns 0 if the enumeration can not be found. The presence of an
-       enum value does not guarantee the applicability of an extension
-       to the current context. A non-zero return indicates merely that
-       the implementation is aware of the existence of this extension.
-       Implementations should not attempt to return 0 to indicate that
-       the extensions is not supported for the current context. 
-     </para> 
-
-     <![ %Annote [
-      <note><title>Annotation/ enums with value zero</title><para>
-          The literal value 0 is guaranteed for a number of AL
-          enums, such as  FALSE, NONE, ZERO. As with GL applications
-          might employ sloppy use of this identity. It also means
-          that enums with zero value can not be queried through
-          GetEnumValue, a minor flaw given the constraints of
-          ABI backward compatibility. The recommended value to
-          compare GetEnumValue results with is NONE.
-      </para></note>
-    ]]>
-    </sect1>
-
-   <sect1>
-   <title>Naming Conventions</title>
-   <para>
-      Extensions are required to use a postfix that separates the
-      extension namespace from the core API's namespace.
-      For example, an ARB-approved extension would use
-      "_ARB" with tokens (ALenum), and "ARB" with commands (function
-      names). A vendor specific extension uses a vendor-chosen
-      postfix, e.g. Loki Extensions use "_LOKI" and "LOKI",
-      respectively.
-   </para>
-   </sect1>
-
-    <sect1>
-    <title>ARB Extensions</title>
-   <para>
-      There are no ARB Extensions defined yet, as the ARB has
-      yet to be installed.
-   </para>
-   </sect1>
-
-  
-   <![ %Ext1 [
-   <sect1>
-   <title>Other Extension</title> 
-   <para>
-      For the time being this section
-      will list externally proposed extensions, namely 
-      the extension based on the IASIG Level 2 guideline.
-   </para>
-
-
-
-   <sect2>
- 
-   <title>IA-SIG I3DL2 Extension</title> 
-   
-   <para>
-      The IA-SIG I3DL2 guideline defines a set of parameters to control
-      the reverberation characteristics of the environment the listener
-      is located in, as well as filtering or muffling effects applied to
-      individual Sources (useful for simulating the effects of obstacles
-      and partitions). These features are supported by a vendor neutral
-      extension to  &AL; (TBA).
-      The 
-      <ulink 
-       url="http://www.iasig.org/wg/3dwg/3dwg.htm"
-       type="http">IA-SIG 3D Level 2 rendering guideline</ulink>
-      provides related information. 
-   </para>
-
-   <![ %Scratch [
-   <![ %RFC [
-     <note id="rfc-bk000626-07"><title>RFC: Global Attributes</title><para>  
-     Do we need global setters for these:
-     DIRECT_IASIG/DIRECT_HIGH_FREQUENCY_IASIG? 
-     ROOM_IASIG/ROOM_HIGH_FREQUENCY_IASIG?
-    </para></note> 
-   ]]>
-                
-
-    <sect3>
-    <title>Listener Environment Attributes</title>
-    <para>
-    
-
-
-    <table>
-    <title>ENV_ROOM Attribute</title>
-    <tgroup cols="4" align="left" colsep=1 rowsep=1>
-    <thead>
-    <row>
-       <entry>&Par;</>
-       <entry>&Sig;</>
-       <entry>&Val</>
-       <entry>&Def;</>        
-    </row>
-    </thead>
-    <tbody>
-    <row>
-       <entry>ENV_ROOM_EXT</>
-       <entry>f</>
-       <entry>[0.0, 1.0]</>
-       <entry> 1.0f</>        
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-       Description: ???
-    </para>
-
-
-    <para>
-    <table>
-    <title>ENV_ROOM_HIGH_FREQUENCY Attribute</title>
-    <tgroup cols="4" align="left" colsep=1 rowsep=1>
-    <thead>
-    <row>
-       <entry>&Par;</>
-       <entry>&Sig;</>
-       <entry>&Val</>
-       <entry>&Def;</>        
-    </row>
-    </thead>
-    <tbody>
-    <row>
-       <entry>ENV_ROOM_HIGH_FREQUENCY_EXT</>
-       <entry>f</>
-       <entry>[0.0, 1.0]</>
-       <entry> 0.1f ???</>        
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-        Description: ???
-    </para>   
-    
-
-    <para>
-    <table>
-    <title>ENV_DECAY_TIME Attribute</title>
-    <tgroup cols="4" align="left" colsep=1 rowsep=1>
-    <thead>
-    <row>
-       <entry>&Par;</>
-       <entry>&Sig;</>
-       <entry>&Val</>
-       <entry>&Def;</>        
-    </row>
-    </thead>
-    <tbody>
-    <row>
-       <entry>ENV_DECAY_TIME_EXT</>
-       <entry>f</>
-       <entry>[0.1, 20.0]</>
-       <entry> 1.0f</>        
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-        Description: ???
-        What's up with the defaults? Not a normalized range
-        and a global Scale to set?
-    </para>   
-  
-
-    <para>
-    <table>
-    <title>NV_DECAY_HIGH_FREQUENCY_RATIO Attribute</title>
-    <tgroup cols="4" align="left" colsep=1 rowsep=1>
-    <thead>
-    <row>
-       <entry>&Par;</>
-       <entry>&Sig;</>
-       <entry>&Val</>
-       <entry>&Def;</>        
-    </row>
-    </thead>
-    <tbody>
-    <row>
-       <entry>ENV_DECAY_HIGH_FREQUENCY_RATIO_EXT</>
-       <entry>f</>
-       <entry>[0.1, 2.0]</>
-       <entry> 0.5f</>        
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-        Description: ???
-        What's up with the defaults? Not a normalized range
-        and a global Scale to set?
-    </para>
-
-
-    <para>
-    <table>
-    <title>ENV_REFLECTIONS Attribute</title>
-    <tgroup cols="4" align="left" colsep=1 rowsep=1>
-    <thead>
-    <row>
-       <entry>&Par;</>
-       <entry>&Sig;</>
-       <entry>&Val</>
-       <entry>&Def;</>        
-    </row>
-    </thead>
-    <tbody>
-    <row>
-       <entry>ENV_REFLECTIONS_EXT</>
-       <entry>f</>
-       <entry>[0.1, 3.0]</>
-       <entry> 1.0f</>        
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-        Description: ???
-        What's up with the defaults? Not a normalized range
-        and a global Scale to set?
-    </para>
-
-
-    <para>
-    <table>
-    <title>ENV_REFLECTIONS_DELAY Attribute</title>
-    <tgroup cols="4" align="left" colsep=1 rowsep=1>
-    <thead>
-    <row>
-       <entry>&Par;</>
-       <entry>&Sig;</>
-       <entry>&Val</>
-       <entry>&Def;</>        
-    </row>
-    </thead>
-    <tbody>
-    <row>
-       <entry>ENV_REFLECTIONS_DELAY_EXT</>
-       <entry>f</>
-       <entry>[0.0, 0.3]</>
-       <entry> 0.02f</>        
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-        Description: ???
-        What's up with the defaults? Not a normalized range
-        and a global Scale to set?
-    </para>
-
-
-    <para>
-    <table>
-    <title>ENV_REVERB Attribute</title>
-    <tgroup cols="4" align="left" colsep=1 rowsep=1>
-    <thead>
-    <row>
-       <entry>&Par;</>
-       <entry>&Sig;</>
-       <entry>&Val</>
-       <entry>&Def;</>        
-    </row>
-    </thead>
-    <tbody>
-    <row>
-       <entry>ENV_REVERB_EXT</>
-       <entry>f</>
-       <entry>[0.0, 10.0]</>
-       <entry> 1.0f</>        
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-        Description: ???
-        What's up with the defaults? Not a normalized range
-        and a global Scale to set?
-    </para>
-
-
-    <para>
-    <table>
-    <title>ENV_REVERB_DELAY Attribute</title>
-    <tgroup cols="4" align="left" colsep=1 rowsep=1>
-    <thead>
-    <row>
-       <entry>&Par;</>
-       <entry>&Sig;</>
-       <entry>&Val</>
-       <entry>&Def;</>        
-    </row>
-    </thead>
-    <tbody>
-    <row>
-       <entry>ENV_REVERB_DELAY_EXT</>
-       <entry>f</>
-       <entry>[0.0, 0.1]</>
-       <entry> 0.04f</>        
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-        Description: ???
-        What's up with the defaults? Not a normalized range
-        and a global Scale to set?
-    </para>
-
-
-    <para>
-    <table>
-    <title>ENV_DIFFUSION Attribute</title>
-    <tgroup cols="4" align="left" colsep=1 rowsep=1>
-    <thead>
-    <row>
-       <entry>&Par;</>
-       <entry>&Sig;</>
-       <entry>&Val</>
-       <entry>&Def;</>        
-    </row>
-    </thead>
-    <tbody>
-    <row>
-       <entry>ENV_DIFFUSION_EXT</>
-       <entry>f</>
-       <entry>[0.0, 100.0]</>
-       <entry> 100.0f</>        
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-        Description: ???
-        What's up with the defaults? Not a normalized range
-        and a global Scale to set?
-    </para>
-
- 
-    <para>
-    <table>
-    <title>ENV_DENSITY Attribute</title>
-    <tgroup cols="4" align="left" colsep=1 rowsep=1>
-    <thead>
-    <row>
-       <entry>&Par;</>
-       <entry>&Sig;</>
-       <entry>&Val</>
-       <entry>&Def;</>        
-    </row>
-    </thead>
-    <tbody>
-     <row>
-       <entry>ENV_DENSITY_EXT</>
-       <entry>f</>
-       <entry>[0.0, 100.0]</>
-       <entry> 100.0f</>        
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-        Description: ???
-        What's up with the defaults? Not a normalized range
-        and a global Scale to set?
-    </para>
-
-
-    <para>
-    <table>
-    <title>ENV_HIGH_FREQUENCY_REFERENCE Attribute</title>
-    <tgroup cols="4" align="left" colsep=1 rowsep=1>
-    <thead>
-    <row>
-       <entry>&Par;</>
-       <entry>&Sig;</>
-       <entry>&Val</>
-       <entry>&Def;</>        
-    </row>
-    </thead>
-    <tbody>
-    <row>
-       <entry>ENV_HIGH_FREQUENCY_REFERENCE_EXT</>
-       <entry>f</>
-       <entry>[20.0, 20000.0]</>
-       <entry>5000.0</>        
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-        Description: ???
-        What's up with the defaults? Not a normalized range
-        and a global Scale to set?
-    </para>
-    </sect3>
-    <sect3>
-    <title>Source Environment Attributes</title>
-    <para>
-          TBA.
-    </para>
-    </sect3>
-     ]]>  
-    </sect2>
-   </sect1>
-   ]]> <!-- Environment -->
-   
-
-
-   <![ %Ext2 [
-  
-   <sect1>
-   <title>Compatibility Extensions</title> 
-   <para>
-     The extensions described have at one point been in use for
-     experimental purposes, proof of concept, or short term needs.
-     They are preserved for backwards compatibility. Use is not
-     recommended, avialability not guaranteed. Most of these will
-     be officially dropped by the time API revision 2.0 is released.
-   </para>
-
-
-  <sect2>
-   <title>Loki Buffer InternalFormat Extension</title> 
-   <para>
-     &AL; currently does not provide a separate processing
-     chain for multichannel data. To handle stereo samples,
-     the following alternative entry point to BufferData
-     has been defined.
-      <funcsynopsis><funcprototype> 
-      <funcdef> &void; <function> BufferWriteData</function></funcdef>
-      <paramdef> &uint; <parameter>bufferName</parameter></paramdef>
-      <paramdef> &enum; <parameter>format</parameter></paramdef>
-      <paramdef> &void;* <parameter> data </parameter></paramdef>
-      <paramdef> &sizei; <parameter> size </parameter></paramdef>
-      <paramdef> &uint; <parameter>frequency</parameter></paramdef>
-      <paramdef> &enum; <parameter>internalFormat</parameter></paramdef>
-      </funcprototype></funcsynopsis>
-      Valid formats for internalFormat are FORMAT_MONO8, FORMAT_MONO16,
-      FORMAT_STEREO8, and FORMAT_STEREO16.
-   </para>
-   </sect2>
-
-   <sect2>
-   <title>Loki BufferAppendData Extension</title> 
-   <para>
-      Experimental implementation to append data to an existing
-      buffer. Obsoleted by Buffer Queueing. TBA.
-   </para>
-   <![ %Annote [
-      <note><title>Annotation (GenStreamingBuffers):</title><para>
-        It is possible that a consistent implementation of this
-        extension will require distinguishing streaming from
-        regular buffers at creation time, instead of making
-        this distinction implied by the use of BufferData vs.
-        BufferAppendData.
-       </para></note>
-    ]]>
- 
-     <![ %RFC [
-      <note id="rfc-bk0000507-09"><title>RFC: alBufferAppendData</title><para>  
-        Specify data to be filled into a streaming buffer.
-        This takes the current position at the time of the
-        call, and returns the number of samples written.
-         ALsizei ALAPIENTRY alBufferAppendData( ALuint   buffer,
-                                                ALenum   format,
-                                                ALvoid*  data,
-                                                ALsizei  size,
-                                                ALuint  freq );
-
-
-
-      </para></note>
-     ]]>
-
-      <![ %RFC [
-      <note id="rfc-briareaos0006XX-01"><title>RFC: GenStreamingBuffers</title><para>  
-            Currently there is a function call on the Linux side,
-            alGenStreamingBuffers(), which generates a Buffer intended
-            for streaming. The intent of this function was the provide
-            a clear creation point for streaming buffers, rather than
-            the previous behaviour of a Buffer "magically" becoming
-            streaming Buffer the first time BufferAppendData() was
-            called on it. However, it's hard to believe this anomaly
-            in the API can be any better. What about
-            DelStreamingBuffers()? IsStreamingBuffer()?
-      </para><para>
-         The design problem here is that we handle qualitatively different
-         objects using the same API. Streaming and non-streaming buffers
-         are fundamentally different. If we create an API that makes it
-         easy to mistake one for the other, or worse, if we decide to
-         quietly convert one type of object into another in some cases,
-         we create a plethora of error cases for the implementation and
-         the app coder to catch. Separating the Factory methods for the
-         objects allows us to omit an specialization API that will
-         accidentally be called more than once, and saves us handling
-         different stages of "initialization state". AL should not have
-         any notion of "partially initialized" or "incomplete" objects:
-         misery and despair lie down that road. If necessary the entire
-         API should be duplicated (after all, nobody handles 1D, 2D, and
-         3D textures using the same GL API hooks), but as the AL
-         implementation has the ability to distinguish streaming and
-         non-streamin buffers internally there might not be a need. 
-         Unless a concrete alternative is proposed to resolve the "anomaly"
-         it will be the preferred method to avoid an API that is 
-         leaner at the expense of being more error-prone.
-      </para></note>
-     ]]>
-  </sect2>
-
-
-
-
-   <sect2>
-   <title>Loki Decoding Callback Extension</title> 
-   <para>
-      Experimental implementation to allow the application to
-      specify a decoding callback for compression formats
-      and codecs not supported by &AL;. This is supposed to
-      be used if full uncompression by the application is prohibited
-      by memory footprint, but streaming (by queueing) is not
-      desired as the compressed data can be kept in memory
-      in its entirety.
-   </para>
-   <para>
-      If mixing can be done from the compressed data directly, 
-      several sources can use the sample without having to
-      be synchronized. For compression formats not supported 
-      by AL, however, partial decompression has to be done by 
-      the application. This extension allows for the implementation 
-      to "pull" data, using apllication provided decompression
-      code.
-   </para>
-   <para>
-      The use of this callback by the &AL;
-      implementation makes sense only if late decompression
-      (incremerntal, on demand, as needed for mixing) is done, 
-      as full early compression (ahead-of-time) inside the 
-      implementation would exact a similar memory footprint. 
-   </para>
-   <para>
-      TBA.
-   </para>
-   <para>
-      This extension forces execution of third party code
-      during (possibly threaded) driver operation, and
-      might also require state management with global
-      variables for decoder state, which raises issues
-      of thread safety and use for multiple buffers. This
-      extension should be obsolete as soon as &AL;
-      supports a reasonable set of state of the art
-      compression and encoding schemes.
-   </para>
-   </sect2>
-
-
-
-
-   <sect2>
-   <title>Loki Infinite Loop Extension</title> 
-   <para>
-      To support infinite looping, a boolean LOOP was introduced. 
-      With the introduction of buffer queueing and the request for
-      support for a limited number of repetitions, this mechanism
-      was redundant. This extension is not supported for 
-      buffer queue operations, attempts to use it will cause
-      an ILLEGAL_OPERATION error. For backwards compatibility 
-      it is supported as the equivalent to 
-       <literallayout>
-           Source( sName, PLAY_COUNT, MAX_INTEGER ) 
-       </literallayout>
-      For the query LOOP==TRUE, the comparison 
-      PLAY_COUNT!=MAX_INTEGER has to be executed on
-      the queue, not the current value which is decremented
-      for a PLAYING Source.
-    <table>
-    <title>Source LOOP_LOKI Attribute</title>
-    <tgroup cols="4" align="left" colsep=1 rowsep=1>
-    <colspec colname=c1>
-    <colspec colname=c2>
-    <colspec colname=c3>
-    <colspec colname=c4>
-    <spanspec spanname=hspan namest=c1 nameend=c4 align=left>
-    <thead>
-    <row>
-       <entry>&Par;</>
-       <entry>&Sig;</>
-       <entry>&Val</>
-       <entry>&Def;</>        
-    </row>
-    </thead>
-    <tbody>
-    <row>
-       <entry>LOOP_LOKI</>
-       <entry>b</>
-       <entry> &TRUE; &FALSE;</>
-       <entry> &FALSE; </>        
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-     Description:
-        &TRUE; indicates that the Source will perform an inifinite
-        loop over the content of the current Buffer it refers to. 
-    </para>
-   </sect2>
-   
-
-
-   <sect2>
-   <title>Loki Byte Offset Extension</title> 
-   <para>
-      The following has been obsoleted by explicit Source State query.
-      hack.
-   </para>
-
-   <para>
-    <table>
-    <title>Buffer BYTE Offset attribute</title>
-    <tgroup cols="4" align="left" colsep=1 rowsep=1>
-    <thead>
-    <row>
-       <entry>&Par;</>
-       <entry>&Sig;</>
-       <entry>&Val</>
-       <entry>&Def;</>        
-    </row>
-    </thead>
-    <tbody>
-    <row>
-       <entry>BYTE_LOKI</>
-       <entry>ui</>
-       <entry> n/a </>
-       <entry> n/a </>        
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-        Current byte for the buffer bound to the source interpreted
-        as an offset from the beginning of the buffer.
-    </para>
-
-    </sect2>
-    </sect1>
-   ]]> 
-
-
-  <![ %Ext2 [ 
-   <sect1>
-   <title>Loop Point Extension</title>
-   <para>
-
-      In external file now.
-
-    </para>
-   </sect1>
-   ]]>
-
-   </appendix>
-
diff --git a/neo/openal/docs/architecture.html b/neo/openal/docs/architecture.html
deleted file mode 100644
index 78d985bb..00000000
--- a/neo/openal/docs/architecture.html
+++ /dev/null
@@ -1,16 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
-  <head>
-    <title>OpenAL Architecture</title>
-  </head>
-
-  <body>
-    <h1>OpenAL Architecture</h1>
-   <p>
-     This document has been removed.
-     See <a href="index.html">Index</a>
-     for the specification.
-  </p>
-
-  </body>
-</html>
diff --git a/neo/openal/docs/chp-buffers.sgml b/neo/openal/docs/chp-buffers.sgml
deleted file mode 100644
index 5a7cdff8..00000000
--- a/neo/openal/docs/chp-buffers.sgml
+++ /dev/null
@@ -1,691 +0,0 @@
-
-
-  <chapter id="buffers">
-     <title>Buffers</title>
-  <para>
-     A Buffer encapsulates &AL; state related to storing sample data. The 
-     application can request and
-     release Buffer objects, and fill them with data. Data can be supplied
-     compressed and encoded as long as the format is supported. 
-     Buffers can, internally, contain waveform data as uncompressed or 
-     compressed samples.
-  </para>
-  <para> 
-     Unlike Sources and Listener, Buffer Objects can be shared among AL contexts.
-     Buffers are referenced by Sources.
-     A single Buffer can be referred to by multiple Sources. This separation allows
-     drivers and hardware to optimize storage and processing where applicable. 
-  </para>
-  <para>
-     The simplest supported format for buffer data is PCM.
-  </para>   
-
-
-
-    <![ %Annote [
-      <note id="ann-bk000721-01"><title>Annotation/ Compressed Buffers</title><para>
-        Compressed formats are in no way guaranteed by the implementation 
-         to remain compressed. The driver might have to uncompres in memory
-         at once, if no hardware-assisted or incremental decoding is possible.
-         In many cases an implementation has to decompress the buffer,
-         converting the uncompressed data to a canonical internal format, 
-         and resample it into the format native to the current context.
-      </para></note>
-    ]]>
-
-    <![ %RFC [
-      <note id="rfc-bk000721-18"><title>RFC: Compressed Buffers</title><para>  
-         MikeV suggests: an application can query the amount of memory buffer 
-         is consuming. He suggests using GetBufferi(AL_SIZE, ... ). This seems
-         a bad idea as (a) the application is not meant to micromanage
-         driver-internal memory, (b) the memory requirements known to the
-         application might differ from the actual, (c) there are OS
-         mechanisms to query free memory, (d) AL_SIZE is now ambiguous as
-         it announces app-side memory as allocated vs. driver side memory
-         as used by the driver. For clarity AL_INTERNAL_SIZE (analog to
-         internal format enums) might be a better choice.
-      </para></note>
-    ]]>
-
-    <![ %Scratch [
-     <para>
-     Buffers can be non-streaming (default) or streaming. Non-streaming
-     buffers are used to store looping and non-looping (single-shot) sound 
-     data. Streaming buffers have to be used to cache streaming 
-     media that the application can not keep in memory for technical
-     reasons: e.g. data delivered in real time over network. Streaming buffers
-     can also be used to partially store sound samples that the application
-     coder consider too large to keep in memory at once.
-     </para>
-    ]]>
-  
-    
-
-
-   <sect1>
-   <title>Buffer States</title>
-   <para> 
-       At this time, Buffer states are defined for purposes of discussion.
-       The states described in this section are not exposed through the API
-       (can not be queried, or be set directly), and the state description
-       used in the implementation might differ from this.
-    </para>
-    <para>
-       A Buffer is considered to be in one of the following States, with respect
-       to all Sources: 
-       <itemizedlist>
-       <listitem>
-       <para>
-         UNUSED: the Buffer is not included in any queue
-                 for any Source. In particular, the
-                 Buffer is neither pending nor current
-                 for any Source. The Buffer name can be
-                 deleted at this time.
-       </para>
-       </listitem>
-
-       <listitem> 
-       <para>
-         PROCESSED: the Buffer is listed in the queue of
-                 at least one Source, but is neither pending
-                 nor current for any Source. The Buffer can
-                 be deleted as soon as it has been unqueued
-                 for all Sources it is queued with.
-       </para>
-       </listitem>
-       <listitem>
-       <para>
-         PENDING: there is at least one Source for which the
-                  Buffer has been queued, for which the Buffer
-                  data has not yet been dereferenced. The Buffer 
-                  can only be unqueued for those Sources that
-                  have dereferenced the data in the Buffer
-                  in its entirety, and cannot be deleted or
-                  changed.
-       </para>
-       </listitem>
-       </itemizedlist>
-       The Buffer state is dependent on the state of all Sources
-       that is has been queued for.  
-       A single queue occurrence of a Buffer propagates the
-       Buffer state (over all Sources) from UNUSED to PROCESSED
-       or higher. Sources that are STOPPED or INITIAL still have 
-       queue entries that cause Buffers to be PROCESSED. 
-   </para>
-   <para>
-       A single queue entry
-       with a single Source for which the Buffer is not yet
-       PROCESSED propagates the buffer's queueing state to 
-       PENDING.
-   </para>
-   <para>
-       Buffers that are PROCESSED for a given Source can be 
-       unqueued from that Source's queue. Buffers that have
-       been unqueued from all Sources are UNUSED.
-       Buffers that are UNUSED can be deleted, or changed by 
-       BufferData commands.
-  </para>
-
-    <![ %Annote [
-      <note><title>Annotation (No CURRENT State)</title><para>
-         For buffer queueing, it is not relevant whether
-         the Buffer data is currently dereferenced by any
-         Source or not. It is therefore not necessary to
-         distinguish a CURRENT state (being referenced as 
-         current buffer by a single PLAYING or PAUSED Source).
-       </para></note>
-    ]]>
-
-    <![ %Annote [
-      <note><title>Annotation (State Query and Shared Buffers)</title><para>
-         A buffer that is unused by one Source might be used
-         by another. The Unqueue operation is determined by
-         the number of queue entries already processed by the 
-         given Source.
-         However, the application has to check whether the
-         Buffer is still in use by other Sources. For now,
-         applications have to maintain their own lists of
-         buffer consumer (source) lists. If necessary, an
-         explicit call to determine current buffer state
-         with respect to all Sources might be added in
-         future revisions. 
-      </para></note>
-    ]]>
-    <![ %RFC [
-      <note id="rfc-bk000927-02"><title>RFC: IsBufferProcessed? </title><para>  
-        Instead of exposing the internal state, a simple boolean query
-        whether a buffer can be deleted or refilled can be used.
-      </para></note>
-    ]]>
-
-  <![ %RFC [
-  <note id="rfc-bk000731-04"><title>RFC: BufferData on QUEUED</title><para>   
-     The error on using BufferData in QUEUED buffers is introduced 
-     because the implementation might not be able to guarantee when 
-     the Buffer is dereferenced. Applications have to account for the 
-     possibility that the Buffer is dereferenced at the latest possible 
-     moment, e.g. when it becomes CURRENT. As it is easier to relax
-     this restricition at a later time (no effect on backwards
-     compatibility) than doing the reverse, we are conserative here.
-   </para></note>
-  ]]>
-
-   <![ %RFC [
-   <note id="rfc-bk000731-05"><title>RFC: Buffer State Query</title><para>  
-     Buffer State could be queried using alBuffer(), but it can't be
-     set. Prohibiting deferred deletion of buffers would make such a
-     state query desirable.
-   </para></note>
-   ]]>
-   </sect1>
-
-
-   <sect1>
-   <title>Managing Buffer Names</title>
-   <para> 
-     &AL; provides calls to obtain Buffer names, to request 
-     deletion of a Buffer object associated with a valid Buffer name, 
-     and to validate a Buffer name. Calls to control Buffer attributes
-     are also provided.
-    </para>
-
-    <sect2>
-    <title>Requesting Buffers Names</title>
-    <para>
-     The application requests a number of Buffers using GenBuffers.
-      <funcsynopsis><funcprototype> 
-      <funcdef>  void <function> GenBuffers </function></funcdef>
-      <paramdef> &sizei; <parameter> n </parameter></paramdef>
-      <paramdef> &uint;* <parameter> bufferNames </parameter></paramdef>
-      </funcprototype></funcsynopsis>
-    </para>
-
-    <![ %RFC [
-       <note id="rfc-bk000803-02"><title>RFC: Buffer Name 0</title><para>  
-        NONE or 0 is a reserved buffer name. What properties does
-        this buffer have? Does it have content? If there is no content,
-        what is its duration? 0? 1 microsecond? Should we use this buffer
-        to schedule a limited duration "silence"?     
-      </para></note>
-    ]]>
-   </sect2>
-
-   <sect2>
-   <title>Releasing Buffer Names</title>
-   <para>
-     The application requests deletion of a number of Buffers
-     by calling DeleteBuffers. 
-   </para>
-   <para>
-     Once deleted, Names are no longer valid for use with AL
-     function calls. Any such use will cause an INVALID_NAME 
-     error. The implementation is free to defer actual
-     release of resources. 
-      <funcsynopsis><funcprototype> 
-      <funcdef> &void; <function> DeleteBuffers </function></funcdef>
-      <paramdef> &sizei; <parameter> n </parameter></paramdef>
-      <paramdef> &uint;* <parameter> bufferNames </parameter></paramdef>
-      </funcprototype></funcsynopsis>
-     IsBuffer(bname) can be used to verify deletion of a buffer.
-     Deleting bufferName 0 is a legal NOP in both scalar and
-     vector forms of the command. The same is true for unused
-     buffer names, e.g. such as not allocated yet, or as 
-     released already.
-   </para>
-
-    <![ %RFC [
-       <note id="rfc-bk000803-01"><title>RFC: Force Deletion</title><para>  
-          If a buffer name is deleted, we could replace all occurences
-          in queues with bname 0. This is the GL behavior for deleting
-          the texture currently bound.
-      </para></note>
-    ]]>
-   <![ %RFC [
-   <note id="rfc-bk000731-07"><title>RFC: Relasing used Buffers</title><para>  
-      If a Buffer is USED or QUEUED, it cannot be deleted, and the operation 
-      should fail. We have three possible responses: throw an error, deferr
-      deletion, or force deletion by replacing every use
-      of the buffer in question with bname zero.
-      Throwing an error requires that we lock, verify that all specified
-      buffers can be deleted, then perform deletion, then unlock. If there
-      is one buffer that can not be deleted we have to throw an error and
-      make the entire operation a NOP.
-      Deferred deletion has its own set of problems (see other RFC).
-      Forcing deletion makes the mistake obvious to the application
-      for current buffers (sound artifacts) but still doesn't expose
-      errors for queued buffers. It also requires complete consumer
-      book-keeping for each buffer. GL uses this approach for textures
-      at little expense because it only has one current texture.
-      </para></note>
-    ]]>
-
-   <![ %RFC [
-   <note id="rfc-bk000731-06"><title>RFC: Deferred Buffer Release</title><para>  
-     Buffer deletion could be performed as a deferred operation. 
-     In this case actual deletion would be deferred until a Buffer is
-     unused, i.e. not QUEUED or CURRENT anymore. The specification 
-     would not guarantee that they are deleted as soon as possible.
-
-     However, such a deferred execution would be muddying the borders
-     between immediate and deferred execution in general (as we
-     might want to add scheduling and deferred commands at a later time).
-     Introduced as the default it makes impossible for the application
-     to force deletion or errors. Errors caused by improper use of
-     &AL; will be triggered at some distance from the original mistaken
-     command. Debugging such conditions is usually expensive. This approach
-     also does not take into account sharing of buffers among contexts.
-
-     It might be possible to introduce this behavior as a Hint()
-     in case that it is not desirable to explicitely introduce
-     deferred commands.
-      </para></note>
-    ]]>
-
-    <![ %RFC [
-       <note id="rfc-bk000927-03"><title>RFC: sourceName 0 </title><para>  
-         Is there a useful application for this? Do we mark that this 
-         is reserved?
-      </para></note>
-    ]]>
-   </sect2>
-
-   <sect2>
-   <title>Validating a Buffer Name</title>
-   <para>
-     The application can verify whether a buffer Name is valid
-     using the IsBuffer query.
-      <funcsynopsis><funcprototype> 
-      <funcdef> &bool; <function> IsBuffer </function></funcdef>
-      <paramdef> &uint; <parameter> bufferName</parameter></paramdef>
-      </funcprototype></funcsynopsis>
-    </para>
-    </sect2>
-    </sect1>
-
-
-    <sect1>
-    <title>Manipulating Buffer Attributes</title>
-
-    <sect2>  
-    <title>Buffer Attributes</title>
-    <para>
-        This section lists the attributes that can be set, or
-        queried, per Buffer. Note that some of these attributes
-        can not be set using the Buffer commands, but are set
-        using commands like BufferData.
-    </para> 
-    <para>
-      Querying the attributes of a Buffer with a buffer name that
-      is not valid throws an INVALID_OPERATION. Passing in an
-      attribute name that is invalid throws an INVALID_VALUE error.
-   </para>
-
-    <para>
-    <table>
-    <title>Buffer FREQUENCY Attribute</title>
-    <tgroup cols="4" align="left" colsep=1 rowsep=1>
-    <thead>
-    <row>
-       <entry>&Par;</>
-       <entry>&Sig;</>
-       <entry>&Val</>
-       <entry>&Def;</>        
-    </row>
-    </thead>
-    <tbody>
-    <row>
-       <entry> FREQUENCY </>
-       <entry> float </>
-       <entry> none </>
-       <entry> (0, any]</>        
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-       Description: Frequency, specified in samples per second, 
-       i.e. units of Hertz [Hz].
-       Query by GetBuffer. The frequency state of a buffer is set by 
-       BufferData calls. 
-    </para>
-
-    <![ %Annote [
-      <note><title>Annotation (No Frequency enumeration)</title><para>
-         As the implementation has to support conversion from
-         one frequency to another to implement pitch, it is
-         feasible to offer support for arbitrary sample
-         frequencies, instead of restricting the application
-         to an enumeration of supported sample frequencies. 
-         Another reason not to limit frequency to an enumerated
-         set is that future hardware might support variable
-         frequencies as well (it might be preferable to choose 
-         the sampling frequency according to the PSD of the 
-         signal then).
-      </para><para> 
-         However, it is desirable to avoid conversions due
-         to differences between the sample frequency used in
-         the original data, the frequency supported during the
-         mixing, and the frequency expected by the output device.
-      </para></note>
-    ]]>
-
-
-    <![ %Annote [
-      <note><title>Annotation (Implied Frequency)</title><para>
-         To account for the possibility of future AL implementations 
-         supporting encoding formats for the application might 
-         not want, or be able, to retrieve the actual frequency 
-         from the encoded sample, the specification will be
-         amended to guarantee the following behavior: If a nonzero
-         frequency is specified, it will force a conversion from 
-         the actual to the requested frequency. If the application 
-         specifies a 0 frequency, AL will use the actual frequency.
-         If there is no frequency information implied by the format
-         or contained in the encoded data, specifying a 0 frequency
-         will yield INVALID_VALUE. It is recommended that applications
-         use NONE instead of the literal value. 
-      </para></note>
-    ]]>
-
-    <![ %RFC [
-       <note id="rfc-bk000806-01"><title>RFC: BITS not needed </title><para>  
-      This is not a setter. As a state query it doesn't provide useful
-      information about the internal canonical format (which could be
-      queried independent of the buffer).
-    </para></note>
-    <para>
-    <table>
-    <title>Buffer BITS Attribute</title>
-    <tgroup cols="4" align="left" colsep=1 rowsep=1>
-    <thead>
-    <row>
-       <entry>&Par;</>
-       <entry>&Sig;</>
-       <entry>&Val</>
-       <entry>&Def;</>        
-    </row>
-    </thead>
-    <tbody>
-    <row>
-       <entry>BITS</>
-       <entry>ui</>
-       <entry>8,16</>
-       <entry>0</>
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-      Description: 
-       Bits per sample. This is a query-only attribute. The
-       default value for an (empty) buffer is zero.
-    </para>  
-    ]]>
-  
-
-    <![ %Annote [
-      <note><title>Annotation (No Format query)</title><para>
-         As of this time there is no query for FORMAT, or format
-         related state information. Query of the channels or
-         bits of a given buffer make little sense if the query
-         the internal (canonical, not buffer specific) format.
-         Query of the original sample data format makes little
-         sense unless the implementation is obliged to preserve
-         the original data.
-       </para></note>
-    ]]>
-
-    <![ %RFC [
-       <note id="rfc-bk000806-02"><title>RFC: CHANNELS needed?</title><para>  
-         No setter. Does this indicate the channels in the original data, 
-         or those in the (canonical) format internally used? Redundant to
-         querying the buffer type. Should be enums as speaker configurations
-         might have to be destribed by two integers: 5.1. 
-      </para></note>
- 	<para>
-          <table>
-	    <title>Buffer CHANNELS Attribute</title>
-	    <tgroup cols="4" align="left" colsep="1" rowsep="1">
-	      <thead>
-		<row>
-		  <entry>&Par;</>
-		  <entry>&Sig;</>
-		  <entry>&Val;</>
-		  <entry>&Def;</>
-		</row>
-	      </thead>
-	      <tbody>
-		<row>
-		  <entry>CHANNELS</>
-		  <entry>ui</>
-		  <entry>RFC: enums or N/A?</>
-		  <entry>0</>
-		</row>
-	      </tbody>
-	    </tgroup>
-	  </table>
-          Description: Channels that buffer stores. Query only
-          attribute. This is almost
-          always 1, as applications using spatialized sound always
-          downsample to mono. This depends on the purpose of the
-          buffer: buffers used for spatialization have to provide
-          single-channel data. The default value for an (empty)
-          buffer is zero.
-	</para>
-    ]]>
-
-	<para>
-          <table>
-	    <title>Buffer SIZE Attribute</title>
-	    <tgroup cols="4" align="left" colsep="1" rowsep="1">
-	      <thead>
-		<row>
-		  <entry>&Par;</>
-		  <entry>&Sig;</>
-		  <entry>&Val;</>
-		  <entry>&Def;</>
-		</row>
-	      </thead>
-	      <tbody>
-		<row>
-		  <entry>SIZE</>
-		  <entry> &sizei; </>
-		  <entry> [0, MAX_UINT]</>
-		  <entry> 0 </>
-		</row>
-	      </tbody>
-	    </tgroup>
-	  </table>
-          Description: Size in bytes of the buffer data. Query through
-          GetBuffer, can be set only using BufferData calls. 
-          Setting a SIZE of 0 is a legal NOP. The number of bytes does 
-          not necessarily equal the number of samples (e.g. for compressed data).
-	</para>
- 
-
-    <![ %RFC [
-      <note id="rfc-bk000724-15"><title>RFC: buffer overflow/underflow</title><para>  
-         If a SIZE is specified for a buffer and an attempt is made to
-         write less or more data to the buffer, is this an error? Do we
-         have SubData updates? Is trying to write data to a zero size buffer
-         an error? Which error? 
-      </para></note>
-    ]]>
-
-    <![ %RFC [
-      <note id="rfc-bk000619-16"><title>RFC: query for samples/duration?</title><para>  
-         Do we need a query for samples (which does not equal memory size)?
-         Do we prefer a duration query? As integral, for precision? Which, 
-         combined with frequency, has to guarantee accurate sample number?
-      </para></note>
-    ]]>
-
-
-    <![ %RFC [
-      <note id="rfc-bk000724-01"><title>RFC: memory budgeting</title><para>  
-        SIZE comment said:  Useful for memory budgeting with compressed data.
-        Sounds bogus: the application can only announce how many bytes
-        of data it intends to provide, it might not be able to estimate 
-        the uncompressed, decoded size in the internal format chosen by
-        the implementation w/o decompressing, decoding, and querying for
-        the internal format. Micromanaging memory is usually a bad idea.
-        Using SIZE to configure a buffer might ge a mistake. Using the
-        same enum to query the actual size internally (which might
-        consists of two or more buffer areas and cached decoding state)
-        will be confusing.
-      </para></note>
-    ]]>
-
-    <![ %RFC [
-      <note id="rfc-bk000724-02"><title>RFC: buffer initial state</title><para>  
-       MikeV added:
-       "The default attribute values for a Buffer are nonsensical insofar
-       as a Buffer is incomplete without data having been
-       specified."
-      This seems wrong. An AL object will always be complete and valid,
-      albeit useless. A Buffer in its default state might not produce
-      any useful outout, but it can be specified and used. 
-      </para></note>
-    ]]>
-    </sect2>
- 
-
-    <sect2>
-    <title>Querying Buffer Attributes</title>
-    <para>
-      Buffer state is maintained inside the &AL; implementation and can be
-      queried in full. The valid values for paramName are identical to the 
-      ones for Buffer*.
-      <funcsynopsis><funcprototype> 
-      <funcdef> void <function> GetBuffer{n}{sifd}{v} </function></funcdef>
-      <paramdef> &uint; <parameter>bufferName</parameter></paramdef>
-      <paramdef> &enum; <parameter> paramName </parameter></paramdef>
-      <paramdef> &type;* <parameter> values </parameter></paramdef>
-      </funcprototype></funcsynopsis>
-    </para>
-    </sect2>
-
-    <sect2>
-    <title>Specifying Buffer Content</title>
-    <para>
-      A special case of Buffer state is the actual sound sample data stored
-      in asociation with the Buffer. Applications can specify sample data using 
-      BufferData.
-      <funcsynopsis><funcprototype> 
-      <funcdef> &void; <function> BufferData </function></funcdef>
-      <paramdef> &uint; <parameter>bufferName</parameter></paramdef>
-      <paramdef> &enum; <parameter>format</parameter></paramdef>
-      <paramdef> &void;* <parameter> data </parameter></paramdef>
-      <paramdef> &sizei; <parameter> size </parameter></paramdef>
-      <paramdef> &sizei; <parameter>frequency</parameter></paramdef>
-      </funcprototype></funcsynopsis>
-      The data specified is copied to an internal software, or if possible, 
-      hardware buffer. The implementation is free to apply decompression,
-      conversion, resampling, and filtering as needed. The internal format
-      of the Buffer is not exposed to the application, and not
-      accessible. Valid formats are FORMAT_MONO8, FORMAT_MONO16,
-      FORMAT_STEREO8, and FORMAT_STEREO16. An implementation may
-      expose other formats, see the chapter on Extensions for
-      information on determining if additional formats are supported.
-    </para>
-
-    <para>
-      Applications should always check for an error condition after attempting 
-      to specify buffer data in case an implementation has to generate an
-      OUT_OF_MEMORY or conversion related INVALID_VALUE error. The application
-      is free to reuse the memory specified by the data pointer once the
-      call to BufferData returns. The implementation has to dereference,
-      e.g. copy, the data during BufferData execution.
-    </para>
-  
-    <![ %RFC [
-      <note id="rfc-bk000724-04"><title>RFC: format enums</title><para>  
-          With the possible exception of sample frequency, all
-          details of a sample (mono/stero, bit resolution, channels,
-          encoding,compression) should be specified in a format parameter.
-          In other words, I opt for an enumeration of formats. GL has a
-          quite large number of those w/o suffering damage. Allowing
-          parameters the way we do increases error cases and/or
-          conversion load. The space is combinatorial to begin with,
-          but an enumeration of valid formats seems better to impose
-          restrictions. Using enums helps dealing with formats
-          opaque to the application (compressed data with compressed
-          header) where sample size and sampling frequency might not
-          be available. 
-
-          There is the related issue of internal formats. A buffer used
-          for spatialization will have to convert to mono. A buffer used
-          to pass through to the output hardware will have to
-          remap an n-channel format to an m-channel format (or let the
-          hardware do it) including crosstalk handling depending on
-          the output device (headphones vs. speaker). To prevent that
-          every buffer has to do both AL needs to know the purpose of a
-          buffer when dereferencing the data.
-      </para></note>
-    ]]>
-
-     <![ %RFC [
-      <note id="rfc-bk0000507-17"><title>RFC: Frequency woes</title><para>  
-        Frequency as a uint rises precision issues.
-        Frequency might not be known for compressed data, we might need 
-        a (yuck) wildcard frequency specifier?
-        We have a redundancy: frequency per context (mixing quality
-        desired), frequency internally used by the implementation when
-        storing the buffers, frequency provided in the data. We need
-        to specify the latter in some cases and can't in others. Format
-        enum or frequency enum again.
-      </para></note>
-     ]]>
-
-
-
-     <![ %RFC [
-      <note id="rfc-bk000504-01"><title>RFC: data mover mess</title><para>  
-         API to copy data from output buffer to a buffer?
-         BufferWriteData to supersede BufferData, BufferReadData
-         as later extensions for buffer readback for those who want it?
-         Reading the output stream reverses the problems we have
-         with appendData: the application provides a memory buffer
-         into which AL copies as much data as available/as fits. 
-      </para></note>
-      ]]>
-
-
-
-    <![ %RFC [
-      <note id="rfc-bk000724-11"><title>RFC: expose internal format</title><para>  
-        Implementations are free to use whatever internal data format is best 
-        suited for their hardware/software implementation, leaving the actual 
-        sample format and structure opaque to the application. Should applications
-        be able to influence this? Through context creation? Per Buffer?
-        Do we use Lowest Common Denominator or highest possible quality as a
-        default?
-      </para></note>
-    ]]>
-
-    <![ %RFC [
-      <note id="rfc-bk000724-12"><title>RFC: memory management with compressed data</title><para>  
-         If we allow for mixing from compressed data (perfectly reasonable
-         for hardware) then it seems even more unlikely the application could
-         estimate memory usage.
-        If a compressed format is supported by AL, do we require support for mixing from
-       compressed data? I daresay not - some formats might not allow for
-        cheap incremental decompression.
-      </para></note>
-    ]]>
-
-    <![ %RFC [
-      <note id="rfc-bk000724-21"><title>RFC: conversion and sample retrieval</title><para>  
-          To retrieve a sample, the size has to be queried first for allocating a
-          properly sized memory segment as destination. This is dependent on the
-          format. Conversion can be implemented as creating a buffer, and then
-          requesting the data in a different format. Is this desirable? Even if
-          we restrict reading from buffers to the same format they were written
-          to, conversion from the internal format might be inevitable. Querying 
-          and setting the internal format however might be desirable for certain
-          purposes. 
-      </para></note>
-    ]]>
-
-   </sect2>
-   </sect1>
-   </chapter>
-
diff --git a/neo/openal/docs/chp-introduction.sgml b/neo/openal/docs/chp-introduction.sgml
deleted file mode 100644
index c9485530..00000000
--- a/neo/openal/docs/chp-introduction.sgml
+++ /dev/null
@@ -1,304 +0,0 @@
-
-  <chapter id="introduction">
-    <title>Introduction</title> 
-
-    <![ %Revision [ 
-       <para><literallayout>  
-       CVS Document: $Id: chp-introduction.sgml,v 1.3 2000/11/10 21:23:52 bk Exp $
-       CVS Revision: $Revision: 1.3 $
-
-       $Log: chp-introduction.sgml,v $
-       Revision 1.3  2000/11/10 21:23:52  bk
-       Use ../CREDITS for list of contributors.
-
-       Revision 1.2  2000/10/26 02:58:55  bk
-       Cleanup (typos).
-
-       Revision 1.1  2000/10/11 18:44:46  bk
-       Document split into separate files. Minor fixes.
-       </literallayout><para>   
-     ]]>
-
-    <section>
-    <title>Formatting and Conventions</title>
-    <para>
-     This API Specification and Reference uses a style that is a blend of the 
-     OpenGL v1.2 specification and the OpenGL Programming Guide, 2nd ed. 
-     Conventions: 'T' is used to designate a type for those functions which 
-     exist in multiple signatures for different types. 'Object' is used
-     to designate a target Object for those functions which exist in multiple
-     versions for different Object categories. The 'al' and 'AL_' prefix
-     is omitted throughout the document.
-    </para>
-
-    <![ %Annote [
-      <note><title>Annotation (Terminology)</title><para>
-         "State" refers to state within the context of the &OAL; 
-         state machine description of the &OAL; implementation.
-         "Objects" refer to &OAL; primitives.
-         "Attribute" refers to attributes of &OAL; Objects.
-         Attributes of a &OAL; Objects are one part of the
-         &OAL; state. Some attributes are not specific to
-         single objects, but apply to the entire context.
-         "Parameter" is used for function arguments that might
-         or might not be attributes, in particular for
-         command arguments that are not stored as state.
-         The use of "Property" is to be avoided. 
-      </para></note>
-    ]]>
-
-  <para>
-    <revhistory>
-
-    <revision>
-    <revnumber> 1.8/1.7./1.6/1.5 </revnumber>
-    <date> September-August 2000 </date>
-    <authorinitials> bk </authorinitials>
-    <revremark> Final Draft for Public Review </revremark>  
-    </revision>
-
-    <revision>
-    <revnumber> 1.4 </revnumber>
-    <date> June 2000 </date>
-    <authorinitials> bk </authorinitials>
-    <revremark> First Draft for Public Review </revremark>  
-    </revision>
-
-    <revision>
-    <revnumber> 1.2 </revnumber>
-    <date> March 2000 </date>
-    <authorinitials> mkv </authorinitials>
-    <revremark> Draft released for GDC </revremark>  
-    </revision>  
-    </revhistory>
-  </para>   
-     <![ %Scratch [
-      <note id="todo"><title>TODO</title><para>
-        <literallayout>
-             - work thru past changes
-             - add GH section
-             - add rewrite of GH section
-
-             - add section on rfc/ann id's
-             - add section on procedure
-             - add proper id's to rfc/ann/sections etc.           
-
-        </literallayout>
-      </para></note>
-    ]]>
-
-    </section>
-
-    <section>
-    <title>What is the &OAL; Audio System?</title>
-    <para>
-    &OAL; (for "Open Audio Library") is a software interface to audio hardware.
-    The interface consists of a number of functions that allow a programmer
-    to specify the objects and operations in producing high-quality audio
-    output, specifically multichannel output of 3D arrangements of sound
-    sources around a listener.
-    </para>
-    <para>
-    The &OAL; API is designed to be cross-platform and easy to use. 
-    It resembles the &OGL; API in coding style and conventions.  &OAL; uses a 
-    syntax resembling that of &OGL; where applicable. 
-    </para>
-    <para>
-    &OAL; is foremost a means to generate audio in a simulated three-dimensional 
-    space. Consequently, legacy audio concepts such as panning and left/right 
-    channels are not directly supported. &OAL; does include extensions compatible 
-    with the IA-SIG 3D Level 1 and Level 2 rendering guidelines to handle 
-    sound-source directivity and distance-related attenuation and Doppler effects, 
-    as well as environmental effects such as reflection, obstruction, transmission, 
-    reverberation.
-    </para>
-
-    <para>
-    Like &OGL;, the &OAL; core API has no notion of an explicit rendering context,
-    and operates on an implied current &OAL; Context. Unlike the &OGL; 
-    specification the &OAL; specification includes both the core API (the 
-    actual &OAL; API) and the operating system bindings 
-    of the ALC API (the "Audio Library Context"). Unlike &OGL;'s GLX, WGL
-    and other OS-specific bindings, the ALC API is portable across platforms
-    as well.
-    </para>
-    </section>
-
-    <section>
-    <title>Programmer's View of &OAL;</title>
-    <para>
-    To the programmer, &OAL; is a set of commands that allow the
-    specification of sound sources and a listener in three
-    dimensions, combined with commands that control how these
-    sound sources are rendered into the output buffer. The
-    effect of &OAL; commands is not guaranteed to be immediate,
-    as there are latencies depending on the implementation,
-    but ideally such latency should not be noticeable to the
-    user.
-    </para>
-    <para>
-    A typical program that uses &OAL; begins with calls to 
-    open a sound device which is used to process output and
-    play it on attached hardware (e.g. speakers or headphones).
-    Then, calls are made to allocate an AL context and
-    associate it with the device. Once an AL context is
-    allocated, the programmer is free to issue AL commands.
-    Some calls are used to render Sources (point and directional
-    Sources, looping or not), while others affect the rendering
-    of these Sources including how they are attenuated by
-    distance and relative orientation.
-    </para>
-
-    <![ %Annote [
-      <note><title>Annotation (&OAL; and &OGL; use)</title><para>
-       Often, &OAL; will be used to render a 3D audio environment 
-       matched by a 3D visual scenery. For this purpose, &OAL; is 
-       meant to be a seamlessly integrating complement to &OGL;.
-       &OAL; state can be updated in sync with the &OGL; or video
-       updates (synchronized), or in timesteps independent of the 
-       graphics framerate. Audio rendering loops usually update 
-       the current locations of the sources and the listener, updates 
-       global settings, and manages buffers.
-       </para></note>
-    ]]>
-    </section>
-
-
-    <section>
-    <title>Implementor's View of &OAL;</title>
-    <para>
-    To the implementor, &OAL; is a set of commands that affect
-    the operation of CPU and sound hardware. If the hardware
-    consists only of an addressable output buffer, then &OAL; must
-    be implemented almost entirely on the host CPU. In some cases
-    audio hardware provides DSP-based and other acceleration in
-    various degress. The &OAL; implementors task is to provide
-    the CPU software interface while dividing the work for each
-    AL command between the CPU and the audio hardware. This 
-    division should be tailored to the available audio hardware
-    to obtain optimum performance in carrying out AL calls.
-    </para>
-    <para>
-    &OAL; maintains a considerable amount of state information.
-    This state controls how the Sources are rendered into the
-    output buffer. Some of this state is directly available to
-    the user: he or she can make calls to obtain its value.
-    Some of it, however, is visible only by the effect it has
-    on what is rendered. One of the main goals of this
-    specification is to make &OAL; state information explicit,
-    to eludicate how it changes, and to indicate what its
-    effects are.
-    </para>
-
-    <![ %Annote [
-      <note><title>Annotation (Native audio APIs)</title><para>
-         Implementors can choose to implement &OAL; on top
-         of an existing native audio API.
-       </para></note>
-    ]]>
-
-    </section>
-
-
-    <section>
-    <title>Our View</title>
-    <para>
-    We view &OAL; as a state machine that controls a multichannel
-    processing system to synthesize a digital stream, passing sample 
-    data through a chain of parametrized digital audio signal
-    processing operations. This model should engender a specification 
-    that satisfies the  needs of both programmers and implementors. 
-    It does not, however, necessarily 
-    provide a model for implementation. Any conformant implementation
-    must produce results conforming to those produced by the specified
-    methods, but there may be ways to carry out a particular computation
-    that are more efficient than the one specified.
-    </para>
-
-    </section>
-
-
-    <section>
-    <title>Requirements, Conformance and Extensions</title>
-    <para>
-       The specification has to guarantee a minimum number of resources.
-       However, implementations are encouraged to compete on performance,
-       available resources, and output quality.
-    </para>
-
-    <![ %RFC [
-      <note id="rfc-bk000724-06"><title>RFC: suggested requirements</title><para>  
-         These have been taken from earlier specs drafts, suggested by
-         Creative:
-           A minimum of sixteen (16) Sources per Context should always be available.
-           The number and size of Buffers available is limited only by the amount 
-           of memory available and/or accessible by the implementation.
-         The specification could also list requirements by the implementation:
-           A minimum storage space of half a megabyte (512kB) should always be available.
-      </para></note>
-    ]]>
-
-    <![ %RFC [
-       <note id="rfc-briareos000724-01"><title>RFC: no requirements</title><para>  
-       I3DL1-like requirements might be so arbitrary that they are useless.
-       The dangers here are cap bits, and a subtle aliasing of source and
-       hardware buffers. AL implementations should implement as much quality
-       and performance as possible for any given number of sources/
-       Application request resources when creating a context and can use Hints 
-       to indicate desired trade-offs.
-      </para></note>
-    ]]>
-
-
-    <para>
-       There will be an &OAL; set of conformance tests available along
-       with the open source sample implementation. Vendors and individuals
-       are encouraged to specify and implement extensions to &OAL; in
-       the same way &OGL; is extensible. Successful extensions will
-       become part of the core specification as necessary and desirable.
-       &OAL; implementations have to guarantee backwards compatibility
-       and ABI compatibility for minor revisions.
-    </para>
-    <para>
-       The current sample implementation and documentation for &OAL; can be 
-       obtained from 
-       <ulink 
-       url="http://wwww.openal.org/"
-       type="http">openal.org</ulink>. 
-       &OAL; is also available from the the 
-       <ulink url="http://cvs.lokigames.com/cgi-bin/cvsweb.cgi/openal/" type="http">
-       &OAL; CVS repository</ulink>. For more information on how to get
-       &OAL; from CVS also see <ulink url="http://cvs.lokigames.com/" type="http">
-       &coLoki; CVS</ulink>.
-    </para>
-    </section>
-
-
-
-    <section>
-    <title>Architecture Review and Acknowledgements</title> 
-    <para>
-      Like &OGL;, &OAL; is meant to evolve through a joined effort of
-      implementators and application programmers meeting in regular
-      sessions of an Architecture Review Board (ARB). As of this time
-      the ARB has not yet been set up. Currently, the two companies
-      committed to implementing &OAL; drivers have appointed two
-      contacts responsible for preparing the specification draft.
-    </para>
-    <para>
-     Consequently &OAL; is a cooperative effort, one in a sequence of 
-     earlier attempts to create a cross-platform audio API. The current 
-     authors/editors have assembled this draft of the specification, 
-     but many have, directly and indirectly, contributed to the content 
-     of the actual document. The following list (in all likelihood
-     incomplete) gives in alphabetical order participants in the discussion 
-     and contributors to the specification processs and related efforts:
-    
-     &CREDITS;
-
-
-    </para>
-    </section>
-    </chapter> <!-- Overview -->
-
- 
\ No newline at end of file
diff --git a/neo/openal/docs/chp-multichannel.sgml b/neo/openal/docs/chp-multichannel.sgml
deleted file mode 100644
index 425ec067..00000000
--- a/neo/openal/docs/chp-multichannel.sgml
+++ /dev/null
@@ -1,261 +0,0 @@
-
-   <chapter id="multichannel">
-   <title>Handling Multichannel Data</title>
-   <para>
-     &AL; is foremost an API to control processing of spatialized sound. For that
-     reason, the internal, canonical format of data stored in buffers is mono.
-     The specification does not require the implementation to preserve the
-     original data, thus multichannel (e.g. stereo) data is usually downsampled 
-     using an algorithm of the implementor's choosing. Implementations are free
-     to defer decompression, decoding, and conversion until the latest possible
-     moment, but they are not required to do so by the specification.  
-   </para>
-   <para>
-     However, &AL; is an audio API, and consequently has to provide means to
-     pass through preprocessed multichannel data to the sound driver and 
-     hardware, which in turn will map it to the actual output channels. This 
-     processing might involve mapping from n channels in the data to m channels
-     in the output, as well as filtering to account for varying requirements
-     for a given setup. For example, headphone and speaker setups differ with
-     respect to handling of crosstalk and noise.
-   </para>
-   <para>
-     For this reason, mono buffers can not be used to store data meant for  
-     direct multichannel output. The API has to provide means by which the
-     application can signal its intention to use a given buffer in this way,
-     causing the implementation to either preserve the original data, or
-     convert it as needed for the direct output to the given speaker or
-     headphone configuration. In many cases, multichannel buffers could be 
-     used with Sources, but the specification does not endorse this at this
-     time as this might not be guaranteed for all multichannel data formats
-     &AL; will support.
-   </para>
-   <para>
-     While spatialized sound is often played once, or looping a limited number
-     of times, multichannel data is usually streaming: typically stereo or MP3
-     music, soundtracks, maybe voice data accompanying animation and cinematic
-     sequences. The queueing mechanism defined for mono buffers and spatialized 
-     Sources is thus also applied to multichannel buffers and passthrough
-     output.
-   </para>
-   <para>
-     Applications can expect &AL; implementations to support more than one
-     multichannel output at once (e.g. mixing two stereo streams, or fading
-     from one to the other for transition). For that reason we can not restrict
-     multichannel output to just one stream or buffer at a time.
-   </para>
-
-    <![ %Annote [
-      <note><title>Annotation (per-case Buffer use)</title><para>
-         The specification will likely be amended at a later time to
-         allow for the use of mono buffers with multichannel output,
-         and multichannel buffers with spatialized Sources.
-         The decision to use the same buffer API for mono 
-         and multichannel buffers was taken in anticipation of this.
-         In cases where the specification can not guarantee
-         use of a given multichannel data encoding with a 
-         spatialized source, an error can be generated at the
-         attempted use, validating the buffer's internal format
-         against the output chosen. In cases were the specification 
-         can not guarantee the implementation will defer the 
-         conversion of multichannel buffer content as needed (e.g. 
-         PCM stereo data), the application can either specify the
-         internal format, or the internal format enumeration
-         can be extended to explicitely request storage of both 
-         multichannel and mono data within the same buffer, at memory 
-         expense. 
-       </para></note>
-    ]]>
-
-
-    <section>
-    <title>Specifying Buffer Content and Internal Format</title>
-    <para>
-      The existing BufferData command does not permit the application
-      to specify an internal format. The implementation is free to
-      apply conversions, downsampling, upsampling, including 
-      interpolation and filtering, in accordance with the specification.
-    </para>
-    <para>
-      However, applications might want to use different trade-offs
-      between quality and resource expenditure. More imortantly,
-      applications might choose to use preprocessed, multichannel
-      data instead of doing runtime spatialization, e.g. for
-      recorded music, voice, and realtime streams. In this case
-      the application expects efficient passthrough of the data
-      to the hardware. 
-    </para>
-    <para>
-      To account for this requirement, an extended command to specify
-      sample data to be stored in a given buffer is introduced.
-      <funcsynopsis><funcprototype> 
-      <funcdef> &void; <function> BufferWriteData</function></funcdef>
-      <paramdef> &uint; <parameter>bufferName</parameter></paramdef>
-      <paramdef> &enum; <parameter>format</parameter></paramdef>
-      <paramdef> &void;* <parameter> data </parameter></paramdef>
-      <paramdef> &sizei; <parameter> size </parameter></paramdef>
-      <paramdef> &uint; <parameter>frequency</parameter></paramdef>
-      <paramdef> &enum; <parameter>internalFormat</parameter></paramdef>
-      </funcprototype></funcsynopsis>
-      The internal format of the Buffer can be requested by the
-      application. The implementation is not required to match 
-      the request excatly. The specification does guarantee that
-      use of a multichannel internalFormat parameter will cause
-      the implementation to treat the data as multichannel data.
-      The implementation is free to perform any remapping from
-      the number of channels used in the data to the number of
-      channels available at the output, and apply other prcessing
-      as needed.
-    </para>
-    <para>
-      Valid formats for internalFormat are FORMAT_MONO8, FORMAT_MONO16,
-      FORMAT_STEREO8, and FORMAT_STEREO16. An implementation may
-      expose other formats, see the chapter on Extensions for
-      information on determining if additional formats are supported.
-      In general, the set of valid internalFormat parameters will be
-      a subset of those available as format parameters.
-    </para>
-
-    <![ %Annote [
-      <note><title>Annotation (atomic WriteData)</title><para>
-         The internal format for a buffer can not be specified
-         by using Bufferi. The modular way to set state
-         is preferable for operations that are always, or
-         nearly legal and orthogonal, but specifying the
-         internal format affect allocation and use of a buffer,
-         and would cause too many error cases.
-       </para></note>
-    ]]>
-
-    <![ %Annote [
-      <note><title>Annotation (change buffer format on write)</title><para>
-         The API allows for changing a buffer on every write operation,
-         turning a multichannel buffer into a mono buffer and vice versa.
-         The specification does not require the implementation to handle
-         these operations efficiently, as they might require reallocation
-         of memory. The same is true for resize operations at write.
-         Applications might prefer to release buffer names that do not
-         match current requirements, and request new buffer names instead,
-         an operation which implementations are encouraged to optimize.
-       </para></note>
-    ]]>
-
-    <![ %Annote [
-      <note><title>Annotation (BufferReadData)</title><para>
-         The specification might be amended at a later time
-         with a command to retrieve the data from a buffer,
-         following use of alGetBuffer to retrieve size and 
-         internalFormat. Reading has to be queued for 
-         continuous reads from the actual mixing buffer.
-       </para></note>
-    ]]>
-    <![ %RFC [
-       <note id="rfc-bk000813-01"><title>RFC: frequency for write/read? </title><para>  
-         Do we (ever) want to provide the application control over the internal frequency?
-      </para></note>
-    ]]>
-   </section>
-
-
-   <section>
-   <title>Rendering Multichannel Buffers</title>
-   <para>
-      For a variety of reasons, Sources are not used to feed buffer
-      data into multichannel processing. Instead, a different class
-      of &AL; object is introduced to encapsulate state management
-      and resource management for multichannel output: Multichannel
-      objects.
-   </para>
-   <para>
-      Multichannel objects are referred to by name, and they
-      are managed by an API partly duplicating the Source API:
-      GenMultichannels, IsMultichannel, DeleteMultichannels, 
-      Multichanneli and GetMultichanneli. However, the
-      SourcePlay/Stop commands as well as the Queue/Unqueue
-      commands can be applied to both: these commands accept
-      mcName parameters as well as sName parameters. It is
-      left to the implementation how a Name is mapped to an
-      object, and how the implementation dinstiguishes sNames
-      from mcNames. Within a 32bit namespace, and given the
-      small number of multichannel sources to expect (more than
-      one is quite possible, but not common), the implementation
-      can exploit the fact that Names are opaque to the
-      application. 
-   </para>
-
-    <![ %Annote [
-      <note><title>Annotation (Source NONE)</title><para>
-         The literal value "0", i.e. NONE, is legal. All
-         operations on Source/Multichannel NONE are legal NOPs
-         and quietly ignored. Because of the ambiguity
-         (is NONE a Source or Multichannel) NONE will never
-         be available as an actual object, nor will operations
-         on it ever have effects.
-       </para></note>
-    ]]>
-
-    <![ %Annote [
-      <note><title>Annotation (implicit ambient)</title><para>
-         One way to feed multichannel data into the rendering is
-         using the Listener as a Source (sname==0 implies
-         Listener). This was rejected, as it
-         does not allow for multiple streams. Using multiple
-         Sources with appropriate type SOURCE_AMBIENT or 
-         SOURCE_MULTICHHANEL was rejected, as Sources
-         are by definition spatialized, and support operations
-         which are meaningless or even illegal for an output
-         that is not spatialized at all. Modifying the semantics
-         of Source spatialization by a provision that a relative
-         position of (0,0,0) would mark a Source as ambient was
-         rejected for clarity and cleanness. Updates of Source
-         position can not be expected to convert Sources from 
-         spatialized to ambient and vice versa at any time,
-         a Source State dependent semantics of position updates
-         is outright confusing, handling of sources that are
-         SOURCE_ABSOLUTE but incidentally at listener position
-         can not be different from that of SOURCE_RELATIVE with
-         a zero offset. Furthermore, multichannel data is not
-         necessarily ambient (surround can rotate, while ambient
-         attempts to prevent any perception of direction).
-         Finally, multichannel processing might require per-channel
-         gain adjustment at user request, which is a meaningless
-         concept for Sources. 
-       </para></note>
-    ]]>
-
-
-    <![ %Annote [
-      <note><title>Annotation (no direct mixing)</title><para>
-         Direct mixing into the rendering buffer, allowing the
-         application to superimpose its multichannel data
-         (or custom software mixing results) on the audio stream
-         generated by spatialization was rejected, as it suffers
-         from similar problems as BufferAppendData and loop points,
-         namely the need to operate at sample level on buffers of
-         unknown format that might not even be directly accessible.
-         The same rationale that led to the adoption of maintaining
-         a processing queue for Sources applies to multichannel data.
-       </para></note>
-    ]]>
-
-    <![ %Annote [
-      <note><title>Annotation (no combined Buffer/Passthrough)</title><para>
-         Multichannel buffers cannot serve as multichannel output
-         objects for two reasons: it would complicate the buffer
-         API with operations only applicable to a subset of buffers,
-         and it does not allow for queueing.
-       </para></note>
-    ]]>
-
-    <![ %RFC [
-       <note id="rfc-bk000813-02"><title>RFC: Per-Channel access</title><para>  
-         At a later time we might want to amend the specification to
-         gain access to a single channel within a multichannel buffer.
-         I suggest that any such operation should be restricted to the
-         ability of reading samples from just one channel into application
-         memory, which allows for writing it into a mono buffer subsequently.
-      </para></note>
-    ]]>
-   
-   </section>
-   </chapter>
\ No newline at end of file
diff --git a/neo/openal/docs/chp-operation.sgml b/neo/openal/docs/chp-operation.sgml
deleted file mode 100644
index 78fa87b6..00000000
--- a/neo/openal/docs/chp-operation.sgml
+++ /dev/null
@@ -1,977 +0,0 @@
-
-    <chapter id="oal-operation">
-    <title>&OAL; Operation</title>
-
-     <sect1>
-     <title>&OAL; Fundamentals</title>
-     <para>
-       &OAL; (henceforth, the "&AL;") is concerned only with rendering audio 
-       into an output buffer,
-       and primarily meant for spatialized audio.
-       There is no support for reading audio input from buffers at this
-       time, and no support for MIDI and other components usually
-       associated with audio hardware. Programmers must relay on other
-       mechanisms to obtain audio (e.g. voice) input or generate music.
-     </para>
-     <para>
-       The &AL; has three fundamental primitives or objects -- Buffers, Sources, 
-       and a single Listener. Each object can be changed independently,
-       the setting of one object does not affect the setting of others.
-       The application can also set modes that affect processing. Modes
-       are set, objects specified, and other &AL; operations performed
-       by sending commands in the form of function or procedure calls. 
-     </para><para>
-       Sources store locations, directions, and other attributes of an object in 3D
-       space and have a buffer associated with them for playback.  There are
-       normally far more sources defined than buffers. When the program wants to play
-       a sound, it controls execution through a source object. Sources are
-       processed independently from each other.
-    </para><para>
-       Buffers store compressed or un-compressed audio data.  It is common to
-       initialize a large set of buffers when the program first starts (or at
-       non-critical times during execution -- between levels in a game, for instance).
-       Buffers are referred to by Sources. Data (audio sample data) is associated
-       with buffers. 
-     </para><para>
-       There is only one listener (per audio context).  The listener attributes are
-       similar to source attributes, but are used to represent where the user is
-       hearing the audio from.  The influence of all the sources from the
-       perspective of the listener is mixed and played for the user.
-    </para>
-  
-    <![ %RFC [
-       <note id="rfc-bk000926-03"><title>RFC: Data Binding</title><para>  
-         Have to specifiy when pointer arguments are dereferenced.
-      </para></note>
-    ]]>
-     <sect2>
-     <title>Primitive Types</title>
-     <para>
-        As &AL; is meant to allow for seamless integration with &OGL; code
-        if needed, the &AL; primitive (scalar) data types mimic the
-        &OGL; data types. Guaranteed minimum sizes are stated for &OGL;
-        data types (see table 2.2 of the &OGL; 1.2 Specification), but 
-        the actual choice of C datatype is left to the implementation. 
-        All implementations on a given binary architecture, however, must 
-        use a common definition of these datatypes. 
-     </para>
-
-     <![ %RFC [
-      <note><title>RFC/000507:</title><para>
-         ALlong/ALulong are omitted from the Linux OpenGL Base ABI,
-         and the GL specification. Do we want to go ahead on this,
-         or trail GL? Do we include non-i386 architectures to list
-         sizes explicitely. I.e. do we make the ABI part of our
-         mandate?
-       </para></note>
-     ]]>
-
-    <para>
-     Note that this table uses explicit AL prefixes for clarity,
-     while they might be omitted from the rest of the document
-     for brevity. GCC equivalents are given for IA32, i.e. a
-     portable and widely available compiler on the most common
-     target architecture. 
-    <table>
-    <title>&AL; Primitive Data Types</title>
-    <tgroup cols="4" align="left" colsep=1 rowsep=1>
-    <colspec colname=c1>
-    <colspec colname=c2>
-    <thead>
-    <row>
-       <entry>AL Type</>
-       <entry>Description</>        
-       <entry>GL Type</>  
-       <entry>GCC IA32</entry>
-    </row>
-    </thead>
-    <tbody>
-    <row>
-        <entry> ALboolean                            </entry>
-        <entry> 8-bit boolean                        </entry>
-        <entry> GLboolean                            </entry>
-        <entry> unsigned char                        </entry>
-    </row>
-    <row>
-        <entry> ALbyte                               </entry>
-        <entry> signed 8-bit 2's-complement integer  </entry>
-        <entry> GLbyte                               </entry>
-        <entry> signed char                          </entry>
-    </row>
-    <row >
-        <entry> ALubyte                              </entry>
-        <entry> unsigned 8-bit integer               </entry>
-        <entry> GLubyte                              </entry>
-        <entry> unsigned char                        </entry>
-    </row>
-    <row>
-        <entry> ALshort                              </entry>
-        <entry> signed 16-bit 2's-complement integer </entry>
-        <entry> GLshort                              </entry>
-        <entry> short                                </entry>
-    </row
-    <row>
-        <entry> ALushort                             </entry>
-        <entry> unsigned 16-bit integer              </entry>
-        <entry> GLushort                             </entry>
-        <entry> unsigned short                       </entry>
-    </row>
-    <row>
-        <entry> ALint                                </entry>
-        <entry> signed 32-bit 2's-complement integer </entry>
-        <entry> GLint                                </entry>
-        <entry> int                                  </entry>
-    </row>
-    <row>
-        <entry> ALuint                               </entry>
-        <entry> unsigned 32-bit integer              </entry>
-        <entry> GLuint                               </entry>
-        <entry> unsigned int                         </entry>
-    </row>
-  <![ %RFC [
-    <row>
-        <entry> ALlong                               </entry>
-        <entry> signed 64-bit 2's-complement integer </entry>
-        <entry> n/a                                  </entry>
-        <entry> long long                            </entry>
-    </row>
-    <row>
-        <entry> ALulong                              </entry>
-        <entry> unsigned 64-bit integer              </entry>
-        <entry> n/a                                  </entry>
-        <entry> unsigned long long                   </entry>
-    </row>
-  ]]>
-    <row>
-        <entry> ALsizei                              </entry>
-        <entry> non-negative 32-bit binary integer size </entry>
-        <entry> GLsizei                              </entry>
-        <entry> int                                  </entry>
-    </row>
-    <row>
-        <entry> ALenum                               </entry>
-        <entry> enumerated 32-bit value              </entry>
-        <entry> GLenum                               </entry>
-        <entry> unsigned int                         </entry>
-    </row>
-    <row>
-        <entry> ALbitfield                           </entry>
-        <entry> 32 bit bitfield                      </entry>
-        <entry> GLbitfield                           </entry>
-        <entry> unsigned int                         </entry>
-    </row>
-    <row>
-        <entry> ALfloat                              </entry>
-        <entry> 32-bit IEEE754 floating-point        </entry>
-        <entry> GLfloat                              </entry>
-        <entry> float                                </entry>
-    </row>
-    <row>
-        <entry> ALclampf                             </entry>
-        <entry> Same as ALfloat, but in range [0, 1] </entry>
-        <entry> GLclampf                             </entry>
-        <entry> float                                </entry>
-    </row>
-    <row>
-        <entry> ALdouble                             </entry>
-        <entry> 64-bit IEEE754 floating-point        </entry>
-        <entry> GLdouble                             </entry>
-        <entry> double                               </entry>
-    </row>
-    <row>
-        <entry> ALclampd                             </entry>
-        <entry> Same as ALdouble, but in range [0, 1] </entry>
-        <entry> GLclampd                             </entry>
-        <entry> double                               </entry>
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-    </para>
-
-
-      
-    <![ %Annote [
-       <note><title>Annotation on Type Sizes</title><para>
-         It would be desirable to guarantee the bit size of &AL; data
-         types, but this might affect the mapping to &OGL; types
-         for which the &OGL; specification only guarantees a minimum 
-         size.
-       </para></note>
-       <note><title>Annotation on 64bit integral</title><para>
-         It would be desirable to define ulong and long, but again
-         we defer to &OGL; in this decision.
-       </para></note>
-       <note><title>Annotation on Enumeration</title><para>
-         &enum; is not a C or C++ enumeration, but implemented as
-         C preprocesor defines. This makes it easier to handle
-         extensions to the &AL; namespace, in particular in
-         dealing with delays in distributing updated reference 
-         headers.
-       </para></note>
-    ]]>
-    </sect2>
-    <sect2>
-     <title>Floating-Point Computation</title>
-     <para>
-       Any representable floating-point value is legal as input
-       to a &AL; command that requires floating point data.
-       The result of providing a value that is not a floating
-       point number to such a command is unspecified, but must not
-       lead to &AL; interruption or termination. In IEEE arithmetic,
-       for example, providing a negative zero or a denormalized
-       number to a GL command yields predictable results, while
-       providing an NaN or infinity yields unspecified results.
-     </para><para>
-       Some calculations require division. In such cases (including
-       implied divisions required by vector normalizations), a
-       division by zero produces an unspecified result but must
-       not lead to GL interruption or termination.
-     </para>
-    </sect2>
-    </sect1>
-     
-    <sect1>
-     <title>AL State</title>
-     <para>
-       The &AL; maintains considerable state. This documents enumerates
-       each state variable and describes how each variable can be
-       changed. For purposes of discussion, state variables are
-       categorized somewhat arbitrarily by their function. For example,
-       although we describe operations that the &AL; performs on the
-       implied output buffer, the outbut buffer is not part of the
-       &AL; state. Certain states of &AL; objects (e.g. buffer states
-       with respect to queueing) are introduced for discussion purposes, 
-       but not exposed through the API.
-     </para>
-    </sect1>
-
-    <sect1>
-     <title>AL Command Syntax</title>
-     <para>
-        &AL; commands are functions or procedures. Various groups of
-        commands perform the same operation but differ in how
-        arguments are supplied to them. To conveniently accomodate 
-        this variation, we adopt the &OGL; nnotation for describing
-        commands and their arguments. 
-     </para>
-
-     <![ %Annote [
-      <note><title>Annotation (Not all types supported yet)</title><para>
-          At this time &AL; does not support the full flexibility that
-          &OGL; offers. Certain entry points are supported only for
-          some data types. In general, &AL; tends to use less entry
-          points, using setter commands that use the same tokens
-          as the matching query commands.  
-       </para></note>
-    ]]>
-
-    </sect1>
-
-     <sect1>
-     <title>Basic AL Operation</title>
-     <para>
-       &AL; can be used for a variety of audio playback tasks, and is an
-       excellent complement to &OGL; for real-time rendering.  A programmer who is
-       familiar with &OGL; will immediately notice the similarities between the
-       two APIs in that they describe their 3D environments using similar methods.
-     </para>
-    <para>
-       For an &OGL;/&AL; program, most of the audio programming will be in two
-       places in the code: initialization of the program, and the rendering loop. 
-       An &OGL;/&AL; program will typically contain a section where the graphics and 
-       audio systems are initialized, although it may be spread into multiple functions.
-       For OpenAL, initialization normally consists of creating a context, creating
-       the initial set of buffers, loading the buffers with sample data, creating 
-       sources, attaching buffers to sources, setting locations and directions for 
-       the listener and sources, and setting the initial values for state global 
-       to &AL;.
-    </para>
-
-  <example>
-      <title>Initialization Example</title>
-     <para>
-          &sample.c;
-     </para>
-   <programlisting>    
-  </programlisting>
-       </example>
-
-    <![ %Example [   
-      <example>
-      <title>Initialization Example</title>
-      <programlisting>
-      &ExInitAL.c;
-       </programlisting>
-       </example>
-    ]]>
-
-   <para>
-      The audio update within
-      the rendering loop normally consists of telling &AL; the current locations
-      of the sources and listener, updating the environment settings, and managing
-      buffers.
-   </para>
-
-    <![ %Example [
-      <example>
-      <title>Processing Loop</title>
-      <programlisting>
-// PlaceCamera -- places OpenGL camera and updates OpenAL listener position and source state
-void 3DEnvironemnt:PlaceCamera()
-{
-   // update OpenGL camera position
-   glMatrixMode(GL_PROJECTION);
-   glLoadIdentity();
-   glFrustum(-0.1333, 0.1333, -0.1, 0.1, 0.2, 50.0);
-
-   gluLookAt(listenerPos[0], listenerPos[1], listenerPos[2],
-      (listenerPos[0] + sin(listenerAngle)), listenerPos[1], (listenerPos[2] - cos(listenerAngle)),
-      0.0, 1.0, 0.0);
-
-   // OpenAL stuff...
-   // place listener at camera
-   alListener3f(AL_POSITION, listenerPos[0], listenerPos[1], listenerPos[2]);
-   float directionvect[6];
-   directionvect[0] = (float) sin(listenerAngle);
-   directionvect[1] = 0;
-   directionvect[2] = (float) cos(listenerAngle);
-   directionvect[3] = 0;
-   directionvect[4] = 1;
-   directionvect[5] = 0;
-   alListenerfv(AL_ORIENTATION, directionvect);
-
-   // play phasor if in range, else stop playback
-   if (range() < 9)
-   {
-      alSourcePlay(source[1]);
-   } else
-   {
-      alSourceStop(source[1]);
-   }
-}       
-       </programlisting>
-       </example>
-    ]]>
-
-   </sect1>
-
-     <sect1 id="errors">
-     <title>AL Errors</title>
-     <para>
-       The AL detects only a subset of those conditions that could be
-       considered errors. This is because in many cases error checking
-       would adversely impact the performance of an error-free program.
-       The command
-      <funcsynopsis><funcprototype> 
-      <funcdef> &enum; <function> GetError </function></funcdef>
-      <void>
-      </funcprototype></funcsynopsis>
-      is used to obtain error information. Each detectable error is
-      assigned a numeric code. When an error is detected by AL, 
-      a flag is set and the error code is recorded. Further errors,
-      if they occur, do not affect this recorded code. When GetError
-      is called, the code is returned and the flag is cleared, so that
-      a further error will again record its code. If a call to GetError
-      returns NO_ERROR then there has been no detectable error since
-      the last call to GetError (or since the AL was initialized).
-     </para>
-   
-    <![ %RFC [
-       <note id="rfc-bk000926-04"><title>RFC: GL distributed error </title><para>  
-      To allow for distributed implementations there may be several
-      flag/code pairs. In this case, after a call to GetError returns a
-      value other than NO_ERROR each subsequent call returns the 
-      non-NO_ERROR code of another distinct flag-code pair (in 
-      unspecified order), until all NO_ERROR codes have been returned. 
-      When there are no more non-NO_ERROR codes, all flags be reset.
-      The initial state of all flags is cleared and the initial value
-      of all codes is NO_ERROR.
-     </para></note>
-     <note><title>Annotation (Looping GetError)</title><para>
-       &AL; applications are advised to loop calls of GetError to
-       make sure that all flags are reset. Only the first error
-       occurence for each flag/code pair is recorded, subsequent
-       errors are ignored. The result of a repeated GetError call
-       is not a stack trace or LIFO sequence. All error handling
-       is context specific.
-
-      </para></note>
-    ]]>
-    
-
-    <![ %Annote [
-      <note><title>Annotation (Only First Error)</title><para>
-       Like &OGL; &AL; will ignore subsequent errors once an
-       error conditation has been encountered.
-      </para></note>
-    ]]>
-
-    <para>
-      Error codes can be mapped to strings. The GetString function
-      returns a pointer to a constant (literal) string that is 
-      identical to the identifier used for the enumeration value,
-      as defined in the specification. 
-    </para>
-
-    <![ %Annote [
-      <note><title>Annotation/ Verbose Error String</title><para>
-        There is no need to maintain a separate GetErrorString
-        function (inspired by the proposed gluGetErrorStrings) 
-        as the existing GetString entry point can be used.
-      </para></note>
-    ]]> 
-   
-
-    <para>
-    <table>
-    <title>Error Conditions</title>
-    <tgroup cols="2" align="left" colsep=1 rowsep=1>
-    <colspec colname=c1>
-    <colspec colname=c2>
-    <thead>
-    <row>
-       <entry>Name</>
-       <entry>Description</>        
-    </row>
-    </thead>
-    <tbody>
-    <row>
-       <entry>NO_ERROR</>
-       <entry>"No Error" token.</>  
-    </row>
-    <row>
-       <entry>INVALID_NAME</>
-       <entry>Invalid Name parameter.</>  
-    </row>
-    <row>
-       <entry>INVALID_ENUM</>
-       <entry>Invalid parameter.</> 
-    </row>
-    <row>
-       <entry>INVALID_VALUE</>
-       <entry>Invalid enum parameter value.</>  
-    </row>
-    <row>
-       <entry>INVALID_OPERATION</>
-       <entry>Illegal call.</>  
-    </row>
-    <row>
-       <entry>OUT_OF_MEMORY</>
-       <entry>Unable to allocate memory.</>  
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-      The table summarizes the AL errors. Currently, when an error flag
-      is set, results of AL operations are undefined only if OUT_OF_MEMORY
-      has occured. In other cases, the command generating the error is
-      ignored so that it has no effect on AL state or output buffer
-      contents. If the error generating command returns a value,
-      it returns zero. If the generating command modifies values
-      through a pointer argument, no change is made to these values.
-      These error semantics apply only to AL errors, not to system errors
-      such as memory access errors.
-    </para>
-    <para>
-       Several error generation conditions are implicit in the description
-       of the various AL commands. First, if a command that requires
-       an enumerated value is passed a value that is not one of those
-       specified as allowable for that command, the error INVALID_ENUM
-       results. This is the case even if the argument is a pointer to
-       a symbolic constant if that value is not allowable for the given 
-       command.
-       This will occur whether the value is allowable for other functions,
-       or an invalid integer value.
-    </para>
-    <para>
-       Integer parameters that are used as names for &AL; objects
-       such as Buffers and Sources are checked for validity. If an invalid
-       name parameter is specified in an &AL; command, an
-       INVALID_NAME error will be generated, and the command is ignored.
-    </para>
-    <para>
-       If a negative integer is provided where an argument of type
-       &sizei; is specified, the error INVALID_VALUE results. The same
-       error will result from attempts to set integral and floating
-       point values for attributes exceeding the legal range for
-       these. The specification does not guarantee that the implementation 
-       emits INVALID_VALUE if a &NaN; or &Infty; value is 
-       passed in for a &float; or &double; argument (as the specification 
-       does not enforce possibly expensive testing of floating point
-       values).
-    </para>
-
-   <para>
-      Commands can be invalid. For example, certain commands might not be
-      applicable to a given object. There are also illegal combinations
-      of tokens and values as arguments to a command.  &AL; responds to any 
-      such illegal command with an INVALID_OPERATION error.  
-    </para>
-
-     <![ %Scratch [
-       <para>
-         No longer true except for extensions. To be avoided
-         in general:    &AL; has
-         mutually exclusive commands operating on similar objects.
-         One example is treating a streaming buffer as a 
-         non-streaming buffer, another is appending data to a 
-         non-streaming buffer. 
-       </para>
-    ]]>
-
-    <para>
-       If memory is exhausted as a side effect of the execution of an
-       AL command, either on system level or by exhausting the allocated
-       resources at AL's internal disposal, the error OUT_OF_MEMORY
-       may be generated. This can also happen independent of recent
-       commands if &AL; has to request memory for an internal task
-       and fails to allocate the required memory from the operating
-       system.
-    </para>
-    <para>
-       Otherwise errors are generated only for conditions that are 
-       explicitely described in this specification.
-    </para>
-
-   
-    <![ %RFC [
-       <note id="rfc-bk000807-01"><title>RFC: INVALID_SIZE?</title><para>  
-           Specific error case in which the size argument is
-           negative, or mismatches internal conditions for a getter?
-      </para></note>
-    ]]>
-
-
-    <![ %RFC [
-       <note id="rfc-bk000802-03"><title>RFC: INVALID_POINTER?</title><para>  
-         GL seemingly does not specify a response to NULL pointer
-         destinations, and does not assign an error case. INVALID_VALUE
-         could be used, also we could introduce a separate INVALID_POINTER.
-         Is there a good reason not to catch these cases? 
-      </para></note>
-    ]]>
-   
-  
-    </sect1>
-
-
-
-    <sect1 id="control">
-    <title>Controlling AL Execution</title>
-   <para>
-     The application can temporarily disable certain AL capabilities 
-     on a per Context basis. This allows the driver implementation 
-     to optimize for certain subsets of operations.
-      Enabling and disabling capabilities is handled using a function
-      pair. 
-      <funcsynopsis><funcprototype> 
-      <funcdef> &void; <function> Enable </function></funcdef>
-      <paramdef> &enum; <parameter> target </parameter></paramdef>      
-      </funcprototype></funcsynopsis>
-     <funcsynopsis><funcprototype> 
-      <funcdef> &void; <function> Disable </function></funcdef>
-      <paramdef> &enum; <parameter> target </parameter></paramdef>      
-      </funcprototype></funcsynopsis>
-     The application can also query whether a given capability is
-     currently enabled or not.
-      <funcsynopsis><funcprototype> 
-      <funcdef> &bool; <function> IsEnabled </function></funcdef>
-      <paramdef> &enum; <parameter> target </parameter></paramdef>      
-      </funcprototype></funcsynopsis>
-     If the token used to specify target is not legal,
-     an  INVALID_ENUM error will be generated.
-   </para>
-   <para>
-     At this time, this mechanism is not used. There are no valid
-     targets.
-    </para>
-    <![ %Annote [
-      <note><title>Annotation (Enable/Disable)</title><para>
-          Currently, &AL; is controlled exploiting existing
-          commands. For example, to disable sound output but
-          not processing, the Listener can be muted setting
-          GAIN to zero. Selecting NONE as the distance model
-          disables distance attenuation. Setting DOPPLER_FACTOR
-          to zero disables the Doppler Effect. A redundant
-          mechanism to accomplish the same is not needed.
-       </para></note>
-    ]]>
- 
-    </sect1>
-
-    <sect1 id="objects">
-    <title>Object Paradigm</title>
-    <para>
-     &AL; is an object-oriented API, but it does not expose classes, structs,
-     or other explicit data structures to the application. 
-    </para>
-
-
-    <sect2 id="object-overview-categories">
-     <title>Object Categories</title>
-    <para>
-     &AL; has three primary categories of Objects: 
-     <itemizedlist>
-       <listitem>
-       <para>
-          one unique Listener per Context
-       </para>
-       </listitem>
-       <listitem> 
-       <para>
-          multiple Buffers shared among Contexts
-       </para>
-       </listitem>
-       <listitem> 
-       <para>
-          multiple Sources, each local to a Context
-       </para>
-       </listitem> 
-     </itemizedlist>
-     In the following, "{Object}" will stand for either Source, 
-     Listener, or Buffer.    
-    </para>
-    </sect2>
-
-    <sect2 id="object-overview-dynamic">
-     <title>Static vs. Dynamic Objects</title>
-    <para>
-     The vast majority of &AL; objects are dynamic, and will be created
-     on application demand. There are also &AL; objects that do not have 
-     to be created, and can not be created, on application demand. 
-     Currently, the Listener is the only such static object in &AL;. 
-
-    </para>
-    </sect2>
-
-    <sect2>
-     <title>Object Names</title>
-    <para>
-     Dynamic Objects are manipulated using an integer, which in 
-     analogy to &OGL; is referred to as the object's "name". These 
-     are of type unsigned integer (uint). Names can be valid
-     beyond the lifetime of the context they were requested
-     if the objects in question can be shared among contexts.
-     No guarantees or assumptions are 
-     made in the specification about the precise values or their distribution
-     over the lifetime of the application. As objects might be shared,
-     Names are guaranteed to be 
-     unique within a class of &AL; objects, but no guarantees are made
-     across different classes of objects. Objects that are unique 
-     (singletons), like the Listener, do not require and do not have 
-     an integer "name".
-    </para>
-    </sect2>
-
-
-    <sect2>
-    <title>Requesting Object Names</title>
-    <para>
-     &AL; provides calls to obtain Object Names. The application requests 
-     a number of Objects of a given category using Gen{Object}s.
-     If the number n of Objects requested is negative,
-     an INVALID_VALUE error will caused. The actual values of the
-     Names returned are implementation dependent. No guarantees on 
-     range or value are made. Unlike &OGL; &OAL does not offer alternative 
-     means to define (bind) a Name.
-    </para>
-    <para>
-     Allocation of Object Names does not imply immediate allocation of
-     resources or creation of Objects: the implementation is free to 
-     defer this until a given Object is actually used in mutator calls. 
-     The Names are written at the memory location specified by the caller.
-      <funcsynopsis><funcprototype> 
-      <funcdef> void <function> Gen{Object}s </function></funcdef>
-      <paramdef> &sizei; <parameter> n </parameter></paramdef>
-      <paramdef> &uint;* <parameter> objectNames </parameter></paramdef>
-      </funcprototype></funcsynopsis>
-    </para>
-    <para>
-      Requesting zero names is a legal NOP. Requesting a negative
-      number of names causes an INVALID_VALUE error. 
-      &AL; will respond with an OUT_OF_MEMORY if the application 
-      requests too many objects. The specification does not guarantee
-      that the &AL; implementation will allocate all resources
-      needed for the actual objects at the time the names are
-      reserved. In many cases (Buffers) this could only be
-      implemented by worst case estimation. Allocation of names
-      does not guarantee that all the named objects can actually
-      be used.
-    </para>
-
-
-    <![ %Scratch [
-    <note><para>
-      We do not re-use Names under any circumstance. Do we require
-      implementations throwing OUT_OF_MERMORY errors on allocation of
-      Names? No - we don't even specify buffer sizes. Ambiguity - could
-      an implementation throw OOM because of no names, or OOM because
-      of a (worst case) estimate of object sizes? Do we need OUT_OF_NAMES?   
-    </para></note>
-    ]]>
-
-
-    <![ %Scratch [
-     <warning><para>
-       The current headers include a sizei return parameter:
-        "Returns the number of ids actually allocated."
-       This violates the "failed commands are NOPs" design
-       and introduces ambiguity in error handling, and has
-       thus been changed breaking backwards compatibility.
-     </para></warning>
-     ]]>
-
-    <![ %Annote [
-      <note><title>Annotation (No application selected Names)</title><para>
-           Unlike GL, applications are not free to choose Names; all
-           Names have to be requested. Aside from possible benefits for
-           the implementation, and avoidance of errors in projects
-           that have many modules using the AL implementation (a problem
-           encountered in GL, when the two generation mechanisms are
-           mixed), this also leaves open the door to feed different
-           kinds of objects by Name through the same API entry points. 
-       </para></note>
-    ]]>
- 
-    <![ %Annote [
-      <note><title>Annotate (Negative/zero sizei)</title><para>
-         The specification does not guarantee that sizei is an
-         unsigned integer, but legal values have to be non-negative.
-         However, requesting zero names is a legal NOP. 
-      </para></note>
-    ]]>
-
-     <![ %RFC [
-     <note id=rfc-bk000626-02><title>RFC: Resource Release Hint</title><para>
-      Do we need a hint that resource release has to be done on DeleteXXX,
-       instead of leaving this housekeeping to &AL;?
-     </para></note>
-     <note id=rfc-bk000626-03><title>RFC: Zero Name</title><para>
-      Do we reserve the name "0"? &OGL; provides an alternative mechanism
-      which lets the application pick texture names, which we discarded
-      because it is prone to create error conditions when mixing both 
-      approaches. As all our names are generated using GenXXXX, there
-      is no real need to treat "0" special.
-     </para></note>
-     ]]>
-
-   </sect2>
-
-
-   <sect2>
-   <title>Releasing Object Names</title>
-   <para>
-     &AL; provides calls to the application to release Object Names
-     using Delete{Object}s, implicitly requesting deletion of the 
-     Objects associated with the Names released. If the number n of Objects named 
-     is negative, an INVALID_VALUE error will be caused.
-     If one or more of the specified Names is not valid, an INVALID_NAME 
-     error will be caused. Implementation behavior following any error 
-     is undefined. 
-   </para>
-   <para>
-     Once deleted (even if an error occured on deletion), the Names are 
-     no longer valid for use with any &AL; function calls including
-     calls to Delete{Objects}s. Any such use will cause an INVALID_NAME 
-     error. 
-   </para>
-   <para>
-     The &AL; implementation is free to defer actual release of 
-     resources. Ideally, resources should be released as soon as
-     possible, but no guarantees are made.
-      <funcsynopsis><funcprototype> 
-      <funcdef>&void;<function>Delete{Object}s</function></funcdef>
-      <paramdef>&sizei;<parameter>n</parameter></paramdef>
-      <paramdef>&uint;*<parameter>objectNames</parameter></paramdef>
-      </funcprototype></funcsynopsis>
-    </para>
-   
-    <![ %Annote [
-      <note><title>Annotation</title><para>
-      GenXXX and DeleteXXX can not reasonably be expected to be used 
-      for controlling driver-side resource management from the
-      application. A driver might never release a Source once allocated
-      during the lifetime of the application.   
-    </para></note>
-    ]]>
-
-    <![ %RFC [
-       <note id="rfc-bk000724-18"><title>RFC: Deletion Errors</title><para>  
-          chasan@acm.org:  
-          What happens if an active source (or its associated buffer) is deleted? 
-          The source should be stopped? Or the delete operation is invalid?
-      </para></note>
-    ]]>
-
-   </sect2>
-
-
-   <sect2>
-   <title>Validating an Object Name</title>
-   <para>
-     &AL; provides calls to validate the Name of an Object.
-     The application can verify whether an Object Name is valid
-     using the Is{Object} query. There is no vector (array)
-     version of this function as it defeats the purpose of
-     unambiguous (in)valdiation. Returns &TRUE; if id is a
-     valid Object Name, and &FALSE; otherwise. Object Names are 
-     valid between request (Gen{Object}s) and release (Delete{Object}s).
-     Is{Object} does not distinguish between invalid and deleted Names. 
-      <funcsynopsis><funcprototype> 
-      <funcdef>&bool;<function>Is{Object}</function></funcdef>
-      <paramdef>&uint;<parameter>objectName</parameter></paramdef>
-      </funcprototype></funcsynopsis>
-    </para>
-    <![ %RFC [
-    <note><title>RFC/bk000504:</title><para>
-      If zero is a valid name, this function will have to accept
-      it without an actyual object (or only an internal dummy)
-      being associated with it. I recommend that implementations
-      never return "0" as an object name.
-    </para></note>
-    ]]>
-   </sect2>
-
-
-   <sect2>
-   <title>Setting Object Attributes</title>
-   <para>
-     For &AL; Objects, calls to control their attributes are provided.
-     These depend on the actual properties of a given Object
-     Category. The precise API is discussed for each category,
-     below. Each &AL; command affecting the state of
-     a named Object is usually of the form 
-      <funcsynopsis><funcprototype> 
-      <funcdef> void <function> {Object}{n}{sifd}{v} </function></funcdef>
-      <paramdef> &uint; <parameter> objectName </parameter></paramdef>
-      <paramdef> &enum; <parameter> paramName </parameter></paramdef>
-      <paramdef> &type; <parameter> values </parameter></paramdef>
-      </funcprototype></funcsynopsis>
-     In the case of unnamed (unique) Objects, the (integer) objectName 
-     is omitted, as it is implied by the {Object} part of function name:
-      <funcsynopsis><funcprototype> 
-      <funcdef> void <function> {Object}{n}{sifd}{v} </function></funcdef>
-      <paramdef> &enum; <parameter> paramName </parameter></paramdef>
-      <paramdef> &type; <parameter> values </parameter></paramdef>
-      </funcprototype></funcsynopsis>
-     For example, the Listener3d command would not require an (integer)
-     objectName argument.
-   </para>
-   <para>
-      The objectName specifies the &AL; object affected by this call.
-      Use of an invalid Name will cause an INVALID_NAME error. 
-   </para>
-   <para> 
-      The Object's Attribute to be affected has to be named
-      as paramName. &AL; parameters applicable to one category
-      of Objects are not necessarily legal for another catetgory 
-      of &AL; Objects. Specification of a parameter illegal for
-      a given object will cause an INVALID_OPERATION error.  
-    </para>
-    <para>
-      Not all possible values for a type will be legal for a 
-      given objectName and parameterName. Use of an illegal value 
-      or a NULL value pointer will cause an INVALID_VALUE error.
-    </para>
-    <para>
-      Any command that causes an error is a NOP.
-    </para>
-   </sect2>
-
-   <sect2>
-   <title>Querying Object Attributes</title>
-   <para>
-     For named and for unique &AL; Objects, calls to query their
-     current attributes are provided.
-     These depend on the actual properties of a given Object
-     Category. The performance of such queries is implementation
-     dependent, no performance guarantees are made. The valid values for the 
-     parameter paramName are identical to the ones legal for the complementing
-     attribute setting function.
-      <funcsynopsis><funcprototype> 
-      <funcdef> void <function> Get{Object}{n}{sifd}{v} </function></funcdef>
-      <paramdef> &uint; <parameter> objectName </parameter></paramdef>
-      <paramdef> &enum; <parameter> paramName </parameter></paramdef>
-      <paramdef> &type;* <parameter> destination </parameter></paramdef>
-      </funcprototype></funcsynopsis>
-     For unnamed unique Objects, the objectName is omitted as it is 
-     implied by the function name:
-      <funcsynopsis><funcprototype> 
-      <funcdef> void <function> Get{Object}{n}{sifd}{v} </function></funcdef>
-      <paramdef> &enum; <parameter> paramName </parameter></paramdef>
-      <paramdef> &type;* <parameter> destination </parameter></paramdef>
-      </funcprototype></funcsynopsis>
-    </para>
-    <para>
-     The precise API is discussed for each category separately, below.
-     Unlike their matching mutators, Query functions for non-scalar 
-     properties (vectors etc.) are only available in array form.
-   </para>
-   <para>
-     Use of an invalid Name will cause an INVALID_NAME error. 
-     Specification of an illegal parameter type (token) will cause 
-     an INVALID_ENUM error.  A call with a destination
-     NULL pointer will be quietly ignored. The &AL; state will not 
-     be affected by errors. In case of errors, destination memory 
-     will not be changed.
-    </para>
-   </sect2>
-
-
-   <sect2>
-    <title>Object Attributes</title>
-
-    <para>
-      Attributes affecting the processing of sounds can be set for various
-      &AL; Object categories, or might change as an effect of &AL; calls.
-      The vast majority of these Object properties are specific to the
-      &AL; Object category, in question, but some are applicable to two
-      or more categories, and are listed separately.
-    </para>
-    <para>
-      The general form in which this document describes parameters is
-    <table>
-    <title>{Object} Parameters</title>
-    <tgroup cols="4" align="left" colsep=1 rowsep=1>
-    <colspec colname=c1>
-    <colspec colname=c2>
-    <colspec colname=c3>
-    <colspec colname=c4>
-    <thead>
-    <row>
-       <entry>&Par;</>
-       <entry>&Sig;</>
-       <entry>&Val</>
-       <entry>&Def;</>        
-    </row>
-    </thead>
-    <tbody>
-    <row>
-       <entry>paramName</>
-       <entry>T</>
-       <entry> range or set </>
-       <entry> scalar or n-tuple </>        
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-    Description:
-        The description specifies additional restrictions and details.
-        paramName is given as the &AL; enum defined as its name.
-        T can be a list of legal signatures, usually the array form
-        as well as the flat (unfolded) form.
-    </para>
-
-
-    <![ %RFC [
-     <note id="rfc-bk000626-04"><title>RFC: Initial (Default) State</title><para>
-      The default state of objects will have to be specified here.
-      There will be no commands that allow the application to set
-      other defaults.
-     </para></note>
-     ]]>
-    </sect2>
-    </sect1>
-    </chapter>
-
diff --git a/neo/openal/docs/chp-queueing.sgml b/neo/openal/docs/chp-queueing.sgml
deleted file mode 100644
index 8bce727b..00000000
--- a/neo/openal/docs/chp-queueing.sgml
+++ /dev/null
@@ -1,2 +0,0 @@
-
- <!-- Content has been moved into chp-rendering.sgml --> 
\ No newline at end of file
diff --git a/neo/openal/docs/chp-rendering.sgml b/neo/openal/docs/chp-rendering.sgml
deleted file mode 100644
index 1237e88d..00000000
--- a/neo/openal/docs/chp-rendering.sgml
+++ /dev/null
@@ -1,2076 +0,0 @@
-
-
-    <chapter id="rendering">
-     <title>Listener and Sources</title>
-
-    <sect1 id="object-state">
-     <title>Basic Listener and Source Attributes</title>
-    <para>
-       This section introduces basic attributes that can be set both for 
-       the Listener object and for Source objects.
-    </para>
-
-    <![ %RFC [
-     <note id="rfc-bk000619-02"><title>RFC: attribute grouping</title><para>
-       JM: "These attributes are of
-       two types:  non-positional and positional.
-       Non-positional properties include gain control and Environment Name."
-     </para><para>
-      I said: (low pass) Filters are applied to the sound during processing 
-      at various stages. The exact sequence in which Filters are applied is 
-      determined based on the location of the Objects they are 
-      set for - spatial arrangement of Objects determines the
-      sequence unless invariance is guaranteed, or invariance
-     violation is permitted by the specification and current &AL;
-     configuration state.
-      </para><para>
-      Is there a required order of application, i.e. a pipeline? 
-      </para><para>
-      Filter Parameters vs. Non-positional properties.
-      Spatialization vs. Positional properties.
-      Spatial attributes?
-      Let's postpone grouping of attributes. 
-      </para></note>
-     ]]>
-
-   
-    <para>
-      The &AL; Listener and Sources have attributes to describe 
-      their position, velocity and orientation in three dimensional space.
-      &AL; like &OGL;, uses a right-handed Cartesian coordinate system (RHS), 
-      where in a frontal default view X (thumb) points right,
-      Y (index finger) points up, and Z (middle finger) points towards 
-      the viewer/camera. To switch from a left handed coordinate system (LHS)
-      to a right handed coordinate systems, flip the sign on the Z coordinate.
-    </para>
-
-    <para>
-    <table>
-    <title>Listener/Source Position</title>
-    <tgroup cols="4" align="left" colsep=1 rowsep=1>
-    <thead>
-    <row>
-       <entry>&Par;</>
-       <entry>&Sig;</>
-       <entry>&Val</>
-       <entry>&Def;</>        
-    </row>
-    </thead>
-    <tbody>
-    <row>
-       <entry>POSITION</>
-       <entry>3fv, 3f</>
-       <entry> any except NaN </>
-       <entry> { 0.0f, 0.0f, 0.0f } </>        
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-    Description:
-        POSITION specifies the current location of the Object in the
- 	world coordinate system. Any 3-tuple of valid float/double values 
- 	is allowed. Implementation behavior on encountering &NaN; and &Infty; 
-        is not defined. The Object position is always defined in the
-        world coordinate system.
-    </para>
-
-    <![ %Annote [
-      <note><title>Annotation (No Transformation)</title><para>
-        &AL; does not support transformation operations on Objects.
-        Support for transformation matrices is not planned.
-       </para></note>
-    ]]>
-
-
-    <para>
-    <table>
-    <title>Listener/Source Velocity</title>
-    <tgroup cols="4" align="left" colsep=1 rowsep=1>
-    <thead>
-    <row>
-       <entry>&Par;</>
-       <entry>&Sig;</>
-       <entry>&Val</>
-       <entry>&Def;</>        
-    </row>
-    </thead>
-    <tbody>
-    <row>
-       <entry>VELOCITY</>
-       <entry>3fv, 3f</>
-       <entry> any except NaN </>
-       <entry> { 0.0f, 0.0f, 0.0f } </>        
-    </row>
-    </tbody>
-    </tgroup>
-    </table>     
-    Description:
-        VELOCITY specifies the current velocity (speed and direction) of
- 	the Object, in the world coordinate system. Any 3-tuple of valid 
- 	float/double values is allowed. The Object VELOCITY does not affect 
-        its position.
-        &AL; does not calculate the velocity from subsequent position
- 	updates, nor does it adjust the position over time based on
- 	the specified velocity. Any such calculation is left to the
- 	application. For the purposes of sound processing, position and
- 	velocity are independent parameters affecting different aspects
- 	of the sounds. 
-       </para><para>
-        VELOCITY is taken into account by the driver to synthesize the 
-        Doppler effect perceived by the Listener for each source, based 
-        on the velocity of both Source and Listener, and the Doppler
-        related parameters.
-    </para>
-
-
-
-
-    <para>
-    <table>
-    <title>Listener/Source Gain (logarithmic)</title>
-    <tgroup cols="4" align="left" colsep=1 rowsep=1>
-    <thead>
-    <row>
-       <entry>&Par;</>
-       <entry>&Sig;</>
-       <entry>&Val</>
-       <entry>&Def;</>        
-    </row>
-    </thead>
-    <tbody>
-    <row>
-       <entry>GAIN</>
-       <entry>f</>
-       <entry>0.0f, (0.0f, any</>
-       <entry> 1.0f</>        
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-     Description:
-        GAIN defines a scalar amplitude multiplier. As a Source attribute, it applies
- 	to that particular source only. As a Listener attribute, it effectively
-        applies to all Sources in the current Context. The default 1.0 means 
-        that the sound is un-attenuated. A GAIN value of 0.5 is equivalent to 
-        an attenuation of 6 dB. The value zero equals silence (no output). Driver 
-        implementations are free to optimize this case and skip mixing and 
-        processing stages where applicable. The implementation is in charge of 
-        ensuring artifact-free (click-free) changes of gain values and is free 
-        to defer actual modification of the sound samples, within the limits of 
-        acceptable latencies.
-    </para>
-    <para>
-        GAIN larger than 1 (amplification) is permitted for Source and
-        Listener. However, the implementation is free to clamp the
-        total gain (effective gain per source times listener gain)
-        to 1 to prevent overflow.
-    </para>
-
-
-    <![ %Annote [
-      <note><title>Annotation/ Effective Minimal Distance</title><para>
-         Presuming that the sample uses the entire dynamic range of
-         the encoding format, an effective gain of 1 represents the 
-         maximum volume at which a source can reasonably be played.
-         During processing, the implementation combines the Source
-         GAIN (or MIN_GAIN, if set and larger) with distance based
-         attenuation. The distance at which the effective gain is 1
-         is equivalent to the DirectSound3D MIN_DISTANCE parameter.  
-         Once the effective gain has reached the maximum possible
-         value, it will not increase with decreasing distance anymore.
-      </para></note>
-    ]]>
-
-   
-    <![ %Annote [
-      <note><title>Annotation (Muting a Context)</title><para>
-         To mute the current context, simply set Listener GAIN to zero.
-         The implementation is expected to optimize for this case,
-         calculating necessary (offset) updates but bypassing the 
-         mixing and releasing hardware resources.
-         The specification does not guarantee that the implementation
-         will release hardware resources used by a muted context.
-       </para></note>
-    ]]>
-
-    <![ %Annote [
-      <note><title>Annotation (Muting a Source)</title><para>
-        To mute a Source, set Source GAIN to zero. The &AL; implementation
-        is encouraged to optimize for this case. 
-       </para></note>
-    ]]>
-
-    <![ %RFC [
-    <para>
-        <note id="rf-bk000503-01"><title>RFC: GAIN &gt; 1?</title><para>       
-        GAIN could exceed 1 (to compensate attenuation elsewhere, or to account 
-        for grater dynamic range of the hardware? No guarantees are made with 
-        respect to range overflows? Precision loss? Culling by effective gain?
-        Does &AL; clip values during processing, and when/at what stages?
-        </para></note>
-
-        <note id="rfc-bk000619-01"><title>RFC: Doppler</title><para>
-        JM wrote: "VELOCITY is used by the driver
-        to synthesize the Doppler effect perceived by the listener for each
- 	source, based on the relative velocity of this source with respect
- 	to the listener."
-        Doppler is calculated using Source and Listener velocities measured 
-        with respect to the medium. Do we have to account for the medium
-        to move (offsetting listener/source) in later revisions (air/water currents)?
-        </para></note>
-   
-        <note id="rfc-bk000619-03"><title>RFC: </title><para>
-        JM removed: "For the purposes of sound processing, position and
-        velocity are independent parameters affecting different paths
-        in the sound synthesis." I think the "different aspects of sounds"
-        is ambiguous. Is there a problem with describing &AL; as a
-        multichannel processing machine?
-        </para></note>
-    </para>
-     ]]>
-
-    </sect1>
-
-
-    <sect1 id="object-listener">
-     <title>Listener Object</title>
-
-    <para>
-     The Listener Object defines various properties that affect processing of
-     the sound for the actual output. The Listener is unique for an &AL; Context,
-     and has no Name. By controlling the listener, the application controls
-     the way the user experiences the virtual world, as the listener defines
-     the sampling/pickup point and orientation, and other parameters that
-     affect the output stream.
-    </para>
-    <para>
-      It is entirely up to the driver and hardware configuration, i.e.
-      the installation of &AL; as part of the operating system and
-      hardware setup, whether the output stream is generated for
-      headphones or 2 speakers, 4.1 speakers, or other arrangements,
-      whether (and which) HRTF's are applied, etc..
-    </para>
-    
-    <![ %Annote [
-      <note><title>Annotation (Listener Anatomy)</title><para>
-       The API is ignorant with respect to the real world 
-       listener, it does not need to make assumptions on the 
-       listening capabilities of the user, its species or its 
-       number of ears. It only describes a scene and the position 
-       of the listener in this scene.  It is the &AL; implementation
-       that is designed for humans with ears on either side of the 
-       head.
-       </para></note>
-    ]]>
-
- 
-    <![ %Annote [
-      <note><title>Annotation (Listener State Evaluation)</title><para>
-       Some Listener state (GAIN) affects only the very last
-       stage of sound synthesis, and is thus applied to the sound stream 
-       as sampled at the Listener position. Other Listener state is
-       applied earlier. One example is Listener velocity as used to 
-       compute the amount of Doppler pitch-shifting applied to each source:
-       In a typical implementation, pitch-shifting (sample-rate conversion) 
-       might be the first stage of the audio processing for each source.
-       </para></note>
-    ]]>
-
-
-    <sect2>
-    <title>Listener Attributes</title>
-
-    <para>
-      Several Source attributes also apply to Listener: e.g. POSITION, VELOCITY,
-      GAIN. In addition, some attributes are listener specific.
-    <table>
-    <title>Listener Orientation</title>
-    <tgroup cols="4" align="left" colsep=1 rowsep=1>
-    <thead>
-    <row>
-       <entry>&Par;</>
-       <entry>&Sig;</>
-       <entry>&Val</>
-       <entry>&Def;</>        
-    </row>
-    </thead>
-    <tbody>
-    <row>
-       <entry>ORIENTATION</>
-       <entry> fv </>
-       <entry> any except NaN </>
-       <entry>  { { 0.0f, 0.0f, -1.0f },       { 0.0f, 1.0f, 0.0f } } </>        
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-      Description:
-        ORIENTATION is a pair of 3-tuples representing the 'at' direction vector  
-        and 'up' direction of the Object in Cartesian space. &AL; expects two
-        vectors that are orthogonal to each other. These
-        vectors are not expected to be normalized. If one or more vectors 
-        have zero length, implementation behavior is undefined. If the two
-        vectors are linearly dependent, behavior is undefined.
-     </para>
-     <![ %RFC [
-      <note id="rfc-bk000503-01"><title>RFC: Orientation Paranoia</title><para>
-        Watch LHS vs. RHS (sign on 'at'). 
-        Confirm sequence is (up, at) not vice versa.
-        Do we want to allow for different representations down the road?
-      </para></note>
-     ]]>
-    </sect2>
-
-    <sect2>
-    <title>Changing Listener Attributes</title>
-    <para>
-      Listener attributes are changed using the Listener group of commands.
-      <funcsynopsis><funcprototype> 
-      <funcdef> void <function> Listener{n}{sifd}{v} </function></funcdef>
-      <paramdef> &enum; <parameter> paramName </parameter></paramdef>
-      <paramdef> &type; <parameter> values </parameter></paramdef>
-      </funcprototype></funcsynopsis>
-    </para>
-    </sect2>
-
-    <sect2>
-    <title>Querying Listener Attributes</title>
-    <para>
-      Listener state is maintained inside the &AL; implementation and can be
-      queried in full. See Querying Object Attributes. The valid values for 
-      paramName are identical to the ones for the Listener* command.
-      <funcsynopsis><funcprototype> 
-      <funcdef> void <function> GetListener{sifd}v </function></funcdef>
-      <paramdef> &enum; <parameter> paramName </parameter></paramdef>
-      <paramdef> &type;* <parameter> values </parameter></paramdef>
-      </funcprototype></funcsynopsis>
-    </para>
-    </sect2>
-   </sect1>
-
-
-
-  <sect1 id="object-sources">
-     <title>Source Objects</title>
-     <para>
-       Sources specify attributes like position, velocity, and a buffer with
-       sample data. By controlling a Source's attributes the
-       application can modify and parameterize the static sample data provided
-       by the Buffer referenced by the Source.
-       Sources define a localized sound, and encapsulate 
-       a set of attributes applied to a sound at its origin, i.e. in the 
-       very first stage of the processing on the way to the listener. 
-       Source related effects have to be applied 
-       before Listener related effects unless the output is invariant
-       to any collapse or reversal of order. 
-     </para>
-     <para>
-      &AL; also provides additional functions to manipulate and query the
-      execution state of Sources: the current playing status of a 
-      source (started, stopped, paused), including access to the current
-      sampling position within the associated Buffer. 
-     </para>
-  
-    <![ %RFC [
-      <note id="rfc-briareos000629-01"><title>RFC: Mike on Source Types</title><para>  
-        AL_SOURCE_ABSOLUTE and AL_SOURCE_AMBIENT have been
-        deprecated. AL_SOURCE_ABSOLUTE was simply the converse of the
-        AL_SOURCE_RELATIVE pname, and as such was unnecessary. The
-        effect of AL_SOURCE_AMBIENT is trivially emulated by either
-        querying the Listener position and setting the Source position
-        accordingly, or setting the Source position to (0,0,0) and the
-        type to AL_SOURCE_RELATIVE, and is therefore also unnecessary.
-      </para></note>
-   ]]>
- 
-
-   <![ %RFC [
-     <note id="rfc-bk000721-02"><title>RFC: Bernd on Source Types</title><para>
-       Mike seems to miss a few problems here. W/o a converse we can't
-       reset source attributes to ABSOLUTE. Ambient sounds are not 
-       necessarily trivial. A3D manual suggested some magic number
-       to fake the effect of ambient (i.e. sound that ideally
-       can't be localized by listener). If we can get away with such magic 
-       numbers in a tutorial in a driver-independent way, fine. If there is any
-       risk that the impression of ambient sound requires driver specific
-       hacks, then we need AMBIENT. As soon as we have a third localization
-       type, ABSOLUTE and RELATIVE are needed as there is no unambiguous
-       converse.
-
-       From the A3D 2.0 Optimize.doc: 
-       "Adding some ambient background noise is a great way to fill in the gaps 
-        when the audio content is reduced.  A great way to make an ambient sound 
-        seem like it is coming from everywhere is to load up two buffers with the 
-        same sound, and position them about 2 meters behind the listener at 
-        about 4 and 8 o\rquote clock.  The waves have to be looping (make sure
-        there is no beating when you play them back).  Starting the sounds 180 
-        degrees out of phase can help, as will playing them with slightly different 
-        pitch-shift values." 
-     </para></note>
-   ]]>
-
-   <![ %RFC [
-     <note id="rfc-bk000721-03"><title>RFC: Bernd on Source Types (2)</title><para>
-       There is a point to be made in using POSITION_RELATIVE and
-       VELOCITY_RELATIVE iff we do not have AMBIENT to consider.
-       This makes it a call-by-call choice when setting Source3f{v} 
-       vectors, as it is applied when dereferencing.
-   </para></note>
-   ]]>
-
-   <![ %RFC [
-     <note id="rfc-bk000721-04"><title>RFC: Bernd on Source Types (3)</title><para>
-       Semantically, AMBIENT has nothing to do with coordinate systems, 
-       it is a qualifier just like multichannel direct passthru.
-   </para></note>
-   ]]>
-
-    <![ %RFC [
-      <note id="rfc-bk000721-05"><title>RFC:  Source Attenuation Clamping</title><para>  
-         Using AL_SOURCE_ATTENUATION_MIN and AL_SOURCE_ATTENUATION_MAX
-         to specify the clamping values for the normalized attenuation
-         factor (which is a function of distance) is in contradiction
-         to the distance based model that Creative is pushing for
-         (DirectSound). As driver-interall culling of source and other
-         processing might be based on the effective (overall, ultimate)
-         gain composed of amplifications and attenuations accumulated
-         over the entire processing, I raise the question whether a sound
-         designer might not want to control the effective GAIN ranges
-         instead of the distance attenuation itself. Samples commonly
-         use the entire dynamic range provided by the format, which is
-         mapped to the entire dynamic range of the output device. An
-         effective gain exceeding 1 does not make sense, an amplification
-         during processing might.
-      </para></note>
-    ]]>
-    
-
-
-
-
-    <sect2>
-    <title>Managing Source Names</title>
-    <para> 
-     &AL; provides calls to request and release Source Names handles.
-     Calls to control Source Execution State are also provided.
-    </para>
-
-    <sect3>
-    <title>Requesting a Source Name</title>
-    <para>
-     The application requests a number of Sources using GenSources.
-      <funcsynopsis><funcprototype> 
-      <funcdef> &void; <function> GenSources </function></funcdef>
-      <paramdef> &sizei; <parameter> n </parameter></paramdef>
-      <paramdef> &uint;* <parameter> sources </parameter></paramdef>
-      </funcprototype></funcsynopsis>
-    </para>
-   </sect3>
-
-
-   <sect3>
-   <title>Releasing Source Names</title>
-   <para>
-     The application requests deletion of a number of Sources
-     by DeleteSources.
-      <funcsynopsis><funcprototype> 
-      <funcdef> &void; <function> DeleteSources </function></funcdef>
-      <paramdef> &sizei; <parameter> n </parameter></paramdef>
-      <paramdef> &uint;* <parameter> sources </parameter></paramdef>
-      </funcprototype></funcsynopsis>
-    </para>
-   </sect3>
-
-   <sect3>
-   <title>Validating a Source Name</title>
-   <para>
-     The application can verify whether a source name is valid
-     using the IsSource query.
-      <funcsynopsis><funcprototype> 
-      <funcdef> &bool; <function> IsSource </function></funcdef>
-      <paramdef> &uint; <parameter> sourceName </parameter></paramdef>
-      </funcprototype></funcsynopsis>
-    </para>
-   </sect3>
-   </sect2>
-
-
-    <sect2>
-    <title>Source Attributes</title>
-    <para>
-        This section lists the attributes that are set per Source,
-        affecting the processing of the current buffer. Some of
-        these attributes can also be set for buffer queue entries.
-    </para> 
-    <![ %Annote [
-      <note><title>Annotation (No Priorities)</title><para>
-         There are no per Source priorities, and no explicit priority
-         handling, defined at this point. A mechanism that lets the
-         application express preferences in case that the implementation
-         provides culling and prioritization mechanisms might be added
-         at some later time. This topic is under discussion for GL as
-         well, which already has one exlicit priority API along with 
-         internally used MRU heuristics (for resident texture memory). 
-       </para></note>
-    ]]>
- 
-
-
-
-    <sect3>
-    <title>Source Positioning</title>
-    <para>
-    <table>
-    <title>SOURCE_RELATIVE Attribute</title>
-    <tgroup cols="4" align="left" colsep=1 rowsep=1>
-    <thead>
-    <row>
-       <entry>&Par;</>
-       <entry>&Sig;</>
-       <entry>&Val</>
-       <entry>&Def;</>        
-    </row>
-    </thead>
-    <tbody>
-    <row>
-       <entry> SOURCE_RELATIVE </>
-       <entry> &bool; </>
-       <entry> FALSE, TRUE</>
-       <entry> FALSE </>        
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-       SOURCE_RELATIVE set to TRUE indicates that the values
-       specified by POSITION are to be interpreted relative 
-       to the listener position.
-    </para>
-
-
-    <![ %Annote [
-      <note><title>Annotation (Position only)</title><para>
-        SOURCE_RELATIVE does not affect velocity or orientation
-        calculation.
-       </para></note>
-    ]]>
-
-    </sect3>
-
-    <sect3>
-    <title>Buffer Looping</title>
-    <para>
-    <table>
-    <title>Source LOOPING  Attribute</title>
-    <tgroup cols="4" align="left" colsep=1 rowsep=1>
-    <colspec colname=c1>
-    <colspec colname=c2>
-    <colspec colname=c3>
-    <colspec colname=c4>
-    <spanspec spanname=hspan namest=c1 nameend=c4 align=left>
-    <thead>
-    <row>
-       <entry>&Par;</>
-       <entry>&Sig;</>
-       <entry>&Val</>
-       <entry>&Def;</>        
-    </row>
-    </thead>
-    <tbody>
-    <row>
-       <entry> LOOPING </>
-       <entry> &uint; </>
-       <entry> TURE, FALSE</>
-       <entry> FALSE </>        
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-     Description:
-       LOOPING is a flag that indicates that the Source will not 
-       be in STOPPED state once it reaches the end of last buffer
-       in the buffer queue. Instead, the Source will immediately
-       promote to INITIAL and PLAYING. The default value is FALSE.
-       LOOPING can be changed on a Source in any execution state.
-       In particular, it can be changed on a PLAYING Source.
-    </para>
-
-    <![ %Annote [
-      <note><title>Annotation (Finite Repetition)</title><para>
-        Finite reptition is implemented by buffer queueing.
-       </para></note>
-    ]]>
-
-    <![ %Annote [
-      <note><title>Annotation (Loop Control)</title><para>
-        To implement a 3 stage "loop point" solution, the
-        application has to queue the FadeIn buffer first,
-        then queue the buffer it wants to loop, and set 
-        LOOPING to TRUE once the FadeIn buffer has been
-        processed and unqueued. To fade from looping, the 
-        application can queue a FadeOut buffer, then
-        set LOOPING to false on the PLAYING source. Alternatively,
-        the application can decide to not use the LOOPING
-        attribute at all, and just continue to queue the buffer
-        it wants repeated. 
-       </para></note>
-    ]]>
-
-    <![ %Annote [
-      <note><title>Annotation (Rejected alternatives)</title><para>
-        A finite loop counter was rejected because it is
-        ambiguous with respect to persistent (initial counter) 
-        vs. transient (current counter). For similar reasons,
-        a Play-equivalent command with a (transient) loop counter
-        was rejected.  
-      </para></note>
-    ]]>
-    </sect3>
-
-    <sect3>
-    <title>Current Buffer</title>
-    <para>
-    <table>
-    <title>Source BUFFER Attribute</title>
-    <tgroup cols="4" align="left" colsep=1 rowsep=1>
-    <thead>
-    <row>
-       <entry>&Par;</>
-       <entry>&Sig;</>
-       <entry>&Val</>
-       <entry>&Def;</>        
-    </row>
-    </thead>
-    <tbody>
-    <row>
-       <entry>BUFFER</>
-       <entry> &uint; </>
-       <entry> any valid bufferName </>
-       <entry> &NONE; </>        
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-     Description: 
-        Specifies the current Buffer object, making it the
-        head entry in the Source's queue.  Using BUFFER on a 
-        STOPPED or INITIAL Source empties the entire queue,
-        then appends the one Buffer specified.
-    </para>
-    <para>
-       For a PLAYING or PAUSED Source, using the Source command 
-       with BUFFER is an INVALID_OPERATION. 
-       It can be applied to INITIAL and STOPPED Sources only.
-       Specifying an invalid bufferName will
-       result in an INVALID_VALUE error while specifying an
-       invalid sourceName results in an INVALID_NAME error.
-    </para>
-    <para>
-        NONE, i.e. 0, is a valid buffer Name.
-        Source( sName, BUFFER, 0 ) is a legal way to release the
-        current buffer queue on an INITIAL or STOPPED Source,
-        whether it has just one entry (current buffer) or more.
-        The Source( sName, BUFFER, NONE) call still causes an 
-        INVALID_OPERATION for any source PLAYING or PAUSED, 
-        consequently it cannot be abused to mute or stop a source.
-    </para>
-
-    <![ %Annote [
-      <note><title>Annotation (repeated Source+BUFFER does not queue) </title><para>
-            Using repeated Source(BUFFER) calls to queue a buffer on
-            an active source would imply that there is no way to
-            release the current buffer e.g. by setting it to 0.
-            On the other hand read-only queues do not allow for
-            releasing a buffer without releasing the entire queue.
-
-            We can not require BUFFER state to be transient and lost 
-            as soon as a Source is implicitely or explicitely stopped. 
-            This contradicts queue state being part of the Source's 
-            configuration state that is preserved through Stop() 
-            operations and available for Play().
-       </para></note>
-    ]]>
-
-  
-    </sect3>
-
-
-    <sect3>
-    <title>Queue State Queries</title>
-    <para>
-    <table>
-    <title>BUFFERS_QUEUED Attribute</title>
-    <tgroup cols="4" align="left" colsep=1 rowsep=1>
-    <thead>
-    <row>
-       <entry>&Par;</>
-       <entry>&Sig;</>
-       <entry>&Val</>
-       <entry>&Def;</>        
-    </row>
-    </thead>
-    <tbody>
-    <row>
-       <entry> BUFFERS_QUEUED </>
-       <entry> &uint; </>
-       <entry> [0, any]</>
-       <entry> none </>        
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-       Query only. Query the number of buffers in the queue
-       of a given Source. This includes those not yet played,
-       the one currently playing, and the ones that have been 
-       played already. This will return 0 if the current and 
-       only bufferName is 0.
-    </para>
-
-
-    <para>
-    <table>
-    <title>BUFFERS_PROCESSED Attribute</title>
-    <tgroup cols="4" align="left" colsep=1 rowsep=1>
-    <thead>
-    <row>
-       <entry>&Par;</>
-       <entry>&Sig;</>
-       <entry>&Val</>
-       <entry>&Def;</>        
-    </row>
-    </thead>
-    <tbody>
-    <row>
-       <entry> BUFFERS_PROCESSED </>
-       <entry> &uint; </>
-       <entry> [0, any]</>
-       <entry> none </>        
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-       Query only. Query the number of buffers that have
-       been played by a given Source. 
-       Indirectly, this gives the index of the buffer
-       currently playing. Used to determine how much
-       slots are needed for unqueueing them.
-       On an STOPPED Source, all buffers are processed.
-       On an INITIAL Source, no buffers are processed,
-       all buffers are pending.
-       This will return 0 if the current and 
-       only bufferName is 0.
-    </para>
-
-    <![ %Annote [
-      <note><title>Annotation (per-Source vs. Buffer State)</title><para>
-       BUFFERS_PROCESSED is only defined within the scope of a given
-       Source's queue. It indicates that the given number of buffer names
-       can be unqueued for this Source. It does not guarantee that the
-       buffers can safely be deleted or refilled, as they might still be
-       queued with other Sources. One way to keep track of this is to
-       store, per buffer, the Source for which a given buffer was most
-       recently scheduled (this will not work if Sources sharing buffers
-       might be paused by the application). If necessary an explicit
-       query for a given buffer name can be added in later revisions.
-      </para></note>
-    ]]>
-
-    <![ %Annote [
-      <note><title>Annotation (No Looping Queues)</title><para>
-         Unqueueing requires nonzero BUFFERS_PROCESSED,
-         which necessitates no looping on entire queues,
-         unless we accept that no unqueueing is possible
-         from Source looping over the entire queue.
-         Currently not supported, as queueing is 
-         primarily meant for streaming, which implies
-         unqueue-refill-requeue operations.
-      </para></note>
-    ]]>
-
-
-    </sect3>
-
-    <sect3>
-    <title>Bounds on Gain</title>
-    <para>
-    <table>
-    <title>Source Minimal Gain</title>
-    <tgroup cols="4" align="left" colsep=1 rowsep=1>
-    <thead>
-    <row>
-       <entry>&Par;</>
-       <entry>&Sig;</>
-       <entry>&Val</>
-       <entry>&Def;</>        
-    </row>
-    </thead>
-    <tbody>
-    <row>
-       <entry>MIN_GAIN</>
-       <entry>f</>
-       <entry>0.0f, (0.0f, 1.0f]</>
-       <entry>0.0f</>        
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-     Description:
-        MIN_GAIN is a scalar amplitude threshold. It indicates the minimal GAIN 
-        that is always guaranteed for this Source. At the end of the processing
-        of various attenuation factors such as distance based attenuation and
-        Source GAIN, the effective gain calculated is compared to this value.
-        If the effective gain is lower than MIN_GAIN, MIN_GAIN is applied.
-        This happens before the Listener GAIN is applied. If a zero MIN_GAIN 
-        is set, then the effective gain will not be corrected.
-    </para>
-
-
-    <![ %Annote [
-      <note><title>Annotation (Effective Maximal Distance)</title><para>
-         By setting MIN_GAIN, the application implicitely defines a
-         maximum distance for a given distance attenuation model and
-         Source GAIN. The distance at which the effective gain is MIN_GAIN
-         can be used as a replacement to the DirectSound3D MAX_DISTANCE parameter.  
-         Once the effective gain has reached the MIN_GAIN value, it will 
-         no longer decrease with increasing distance.
-      </para></note>
-    ]]>
-
-   
-    <para>
-    <table>
-    <title>Source Maximal Gain (logarithmic)</title>
-    <tgroup cols="4" align="left" colsep=1 rowsep=1>
-    <thead>
-    <row>
-       <entry>&Par;</>
-       <entry>&Sig;</>
-       <entry>&Val</>
-       <entry>&Def;</>        
-    </row>
-    </thead>
-    <tbody>
-    <row>
-       <entry>MAX_GAIN</>
-       <entry>f</>
-       <entry>0.0f, (0.0f, 1.0f]</>
-       <entry>1.0f</>        
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-     Description:
-        MAX_GAIN defines a scalar amplitude threshold. It indicates the maximal 
-        GAIN permitted for this Source. At the end of the processing
-        of various attenuation factors such as distance based attenuation and
-        Source GAIN, the effective gain calculated is compared to this value.
-        If the effective gain is higher than MAX_GAIN, MAX_GAIN is applied.
-        This happens before the Listener GAIN is applied. If the Listener gain
-        times MAX_GAIN still exceeds the maximum gain the implementation can
-        handle, the implementation is free to clamp. If a zero MAX_GAIN 
-        is set, then the Source is effectively muted. The implementation is free
-        to optimize for this situation, but no optimization is required or
-        recommended as setting GAIN to zero is the proper way to mute a Source.
-    </para>
-
-    <![ %Annote [
-      <note><title>Annotation (Un-attenuated Source)</title><para>
-         Setting MIN_GAIN and MAX_GAIN to the GAIN value will effectively
-         make the Source amplitude independent of distance. The 
-         implementation is free to optimize for this situation. However, the
-         recommended way to accomplish this effect is using a ROLLOFF_FACTOR 
-         of zero.
-       </para></note>
-    ]]>
-
-
-
-    <![ %Annote [
-      <note><title>Annotation (Internal GAIN threshold)</title><para>
-        The &AL; implementation is free to use an internally chosen 
-        threshold level below which a Source is ignored for mixing. 
-        Reasonable choices would set this threshold low enough so 
-        that the user will not perceive a difference.  Setting MIN_GAIN
-        for a source will override any implementation defined test.     
-       </para></note>
-    ]]>
-    </sect3>
-
-
-
-    <sect3>
-    <title>Distance Model Attributes</title>
-    <para>
-    <table>
-    <title> REFERENCE_DISTANCE Attribute</title>
-    <tgroup cols="4" align="left" colsep=1 rowsep=1>
-    <thead>
-    <row>
-       <entry>&Par;</>
-       <entry>&Sig;</>
-       <entry>&Val</>
-       <entry>&Def;</>        
-    </row>
-    </thead>
-    <tbody>
-    <row>
-       <entry> REFERENCE_DISTANCE </>
-       <entry> &float; </>
-       <entry> [0, any]</>
-       <entry> 1.0f </>        
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-       This is used for distance attenuation calculations
-       based on inverse distance with rolloff. Depending
-       on the distance model it will also act as a distance
-       threshold below which gain is clamped. See the
-       section on distance models for details.
-    </para>
-
-
-    <para>
-    <table>
-    <title> ROLLOFF_FACTOR Attribute</title>
-    <tgroup cols="4" align="left" colsep=1 rowsep=1>
-    <thead>
-    <row>
-       <entry>&Par;</>
-       <entry>&Sig;</>
-       <entry>&Val</>
-       <entry>&Def;</>        
-    </row>
-    </thead>
-    <tbody>
-    <row>
-       <entry> ROLLOFF_FACTOR </>
-       <entry> &float; </>
-       <entry> [0, any]</>
-       <entry> 1.0f </>        
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-       This is used for distance attenuation calculations
-       based on inverse distance with rolloff. For
-       distances smaller than MAX_DISTANCE (and, depending
-       on the distance model, larger than REFERENCE_DISTANCE), 
-       this will scale the distance attenuation over the
-       applicable range. See section on distance models for
-       details how the attenuation is computed as a function
-       of the distance.
-    </para>   
-    <para>
-       In particular, ROLLOFF_FACTOR can be set to zero for
-       those Sources that are supposed to be exempt from
-       distance attenuation. The implementation is encouraged
-       to optimize this case, bypassing distance attenuation
-       calculation entirely on a per-Source basis.
-    </para>
-
-    <para>
-    <table>
-    <title> MAX_DISTANCE Attribute</title>
-    <tgroup cols="4" align="left" colsep=1 rowsep=1>
-    <thead>
-    <row>
-       <entry>&Par;</>
-       <entry>&Sig;</>
-       <entry>&Val</>
-       <entry>&Def;</>        
-    </row>
-    </thead>
-    <tbody>
-    <row>
-       <entry> MAX_DISTANCE </>
-       <entry> &float; </>
-       <entry> [0, any]</>
-       <entry> MAX_FLOAT </>        
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-       This is used for distance attenuation calculations
-       based on inverse distance with rolloff, if the
-       Inverse Clamped Distance Model is used. In this case,
-       distances greater than MAX_DISTANCE will
-       be clamped to MAX_DISTANCE.
-       MAX_DISTANCE based clamping is applied before MIN_GAIN clamping,
-       so if the effective gain at MAX_DISTANCE is larger than MIN_GAIN,
-       MIN_GAIN will have no effect. No culling is supported.     
-    </para>
-
-    <![ %Annote [
-      <note><title>Annotation (No Culling)</title><para>
-      This is a per-Source attribute supported for DS3D compatibility
-      only. Other API features might suffer from side effects due to 
-      the clamping of distance (instead of e.g. clamping to an effective
-      gain at MAX_DISTANCE). 
-      </para></note>
-    ]]>
-
-    </sect3>
-
-
-
-
-    <sect3>
-    <title>Frequency Shift by Pitch</title>
-    <para>
-    <table>
-    <title>Source PITCH Attribute</title>
-    <tgroup cols="4" align="left" colsep=1 rowsep=1>
-    <thead>
-    <row>
-       <entry>&Par;</>
-       <entry>&Sig;</>
-       <entry>&Val</>
-       <entry>&Def;</>        
-    </row>
-    </thead>
-    <tbody>
-    <row>
-       <entry>PITCH</>
-       <entry>f</>
-       <entry> (0.0f, 2.0f]</>
-       <entry> 1.0f</>        
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-     Description: 
-        Desired pitch shift, where 1.0 equals identity. Each reduction by 50 percent 
-        equals a pitch shift of -12 semitones (one octave reduction). Zero is not
-        a legal value.
-    </para>
-    </sect3>
-
-
-    <sect3>
-    <title>Direction and Cone</title>
-    <para>
-       Each Source can be directional, depending on the settings for
-       CONE_INNER_ANGLE and CONE_OUTER_ANGLE. There are three zones
-       defined: the inner cone, the outside zone, and the transitional
-       zone in between. 
-       The angle-dependent gain for a directional source is constant 
-       inside the inner cone, and changes over the transitional zone
-       to the value specified outside the outer cone.
-       Source GAIN is applied for the inner cone,
-       with an application selectable CONE_OUTER_GAIN factor to
-       define the gain in the outer zone. In the transitional
-       zone implementation-dependent interpolation between
-       GAIN and GAIN times CONE_OUTER_GAIN is applied.
-
-
-    </para>
-    <![ %Annote [
-      <note><title>Annotation (Interpolation Restrictions)</title><para>
-         The specification does not specify the exact interpolation
-         applied in the transitional zone, to calculate gain as a 
-         function of angle. The implementation is free to use
-         linear or other interpolation, as long as the values
-         are monotonically decreasing from GAIN to GAIN times CONE_OUTER_GAIN.
-       </para></note>
-    ]]>
-
-
-    <para>
-    <table>
-    <title>Source DIRECTION Attribute</title>
-    <tgroup cols="4" align="left" colsep=1 rowsep=1>
-    <thead>
-    <row>
-       <entry>&Par;</>
-       <entry>&Sig;</>
-       <entry>&Val</>
-       <entry>&Def;</>        
-    </row>
-    </thead>
-    <tbody>
-    <row>
-       <entry>DIRECTION</>
-       <entry>3fv, 3f</>
-       <entry> any except NaN </>
-       <entry> { 0.0f, 0.0f, 0.0f } </>        
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-     Description: 
-        If DIRECTION does not equal the zero vector, the Source is directional. 
-        The sound emission is presumed to be symmetric
-        around the direction vector (cylinder symmetry). Sources are not
-        oriented in full 3 degrees of freedom, only two angles are effectively
-        needed.
-       </para><para>
-        The zero vector is default, indicating that a Source is not directional.
-        Specifying a non-zero vector will make the Source directional. 
-        Specifying a zero vector for a directional Source will effectively
-        mark it as nondirectional. 
-    </para>
-
-    <![ %RFC [
-       <note id="rfc-bk000821-01"><title>RFC: Oriented Sources </title><para>  
-         Do we want an alternative AZIMUTH/ALTITUDE parametrization?
-         Do we need ORIENTATION later? Is this superimposable? Can we mix both?
-      </para></note>
-    ]]>
-
-    <![ %Annote [
-      <note><title>Annotation (All Sources Directional)</title><para>
-         From the point of view of the &AL; implementation, all
-         Sources are directional. Certain choices for cone angles
-         as well as a direction vector with zero length are treated
-         equivalent to an omnidirectional source. The &AL; 
-         implementation is free to flag and optimize these cases. 
-       </para></note>
-    ]]>
-
-    <![ %RFC [
-       <note id="rfc-bk000803-05"><title>RFC: Separate GenDirectionSource?</title><para>  
-         Is there any risk that directional sources require different
-         resources that have to be allocated from the beginning, and
-         that we can not change an omnidirectional source to a
-         bidirectional source at runtime?
-      </para></note>
-    ]]>
-
-
-    <para>
-    <table>
-    <title>Source CONE_INNER_ANGLE Attribute</title>
-    <tgroup cols="4" align="left" colsep=1 rowsep=1>
-    <thead>
-    <row>
-       <entry>&Par;</>
-       <entry>&Sig;</>
-       <entry>&Val</>
-       <entry>&Def;</>        
-    </row>
-    </thead>
-    <tbody>
-    <row>
-       <entry>CONE_INNER_ANGLE</>
-       <entry>i,f</>
-       <entry>any except NaN</>
-       <entry>360.0f</>        
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-     Description: 
-       Inside angle of the sound cone, in degrees. The default of 360 means that the
-       inner angle covers the entire world, which is equivalent to an omnidirectional 
-       source.
-    </para>
-    <![ %RFC [
-       <note id="rfc-bk000926-01"><title>RFC: inconsistent cone angles? </title><para>  
-        Is (inner &lt;= outer) required? Do we generate an error?
-        Shouldn't this be a CONE_ANGLES 2f call specifying both angles at once?      
-      </para></note>
-    ]]>
-
-
-
-
-    <para>
-    <table>
-    <title>Source CONE_OUTER_ANGLE Attribute</title>
-    <tgroup cols="4" align="left" colsep=1 rowsep=1>
-    <thead>
-    <row>
-       <entry>&Par;</>
-       <entry>&Sig;</>
-       <entry>&Val</>
-       <entry>&Def;</>        
-    </row>
-    </thead>
-    <tbody>
-    <row>
-       <entry>CONE_OUTER_ANGLE</>
-       <entry>i,f</>
-       <entry>any except NaN</>
-       <entry>360.0f</>        
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-     Description: Outer angle of the sound cone, in degrees. The default of 360 means that the
-       outer angle covers the entire world. If the inner angle is also 360, then
-       the zone for angle-dependent attenuation is zero.
-    </para>
-  
-    <![ %RFC [
-       <note id="rfc-bk000926-02"><title>RFC: addition? </title><para>  
-     More generally, we could specify: 
-      "If the sum of inner and outer angles is larger than 360,
-      CONE_OUTER_ANGLE is clamped to (360-CONE_INNER_ANGLE) and
-      there is no transition zone."
-      </para></note>
-    ]]>
-
-    <para>
-    <table>
-    <title>Source CONE_OUTER_GAIN Attribute</title>
-    <tgroup cols="4" align="left" colsep=1 rowsep=1>
-    <thead>
-    <row>
-       <entry>&Par;</>
-       <entry>&Sig;</>
-       <entry>&Val</>
-       <entry>&Def;</>        
-    </row>
-    </thead>
-    <tbody>
-    <row>
-       <entry>CONE_OUTER_GAIN</>
-       <entry>i,f</>
-       <entry>[0.0f, 1.0f]</>
-       <entry>0.0f</>        
-    </row>
-    </tbody>
-    </tgroup>
-    </table>
-        Description: the factor with which GAIN is multiplied to 
-        determine the effective gain outside the cone defined by
-        the outer angle. The effective gain applied outside the
-        outer cone is GAIN times CONE_OUTER_GAIN. Changing
-        GAIN affects all directions, i.e. the source is attenuated 
-        in all directions, for any position of the listener.
-        The application has to change CONE_OUTER_GAIN as well if
-        a different behavior is desired.
-    </para>
-   
-  
-    <![ %Annote [
-      <note><title>Annotation (GAIN calculation)</title><para>
-         The angle-dependend gain DGAIN is multiplied with the
-         gain determined by the source's GAIN and any distance
-         attenuation as applicable. Let theta be the angle
-         between the source's direction vector, and the vector
-         connection the source and the listener. This multiplier 
-         DGAIN is calculated as:
-        <literallayout>
-          OUTER = CONE_OUTER_ANGLE/2;
-          INNER = CONE_INNER_ANGLE/2;
-          if      ( theta less/equal INNER )
-              DGAIN = 1               
-          else if ( theta greater/equal OUTER )
-             DGAIN = CONE_OUTER_GAIN
-          else
-             DGAIN = 1 - (1-CONE_OUTER_GAIN)*((theta-INNER)/(OUTER-INNER))
-          GAIN *= DGAIN
-        </literallayout>
-         in the case of linear interpolation. The implementation
-         is free to use a different interplation across the (INNER,OUTER)
-         range as long as it is monotone. 
-       </para></note>
-    ]]>
-
-    <![ %Annote [
-      <note><title>Annotation (CONE_OUTER_GAIN always less than GAIN)</title><para>
-         CONE_OUTER_GAIN is not an absolute value, but (like all GAIN
-         parameters) a scaling factor. This avoids a possible error 
-         case (implementations can count on effective gain outside the
-         outer cone being smaller than GAIN), and ensures the common
-         case in which changing GAIN should affect inner, transitional, 
-         and outer zone simultaneously.
-      </para><para>
-         In case that the application desires to have an outer zone
-         volume exceeding that of the inner cone, the mapping to
-         &AL; will require to rotate the Source direction to the
-         opposite direction (negate vector), and swapping
-         inner and outer angle.
-      </para></note>
-    ]]>
-    </sect3>
-   </sect2>
-
-
-    <sect2>
-    <title>Changing Source Attributes</title>
-    <para>
-      The Source specifies the position and other properties as
-      taken into account during sound processing. 
-      <funcsynopsis><funcprototype> 
-      <funcdef> void <function> Source{n}{sifd} </function></funcdef>
-      <paramdef> &uint; <parameter> sourceName </parameter></paramdef>
-      <paramdef> &enum; <parameter> paramName </parameter></paramdef>
-      <paramdef> &type; <parameter> value </parameter></paramdef>
-      </funcprototype></funcsynopsis>
-      <funcsynopsis><funcprototype> 
-      <funcdef> void <function> Source{n}{sifd}v </function></funcdef>
-      <paramdef> &uint; <parameter> sourceName </parameter></paramdef>
-      <paramdef> &enum; <parameter> paramName </parameter></paramdef>
-      <paramdef> &type;* <parameter> values </parameter></paramdef>
-      </funcprototype></funcsynopsis>
-    </para>
-   </sect2>
-
-   <sect2>
-    <title>Querying Source Attributes</title>
-    <para>
-      Source state is maintained inside the &AL; implementation, and the
-      current attributes can be queried. The performance of such queries is 
-      implementation dependent, no performance guarantees are made. The 
-      valid values for the paramName parameter are identical to the ones 
-      for Source*.
-      <funcsynopsis><funcprototype> 
-      <funcdef> void <function> GetSource{n}{sifd}{v} </function></funcdef>
-      <paramdef> &uint; <parameter> sourceName </parameter></paramdef>
-      <paramdef> &enum; <parameter> paramName </parameter></paramdef>
-      <paramdef> &type;* <parameter> values </parameter></paramdef>
-      </funcprototype></funcsynopsis>
-    </para>
-
-    <![ %Scratch [
-     <warning><para>
-      Old signature: T GetSource{sifd}{v}( uint id, enum param );
-     </para></warning>
-     ]]>
- 
-    </sect2>
-
-
-
-  <sect2 id="queueing">
-   <title>Queueing Buffers with a Source</title>
-   <para>
-     &AL; does not specify a built-in streaming mechanism. There
-     is no mechanism to stream data e.g. into a Buffer object.
-     Instead, the API introduces a more flexible and versatile
-     mechanism to queue Buffers for Sources.
-   </para>
-   <para>
-     There are many ways to use this feature, with
-     streaming being only one of them. 
-    <itemizedlist>
-    <listitem>
-    <para>
-      Streaming is replaced by queuing static
-      buffers. This effectively moves any multi-buffer
-      caching into the application and allows the
-      application to select how many buffers it wants
-      to use, whether these are re-used in cycle,
-      pooled, or thrown away. 
-   </para>
-   </listitem>
-   <listitem>
-   <para>
-      Looping (over a finite number of repititions) can be 
-      implemented by explicitely repeating buffers
-      in the queue. Infinite loops can (theoretically)
-      be accomplished by sufficiently large repetition counters.
-      If only a single buffer is supposed to be repeated
-      infinitely, using the respective Source attribute is
-      recommended.
-   </para>
-   </listitem>
-   <listitem>
-   <para>
-      Loop Points for restricted looping inside a buffer
-      can in many cases be replaced by splitting the 
-      sample into several buffers, queueing the sample
-      fragments (including repetitions) accordingly.
-   </para>
-   </listitem>
-   </itemizedlist>
-   Buffers can be queued, unqueued after they have been
-   used, and either be deleted, or refilled and queued again.
-   Splitting large samples over several buffers maintained
-   in a queue has a distinct advantages over approaches that
-   require explicit management of samples and sample indices.
-   </para>
-
-    <![ %RFC [
-      <note id="bk000626-01"><title>RFC: Unified Handling</title><para>  
-       Jonathan Blow has proposed removing the distinction between
-       streaming and non-streaming buffers. An existing example is
-       the unified for directional and omnidirectional sources, where
-       all sources are treated as directional.
-      </para></note>
-    ]]>
-
-
-   <sect3>
-   <title>Queueing command</title>
-   <para>
-     The application can queue up one or multiple buffer names 
-     using SourceQueueBuffers. The buffers will be queued in the sequence
-     in which they appear in the array.
-      <funcsynopsis><funcprototype> 
-      <funcdef> &void; <function> alSourceQueueBuffers </function></funcdef>
-      <paramdef> &uint; <parameter> sourceName </parameter></paramdef>
-      <paramdef> &sizei; <parameter> numBuffers </parameter></paramdef>
-      <paramdef> &uint; * <parameter> bufferNames </parameter></paramdef>
-      </funcprototype></funcsynopsis>
-     This command is legal on a Source in any state (to allow for
-     streaming, queueing has to be possible on a PLAYING Source).
-     Queues are read-only with exception of the unqueue operation. 
-     The Buffer Name NONE (i.e. 0) can be queued.
-    </para>
-  
-    <![ %Annote [
-      <note><title>Annotation (BUFFER vs. SourceQueueBuffers)</title><para>
-       A Sourcei( sname, BUFFER, bname ) command is an immediate
-       command, and executed immediately. It effectively unqueues
-       all buffers, and then adds the specified buffer to the
-       then empty queue as its single entry. Consequently, this
-       call is only legal if SourceUnqueueBuffers is legal.
-       In particular, the Source has to be STOPPED or INITIAL.
-       The application is still obliged to delete all
-       buffers as were contained in the queue.  
-       Sourcei( sname, BUFFER, NONE ) is a legal command,
-       effectively wiping the queue without specifying an
-       actually playable buffer.
-       </para></note>
-    ]]>
-
-
-    <![ %Annote [
-      <note><title>Annotation (Buffer Repetition)</title><para>
-        To accomplish a finite number of repetitions of a buffer name multiple times,
-        the buffer has to be queued multiple times. If the need occurs, the
-        API could be extended by SourceQueueBuffer( sname, bname, repetitions )
-        call for brevity.
-      </para></note>
-    ]]>
-
-    <![ %RFC [
-       <note id="rfc-bk000806-04"><title>RFC: Duration of bName==0? </title><para>  
-          The buffer is considered empty, it should have zero length,
-          thus zero duration for consistency. If an application wants to
-          schedule a pause, specifying duration for a gain==0 queue entry
-          might be a cleaner solution.     
-      </para></note>
-    ]]>
-
-
-    <![ %Annote [
-      <note><title>Annotation (Backwards Compatiblity)</title><para>
-         Sourcei( sname, BUFFER, bname ) has been rejected as
-         a queueing command, as it would make semantics dependent on
-         source state (queueing if PLAYING, immediate else).
-         The command is not legal on a PLAYING or PAUSED Source.
-       </para></note>
-    ]]>
-
-    <![ %Annote [
-      <note><title>Annotation (No BUFFER_QUEUE)</title><para>
-          Duplication of one entry point is preferable to
-          duplicating token enums, and tokens do not express
-          commands, but specify the attribute/state affected.
-          From the same reason, there is no BUFFER_UNQUEUE
-          token-as-command.
-       </para></note>
-    ]]>
-
-    </sect3>
-
-   <sect3>
-   <title>Unqueueing command</title>
-   <para>
-     Once a queue entry for a buffer has been appended to a queue 
-     and is pending processing, it should not be changed.
-     Removal of a given queue entry is not possible unless 
-     either the Source is STOPPED (in which case then entire queue
-     is considered processed), or if the queue entry has already
-     been processed (PLAYING or PAUSED Source).
-   </para>
-   <para>
-     The Unqueue command removes a number of buffers entries that 
-     have finished processing, in the order of appearance, from 
-     the queue. The operation will fail if more buffers are
-     requested than available, leaving the destination arguments 
-     unchanged. An INVALID_VALUE error will be thrown.  
-     If no error, the destination argument will have been updated 
-     accordingly.
-      <funcsynopsis><funcprototype> 
-      <funcdef> void <function>  SourceUnqueueBuffers </function></funcdef>
-      <paramdef> &uint;    <parameter> sourceName </parameter></paramdef>
-      <paramdef> &sizei;    <parameter> numEntries </parameter></paramdef>
-      <paramdef> &uint;*    <parameter> bufferNames </parameter></paramdef>
-      </funcprototype></funcsynopsis>
-    </para>
-
-    <![ %Annote [
-      <note><title>Annotation (Unqueueing shared buffers)</title><para>
-         If a buffer is queued with more than one source, it might have
-         been processed for some not all of them. With the current
-         interface, the application is forced to maintain its own list
-         of consumers (Sources) for a buffer it wishes to unqueue.
-         For groups of Sources that are never individually PAUSED 
-         nor STOPPED, the application can save the MRU Source for 
-         which the buffer was scheduled last.
-       </para></note>
-    ]]>
-
-    <![ %Annote [
-      <note><title>Annotation (Looping a Queue vs. Unqueue):</title><para>
-          If a Source is playing repeatedly, it will traverse
-          the entire Queue repeatedly. Consequently, no buffer
-          in the queue can be considered processed until 
-          there is no further repetition scheduled.
-       </para></note>
-    ]]>
-
-    <![ %Annote [
-      <note><title>Annotation (No Name based access)</title><para>
-         No interface is provided to access a queue entry by name,
-         due to ambiguity (same buffer name scheduled several times
-         in a sequence).
-       </para></note>
-    ]]>
-
-    <![ %Annote [
-      <note><title>Annotation (No Index based access)</title><para>
-         No interface is provided for random access to a queue entry 
-         by index.
-       </para></note>
-    ]]>
-    </sect3>
-
-
-
-   <![ %Annote [
-     <sect3>
-     <title>More Annotation on Queueing</title>
-
-    <![ %Annote [
-      <note><title>Annotation (No Queue Copying)</title><para>
-          The current queue of a source could be copied to another source, 
-         as repetition and traversal parameters are stored unless the 
-         queue entry is unqueued, or the queue is replaced using 
-         AL_BUFFER.  Copying a queue is a special case of
-         copying Source state in one sense, and a special case of
-         a synching problem in another. Due to these unresolved issues
-         no such command is included in the current specification.
-         To share queues, the application can keep buffer names
-         and the selected attributes that define the queue entries
-         in an array or other lookup table.
-       </para></note>
-    ]]>
-
-    <![ %Annote [
-      <note><title>Annotation (No Explicit QueueClear)</title><para>
-        Sourcei( sname, BUFFER, NONE ) serves the 
-        same purpose. The operation is also redundant
-        with respect to Unqueue for a STOPPED Source.
-       </para></note>
-    ]]>
-
-    <![ %Annote [
-      <note><title>Annotation (Queueing vs. AppendData):</title><para>
-         Buffer queueing does not solve the synchronization and timing 
-         issues raised by possible underflow, as these are inherent
-         to application-driven (pushed) streaming. However, it turns 
-         an internal AL error condition (offset exceeds valid data)
-         into an audible artifact (Source stops).
-         Its main advantage is that it allows the application coder
-         to operate at a scale of her own choice, selecting the
-         number and size of buffers used for caching the stream,
-         and to schedule buffer refill and queueing according to 
-         preferences and constraints. Queueing effectively moves 
-         all problems related to replacing or appending Buffer data 
-         to the scale of entire arrays istead of single samples and 
-         indices.
-       </para></note>
-    ]]>
-
-    <![ %Annote [
-      <note><title>Annotation (Multiple Sources on a stream)</title><para>
-         Queueing allows for the application to determine how much of
-         a backlog of the data stream is preserved. The application can
-         keep buffers, and queue them with other Sources after they have
-         been used already by the original Source. Unlike the mechanism
-         for appending data to a buffer, the backlog is visible to the
-         application and under its control, and no synchronization of
-         Sources using the stream is required.
-       </para></note>
-    ]]>
-
-
-
-    <![ %Annote [
-      <note><title>Annotation (Loop Points and Compressed Data)</title><para>
-        For compressed data, uncompression by the application might be
-         impossible or undesireable. In consequence, splitting the sample
-         into several buffers is not possible without explicit support
-         by the API. Buffer-Buffer operations will be added as needed,
-         for the time being applications should not try to use compressed
-         samples if more than full looping is required.
-       </para></note>
-    ]]>
-
-
-
-    <![ %Annote [
-      <note><title>Annotation (No Explicit Queue Objects)</title><para>
-        Explicit Queue objects have been considered and rejected,
-        as they introduce another producer-consumer dependency with
-        another level of indirection. Further, e.g. QUEUE would 
-        also require deprecating BUFFER (breaking backwards 
-        compatibility) as an alSource argument, or would introduce
-        a confusing set of precedence and overide rules if both
-        are used in sequence. However, in the absence of explicit
-        queue objects the application will be forced to keep track
-        where buffers have been queued in case it intends to 
-        unqueue them for refill or deletion. If several sources
-        use the same buffers (e.g. for synchronous or 
-        asynchronous streaming) the buffer will have to be
-        unqueued from each single one.
-      </para></note>
-    ]]>
-
-
-    <![ %Scratch [
-      <note><title>Annotation (Queue no Display List)</title><para>
-         An interface resembling &OGL; display-lists has been 
-         considered and rejected. The problem with this approach 
-         is that not only commands would have to be prohibited 
-         (similarly, not all GL calls are legal within a display 
-         list), but also parameters (enumerations).
-
-         In particular, only a small set of operations is meant
-         to be legal for a queue at this point, and appending
-         to a queue has to be possible at any time.
-         Within a hypothetical AL display list, only relative
-         timing/conditionals are allowed as arguments. This
-         might necessitate to have multiple forms for deferred
-         commands, or to not allow for absolute timing.
-
-         Example:
-         <literallayout>
-         // lock this queue for overwriting/appending
-         alBeginQueue( qname, APPEND | REPLACE );  
-
-         // queue a buffer in sequence, with parameters
-         // boolean: never skip? never bail?
-         alQueue( AL_BUFFER, bid, loopdir, repetitions );
-         ...
-
-         // end lock. 
-         // Existing  queue content will be replaced
-         //  or appended at this point.
-         alEndQueue();
-       </literallayout>
-       </para></note>
-    ]]>
-
-
-    <![ %Example [
-      <example>
-      <title>Queue Then Delete </title>
-      <programlisting>
-
-         create source
-         queue buffer1
-         queue buffer2
-         queue buffer3
-         play
-         request deletion of buffer1,2,3
-       
-       </programlisting>
-       </example>
-    ]]>
-
-    <![ %Example [
-      <example>
-      <title> Queue and Refill with Dual Buffering</title>
-      <programlisting>
-
-        create source
-        fill buffer1
-        queue buffer1
-        play
-        fill buffer2
-        queue buffer2
-        check for unused buffers
-          unqueue buffer1
-          fill buffer1
-          queue buffer1
-          ...
-       
-       </programlisting>
-       </example>
-    ]]>
-
-    <![ %Example [
-      <example>
-      <title> Queue for Loop Points</title>
-      <programlisting>
-
-         create source
-         read sample data
-         split sample data into pre/main/post
-         queue pre
-         queue main with repetitions
-         queue post
-         play
-         set repetitions to 0 on main when needed
-         wait till post has been played
-       
-       </programlisting>
-       </example>
-    ]]>
- 
-   </sect3>
-]]>
-
-<![ %Scratch [
-  <sect3>
-    <title>Attributes Specific to Queueing</title>
-
-     <section>
-    <title>Buffer Traversal</title>
-    <para>
-       The Buffer traversal attribute specifies the direction
-       in which the sample in the buffer is supposed to be
-       processed. To account for the 3 basic modes of traversal that
-       can be implemented in software and hardware, the following
-       tokens are defined:
-       <literallayout>
-         LOOP_DIRECTION     /* traversal direction */
-
-         FORWARD            /* linear forward   (increment) */
-         BACKWARD           /* linear backward  (decrement) */
-         FORWARD_AND_BACK   /* RESERVED: ping-pong-looping  */
- 
-       </literallayout>
-       The first and the next two tokens are legal with a buffer queue command. 
-       They are not legal for a Source command, in any possible
-       Source state. The last token is reserved, but not yet legal to use.
-    </para>  
-
-
-    <![ %Annote [
-      <note><title>Annotation (Ping-Pong postponed)</title><para>
-        Definition and implementation of ping-pong looping
-        has been postponed. Applications can fake it at doubling
-        memory expense by reverse copying the buffer (2nd buffer queued 
-        or in a double size single buffer). If there is hardware support
-        for this feature, AL will have to support it eventually. A boolean
-        flag is not acceptable because of this possibility.
-       </para></note>
-    ]]>
-    </sect3> 
-]]> <!-- SCRATCH -->
- 
-  
-   </sect2>
- 
-
-
-
-
-
-    <sect2>
-    <title>Managing Source Execution</title>
-    <para>
-       The execution state of a source can be queried. &AL; provides
-       a set of functions that initiate state transitions causing
-       Sources to start and stop execution.
-    </para>
-    <para>
-       TBA: State Transition Diagram.
-    </para>
-
-    <![ %Annote [
-      <note><title>Annotation/ Source Config/Exec State</title><para>
-       Sources have configuration state and execution state.
-       Configuration state is directly set by the application using 
-       AL commands, starting with the INITIAL configuration. Execution 
-       state (e.g. the offset to the current sample) is not under direct 
-       application control and not exposed. 
-       </para></note>
-    ]]>
-
-    <sect3>
-    <title>Source State Query</title>
-    <para>
-      The application can query the current state of any Source 
-      using GetSource with the parameter Name SOURCE_STATE. 
-      Each Source can be in one of four possible execution states: 
-      INITIAL, PLAYING, PAUSED, STOPPED. Sources that are either
-      PLAYING or PAUSED are considered active. Sources that are
-      STOPPED or INITIAL are considered inactive. Only PLAYING
-      Sources are included in the processing. The implementation 
-      is free to skip those processing stages for Sources that 
-      have no effect on the output (e.g. mixing for a Source 
-      muted by zero GAIN, but not sample offset increments). 
-      Depending on the current state of a Source certain (e.g. repeated)
-      state transition commands are legal NOPs: they will be ignored, 
-      no error is generated.
-    </para>
-    </sect3>
-
-    <sect3>
-    <title>State Transition Commands</title>
-    <para>
-      The default state of any Source is INITIAL. From this state
-      it can be propagated to any other state by appropriate use
-      of the commands below. There are no irreversible state
-      transitions. 
-      <funcsynopsis><funcprototype> 
-      <funcdef> void <function> SourcePlay </function></funcdef>
-      <paramdef> &uint; <parameter> sName </parameter></paramdef>
-      </funcprototype></funcsynopsis>
-      <funcsynopsis><funcprototype> 
-      <funcdef> void <function> SourcePause </function></funcdef>
-      <paramdef> &uint; <parameter> sName </parameter></paramdef>
-      </funcprototype></funcsynopsis>
-      <funcsynopsis><funcprototype> 
-      <funcdef> void <function> SourceStop </function></funcdef>
-      <paramdef> &uint; <parameter> sName </parameter></paramdef>
-      </funcprototype></funcsynopsis>
-      <funcsynopsis><funcprototype> 
-      <funcdef> void <function> SourceRewind </function></funcdef>
-      <paramdef> &uint; <parameter> sName </parameter></paramdef>
-      </funcprototype></funcsynopsis>
-
-
-    </para>
-    <para>
-      The functions are also available as a vector variant,
-      which guarantees synchronized operation on a set of 
-      Sources.
-      <funcsynopsis><funcprototype> 
-      <funcdef> void <function> SourcePlayv </function></funcdef>
-      <paramdef> &sizei; <parameter> n </parameter></paramdef>
-      <paramdef> &uint;* <parameter> sNames </parameter></paramdef>
-      </funcprototype></funcsynopsis>
-      <funcsynopsis><funcprototype> 
-      <funcdef> void <function> SourcePausev </function></funcdef>
-      <paramdef> &sizei; <parameter> n </parameter></paramdef>
-      <paramdef> &uint;* <parameter> sNames </parameter></paramdef>
-      </funcprototype></funcsynopsis>
-      <funcsynopsis><funcprototype> 
-      <funcdef> void <function> SourceStopv </function></funcdef>
-      <paramdef> &sizei; <parameter> n </parameter></paramdef>
-      <paramdef> &uint;* <parameter> sNames </parameter></paramdef>
-      </funcprototype></funcsynopsis>
-
-      <funcsynopsis><funcprototype> 
-      <funcdef> void <function> SourceRewindv </function></funcdef>
-      <paramdef> &sizei; <parameter> n </parameter></paramdef>
-      <paramdef> &uint;* <parameter> sNames </parameter></paramdef>
-      </funcprototype></funcsynopsis>
-
-    </para>
-    <para>
-      The following state/command/state transitions are defined:
-      <itemizedlist>
-       <listitem>
-       <para>
-        Play() applied to an INITIAL Source will promote the Source
-        to PLAYING, thus the data found in the Buffer will be fed 
-        into the processing, starting at the beginning.
-        Play() applied to a PLAYING Source will restart the Source
-        from the beginning. It will not affect the configuration,
-        and will leave the Source in PLAYING state, but reset the
-        sampling offset to the beginning.
-        Play() applied to a PAUSED Source will 
-        resume processing using the Source state 
-        as preserved at the Pause() operation.
-        Play() applied to a STOPPED Source will propagate it
-        to INITIAL then to PLAYING immediately.
-       </para> 
-       </listitem>
-       <listitem>
-       <para>
-        Pause() applied to an INITIAL Source is a legal NOP.
-        Pause() applied to a PLAYING Source will change its state to
-        PAUSED. The Source is exempt from processing, its current
-        state is preserved.
-        Pause() applied to a PAUSED Source is a legal NOP.
-        Pause() applied to a STOPPED Source is a legal NOP.
-       </para>
-       </listitem>
-       <listitem>
-       <para>
-        Stop() applied to an INITIAL Source is a legal NOP.
-        Stop() applied to a PLAYING Source will change its state to
-        STOPPED. The Source is exempt from processing, its current
-        state is preserved.
-        Stop() applied to a PAUSED Source will change its state
-        to STOPPED, with the same consequences as on a PLAYING
-        Source.
-        Stop() applied to a STOPPED Source is a legal NOP.
-       </para>
-       </listitem>
-       <listitem>
-       <para>
-        Rewind() applied to an INITIAL Source is a legal NOP.
-        Rewind() applied to a PLAYING Source will change its state to
-        STOPPED then INITIAL. The Source is exempt from processing:
-        its current state is preserved, with the exception of the 
-        sampling offset, which is reset to the beginning.
-        Rewind() applied to a PAUSED Source will change its state
-        to INITIAL, with the same consequences as on a PLAYING
-        Source.
-        Rewind() applied to a STOPPED Source promotes the Source
-        to INITIAL, resetting the sampling offset to the beginning.
-       </para>
-       </listitem>
-    </itemizedlist>
-    </para>
-
-    <![ %Annote [
-      <note><title>Annotation (SourceNext)</title><para>
-         The specification does not provide any means to
-         immediately skip from the current Buffer to the
-         next in the queue.  A conditional stop (following
-         the next complete traversal) is available.
-         If necessary an additonal entry point could be
-          provided in future revisions.
-       </para></note>
-    ]]>
-
-    <![ %Annote [
-      <note><title>Annotation (Rewind() optional)</title><para>
-         The INITIAL state is not identical to the STOPPED state.
-         Applications that want to verify whether a Source
-         has indeed been PLAYING before becoming STOPPED can
-         use Rewind() to reset the Source state to INITIAL.
-         This is an optional operation that can safely be
-         omitted by application without this constraint. 
-         Applications that want to guard against Play() on
-         a Source that is INITIAL can query the Source state
-         first.         
-      </para></note>
-    ]]>
-
-    <![ %Annote [
-      <note><title>Annotation (Play() on a PLAYING Source)</title><para>
-         Repeated Play() commands applied a PLAYING Source are
-         interpreted as an (atomic) sequence to stop and restart a
-         Source. This can be used by applications that want to restart
-         a sound but do not care whether the Source has finished or not,
-         and do not want an audible pause. One example is the DOOM 
-         chaingun repeatedly abbreviating the pistol sound. To guard
-         against redundant Play() commands, an application can query
-         the current state before executing Play(). If the application
-         coder wants to be sure that the Source will play the buffer
-         again, she can either increment PLAY_COUNT, or queue the buffer.
-       </para></note>
-    ]]>
-
-    <![ %Annote [
-      <note><title>Annotation (redundant commands)</title><para>
-         The simple variant (e.g. SourcePlay) is redundant to
-         the vector variant (e.g. SourcePlayv). However, these
-         calls will be used frequently, and the simple variant
-         is provided for convenience. However, &AL; does not
-         enable applications to use literals as source names.
-       </para></note>
-    ]]>
-
-    </sect3>
-
-    <sect3>
-    <title>Resetting Configuration</title>
-    <para>
-      The INITIAL state is not necessarily identical to the 
-      default state in which Source is created. INITIAL merely
-      indicates that the Source can be executed using the
-      SourcePlay command. A STOPPED or INITIAL Source can
-      be reset into the default configuration by using a
-      sequence Source commands as necessary. As the application
-      has to specify all relevant state anyway to create a
-      useful Source configuration, no reset command is provided.
-    </para>
-  
-
-    <![ %RFC [
-       <note id="rfc-bk000802-01"><title>RFC: remove INITIAL</title><para>  
-         INITIAL is identical to STOPPED. The only additional information
-         conveyed is that INITIAL indicates a source has never been played. 
-         Once a Source is STOPPED, it is not possible by state query alone 
-         to decide whether it has played again. If Sources are used only 
-         once, an application can use INITIAL to verify a Source has been 
-         played.
-         The problem that I have with this is that if we acknowledge that
-         the application might need to verify a Source has played once,
-         why force the application to throw away Sources to accomplish
-         this? An explicit state PLAYABLE replacing INITIAL and its
-         inauspicious connotations (default state) and a state transition
-         function Rewind() that makes a STOPPED Source PLAYABLE again would 
-         be one possibility to address this need. The obvious drawback is
-         that it breaks backwards compatibility.
-      </para></note>
-    ]]>
-
-
-    <![ %RFC [
-       <note id="rfc-bk000731-01"><title>RFC: state issues </title><para>  
-        A Source is active if it is PAUSED or PLAYING.
-
-        A Source that is STOPPED preserves configuration state,
-          including buffer/queue information.
-
-        Only a Source that is Reset() to INITIAL looses all
-          buffer and queue information. In this case, the INITIAL
-
-        Sources will be stopped implicitely when reaching the
-           end of a non-repeating (non-looping) buffer traversal.
-        Sources can be stopped explicitely by the application
-        with either Stop() or Reset(). 
-
-       Stop() propagates
-        the source to STOPPED preserving its configuration state,
-        setting its execution state to the same as if it reached
-        the end of execution.
-  
-      </para></note>
-    ]]>
-
-
-    <![ %Annote [
-      <note><title>Annotation (illegal NOPs)</title><para>
-          In the current specification there are no illegal NOPs.
-          In other words, no sequence of commands affecting the
-          execution state will generate an INVALID_OPERATION error.  
-      </para></note>
-    ]]>
-
-
-     <![ %RFC [
-     <note><title>RFC/bk000504:</title><para>
-       No  UNDEFINED state. Always valid state. I.e. we have a default Buffer
-       that is used for sources where the application doesn't specify,
-       and what's in it? Default gain is zero? We need to specify
-       INITIAL.
-     </para></note>
-
-     <note><title>RFC/bk000504:</title><para>
-       Potential ambiguity: how to we distinguish STOPPED as
-       requested by the application from INACTIVE for
-       non-looping sounds once the buffer has been iterated?
-       Related: handling of Sources using an underflowing
-       streaming buffer? IMO not recommended, make this
-       undefined on error.
-     </para></note>
-
-
-     <note><title>RFC/bk000504:</title><para>
-       Possible redundancy: the only reason for STOP seems to
-       be resetting the play positions. Redundant if we
-       ever manipulate offsets directly (rewind/set).
-     </para></note>
-
-     <note><title>RFC/bk000504:</title><para>
-       Possible redundancy:
-       If we ever want to support explicit setting of the start
-       position/offset into Buffer, START is equivalent to Set(0).
-       Also see LOOP (implies has to be STOPPED). Fade-Out and
-       Fade-In control - always manually?
-     </para></note>
-
-     ]]>     
-   </sect3>
-   </sect2>
-   </sect1>
-   </chapter>
-
-
diff --git a/neo/openal/docs/chp-state.sgml b/neo/openal/docs/chp-state.sgml
deleted file mode 100644
index 8175a363..00000000
--- a/neo/openal/docs/chp-state.sgml
+++ /dev/null
@@ -1,730 +0,0 @@
-
-    <chapter id="state-requests">
-    <title>State and State Requests</title>
-    <para>
-      The majority of &AL; state is associated with individual &AL; objects, 
-      and has to be set and queried referencing the objects. However, some 
-      state - e.g. processing errors - is 
-      defined context specific. &AL; has global state that affects all 
-      objects and  processing equally. This state is set using a variety 
-      of functions, and
-      can be queried using query functions. The majority of queries
-      has to use the interface described in "Simple Queries". 
-    </para>
-
-
-    <sect1 id="state-query">
-    <title>Querying &AL; State</title>
-
-
-    <sect2>
-    <title>Simple Queries</title>
-    <para>
-       Like &OGL;, &AL; uses a simplified interface for querying global
-       state. The following functions accept a set of enumerations.
-      <funcsynopsis><funcprototype> 
-      <funcdef> void <function>   GetBooleanv  </function></funcdef>
-      <paramdef> &enum; <parameter> paramName </parameter></paramdef>
-      <paramdef> &bool;* <parameter> dest </parameter></paramdef>
-      </funcprototype></funcsynopsis>
-
-      <funcsynopsis><funcprototype> 
-      <funcdef> void <function>   GetIntegerv  </function></funcdef>
-      <paramdef> &enum; <parameter> paramName </parameter></paramdef>
-      <paramdef> &int;* <parameter> dest </parameter></paramdef>
-      </funcprototype></funcsynopsis>
-
-      <funcsynopsis><funcprototype> 
-      <funcdef> void <function>   GetFloatv  </function></funcdef>
-      <paramdef> &enum; <parameter> paramName </parameter></paramdef>
-      <paramdef> &float;* <parameter> dest </parameter></paramdef>
-      </funcprototype></funcsynopsis>
-
-      <funcsynopsis><funcprototype> 
-      <funcdef> void <function>   GetDoublev  </function></funcdef>
-      <paramdef> &enum; <parameter> paramName </parameter></paramdef>
-      <paramdef> &double;* <parameter> dest </parameter></paramdef>
-      </funcprototype></funcsynopsis>
-    Legal values are e.g. DOPPLER_FACTOR, DOPPLER_VELOCITY, DISTANCE_MODEL.
-   </para>
-   <para>
-      NULL destinations are quietly ignored. INVALID_ENUM is the
-      response to errors in specifying paramName. The amount of memory
-      required in the destination depends on the actual state requested.
-      Usually, state variables are returned in only one or some of the
-      formats above.
-   </para>
-   <para>
-      To query state controlled by Enable/Disable there is an additional
-      IsEnabled function defined (see "Controlling &AL; Execution").
-   </para>
-
-    </sect2>
-  
-    <sect2>
-    <title>Data Conversions</title>
-    <para>
-       If a Get command is issued that returns value types different from
-       the type of the value being obtained, a type converswion is
-       performed. If GetBooleanv is called, a floating-point or integer
-       value converts to FALSE if and only if it is zero (otherwise
-       it converts to TRUE). If GetIntegerv is called, a boolean value
-       is interpreted as either 1 or 0, and a floating-point value is
-       rounded to the nearest integer. If GetFloatv is called, a boolean
-       value is interpreted as either 1.0 or 0.0, an integer is
-       coerced to floating point, and a double-presicion foating-point
-       value is converted to single precision. Analogous conversions are
-       carried out in the case of GetDoublev. If a value is so large
-       in magnitude that it cannot be represented with the requested
-       type, then the nearest value is representable using the requested
-       type is returned.
-    </para>
-    <![ %Annote [
-      <note><title>Annotation (Query of Modes)</title><para>
-         Modes (e.g. the current distance model) can be queried
-         using the respective tokens. The recommended query
-         command is GetIntegerv.  
-       </para></note>
-    ]]>
-
-    </sect2>
-       
-    <sect2>
-    <title>String Queries</title>
-    <para>
-      The application can retrieve state information global to the current 
-      &AL; Context. GetString will return a pointer to a constant string.
-      Valid values for param are VERSION, RENDERER, VENDOR, and EXTENSIONS,
-      as well as the error codes defined by &AL;. The application can
-      use GetString to retrieve a string for an error code.
-      <funcsynopsis><funcprototype> 
-      <funcdef> const &ubyte;* <function> GetString </function></funcdef>
-      <paramdef> &enum; <parameter> paramName</parameter></paramdef>      
-      </funcprototype></funcsynopsis>
-    </para>
-    </sect2>
-    </sect1>
-
-
-    <sect1 id="time">
-     <title>Time and Frequency</title>
-    <para>
-      By default, &AL; uses seconds and Hertz as units for
-      time and frequency, respectively.
-      A float or integral value of one 
-      for a variable that specifies quantities like duration, 
-      latency, delay, or any other parameter measured as time,
-      specifies 1 second.
-      For frequency, the basic unit is 1/second, or Hertz.
-      In other words, sample frequencies and frequency
-      cut-offs or filter parameters specifying frequencies
-      are expressed in units of Hertz.
-    </para>
-  
-    <![ %RFC [
-       <note id="rfc-bk000927-01"><title>RFC: Query and Factor?</title><para>  
-        Will time be an &AL; state that can be queried and scaled?
-        &AL; usually (always) implements a real-time 
-         process with the constraint that it has to be 
-         synchronized with the time as experienced by the user.
-         Do the units used with respect to time and frequency have
-        a fixed meaning?
-      </para></note>
-    ]]>
-
-    <![ %RFC [
-       <note id="rfc-bk000803-03"><title>RFC: Setting Time/Long</title><para>  
-         Given a frequency range from a few Hz to 50kHz or more,
-         we need a temporal resolution of 20 microseconds or less.
-         For simplicity that means we either resolve Milliseconds
-         and loose precision, or we resolve microseconds.  
-        Applications might run hours or days, which is 10E5 seconds
-        or more. If we cover 12 orders of magnitude (10E6 to 10E-6)
-        32bit unsigned integer will not suffice. Do we introduce
-        a 64 signed integer for the purpose of specifying time
-        over a duration of several days at microseconds resolution,
-        or do we use two 32bit integers, and how do we split them?
-      </para></note>
-    ]]>
-
-   <![ %RFC [
-    <note id="rfc-bk000806-03"><title>RFC: Duration Query</title>
-    <para>
-        The application might want to cull Sources based on
-        how many milliseconds are left for their current buffer
-        or queue (either to stop those that will stop soon
-        anyway, or to stop those that will take too long,
-        depending).
-    </para>
-    <para>
-        We need to divorce sample (memory) count from duration, 
-        because of compression and differences between 
-        internal and external sample format.
-    </para>
-    <para>
-        Duration can be queried in microsecond resolution in 
-        case we want to account for O(10Khz) sampling
-        frequencies properly, or milliseconds if we 
-        do not anticipate the need to go beyond typical 
-        operating system time resolution.
-    </para>
-    <para>
-        We need query as double, float, and possibly 
-        long (as of now an undefined data type).
-        We might need an INVALID_RANGE error on the getter,
-        especially if large reptition counters can be set.
-        For paused source, the remainder will be the same
-        as for playing sources. The application can query
-        the Source State to find out the additional
-        information. INFINITE is not needed,
-        no is UNKNOWN as we operate on known
-        queues.
-       </para></note> 
-      ]]>
-
-    <![ %Scratch [
-    <![ %Annote [
-      <note><title>Annotation (Buffer vs. Queue Duration)</title><para>
-          Sourcel( sName , REMAINDER, &amp;rem ) queries the remainder
-          for the current buffer (zero if the Source is STOPPED,
-          duration of the first buffer if the source is INITIAL).
-          Sourcel( sName, REMAINDER_QUEUE, &amp;rem ) queries the remainder
-          of the entire queue.  
-          A STOPPED Source has remainder==0.
-          An INITIAL Source has full remainder.
-       </para></note>
-    ]]>
-
-
-    <![ %Annote [
-      <note><title>Annotation (DURATION vs. REMAINDER)</title><para>
-          DURATION is a buffer attribute independent of
-          execution state. REMAINDER is a Source attribute
-          that encapsulates part of the execution state.
-          Sources and Buffers should not share these attributes:
-          there is no Buffer REMAINDER and no Source DURATION.
-       </para></note>
-    ]]>    
-    ]]>
-    </sect1>
-  
-
-
-   
-    <sect1 id="scaling">
-    <title>Space and Distance</title>
-    <para>
-       &AL; does not define the units of measurement for distances.
-       The application is free to use meters, inches, or parsecs.
-       &AL; provides means for simulating the natural attenuation 
-       of sound according to distance, and to exagerate or reduce 
-       this effect. However, the resulting effects do not depend on 
-       the distance unit used by the application to express source 
-       and listener coordinates. &AL; calculations are scale
-       invariant.
-    </para>
-    <para>
-       The specification assumes Euclidean calculation of
-       distances, and mandates that if two Sources are
-       sorted with respect to the Euclidean metric, the
-       distance calculation used by the implementation has
-       to preserve that order. 
-    </para>
-
-    <![ %Annote [
-      <note><title>Annotation (No DistanceFactor)</title><para>
-         &AL; does not provide a global, per Context DISTANCE_FACTOR,
-         as all calculations are scale invariant.   
-      </para></note>
-    ]]>
-  
-    <![ %Annote [
-      <note><title>Annotation (Distance Calculations)</title><para>
-         The specification does not enforce that distances
-         are calculated using the euclidean norm, to permit
-         using computationally cheaper approximations. 
-         Implementations that opt to use approximations
-         might cause audible artifacts. The specification does
-         not enforce any upper limits on distance calculation 
-         errors yet. 
-       </para></note>
-    ]]>
-
-    <![ %RFC [
-       <note id="rfc-bk000915-02"><title>RFC: Limiting Errors</title><para>  
-          Do we limit permissible errors on distance or gain
-          calculations? How much quality
-          and accuracy do we expect from conformant implementations? 
-      </para></note>
-    ]]>
-
-
-    <![ %Annote [
-      <note><title>Annotation (DS3D DistanceFactor)</title><para>
-         The DS3D documentation explicitely states that the default
-         unit is 1 meter. &AL; does not specify any units.
-         &AL; calculations are scale invariant. The main purpose
-         of the DS3D DistanceFactor (modifying Doppler Shift 
-         by scaling velocity but not reference velocity) is
-         accomplished using DOPPLER_VELOCITY in &AL;.  &AL;
-         does not have an equivalent to A3D's SetUnitsPerMeter
-         either.
-         <!-- http://msdn.microsoft.com/library/psdk/directx/dsover_6jj8.htm --> 
-       </para></note>
-    ]]>
-    </sect1>
-
-
-
-
-    <sect1 id="attenuation-by-distance">
-    <title>Attenuation By Distance</title>
-    <para>  
-         Samples usually use the entire dynamic range of the
-         chosen format/encoding, independent of their real world
-         intensity. In other words, a jet engine and a clockwork
-         both will have samples with full amplitude. The application 
-         will then have to adjust Source GAIN accordingly to account
-         for relative differences. 
-    </para>
-    <para>
-         Source GAIN is then attenuated by distance.
-         The effective attenuation of a Source depends on many
-         factors, among which distance attenuation and source
-         and Listener GAIN are only some of the contributing 
-         factors. Even if the source and Listener GAIN exceed 1.0 
-         (amplification beyond the guaranteed dynamic range),
-         distance and other attenuation might ultimately limit
-         the overall GAIN to a value below 1.0.
-    </para> 
-    <para>
-         &AL; currently supports three modes of operation
-         with respect to distance attenuation. It supports 
-         two distance-dependent attenuation models, including one
-         that is similar to the IASIG I3DL2 (and DS3D) model. 
-         The application chooses one of these two models (or
-         chooses to disable distance-dependent attenuation)
-         on a per-context basis.
-         <funcsynopsis><funcprototype> 
-         <funcdef> void <function> DistanceModel </function></funcdef>
-         <paramdef> &enum; <parameter> modelName </parameter></paramdef>      
-         </funcprototype></funcsynopsis>
-         Legal arguments are NONE, INVERSE_DISTANCE, and
-         INVERSE_DISTANCE_CLAMPED. NONE bypasses all distance 
-         attenuation calculation for all Sources. The implementation 
-         is expected to optimize this situation. INVERSE_DISTANCE_CLAMPED
-         is the DS3D model, with REFERENCE_DISTANCE indicating both the
-         reference distance and the distance below which gain will
-         be clamped. INVERSE_DISTANCE is equivalent to the DS3D model
-         with the exception that REFERENCE_DISTANCE does not imply any
-         clamping. The &AL; implementation is still free to apply
-         any range clamping as necessary. The current distance model
-         chosen can be queried using GetIntegerv and DISTANCE_MODEL.
-    </para>    
-
-    <![ %Annote [
-      <note><title>Annotation (Inverse Square Law)</title><para>
-       The "inverse square law" used in physics applies to sound 
-       intensity (energy), which is proportional to the square 
-       of linear gain (amplitude). Thus the inverse distance model
-       describes a physically correct inverse square behavior
-       if ROLLOFF_FACTOR is set to 1.0.
-       </para></note>
-    ]]>
-
-    <![ %Annote [
-      <note><title>Annotation (Enable/Disable Attenuation)</title><para>
-       As ROLLOFF_FACTOR is a per-Source attribute, setting it to zero
-       can not be used to globally enable or disable distance
-       attenuation, which (e.g. when using tables) can be resource
-       intensive. Using Enable/Disable/IsEnabled with a DISTANCE_ATTENUATION
-       token is redundant with respect to the possibility that support
-       for different distance models might be desired at a later time.
-       </para></note>
-    ]]>
-
-     
-    <sect2> 
-    <title>Inverse Distance Rolloff Model</title>
-    <para>
-     The following formula describes the distance attenutation
-     defined by the Rolloff Attenutation Model, as logarithmic 
-     calculation. 
-     <literallayout>
-
-      G_dB = GAIN - 20*log10(1 + ROLLOFF_FACTOR*(dist-REFERENCE_DISTANCE)/REFERENCE_DISTANCE );
-      G_dB = min(G_dB,MAX_GAIN);
-      G_dB = max(G_dB,MIN_GAIN);
-
-     </literallayout>      
-     The REFERENCE_DISTANCE parameter used here is a per-Source attribute
-     that can be set and queried using the REFERENCE_DISTANCE token.
-     REFERENCE_DISTANCE is the distance at which the Listener will
-     experience GAIN (unless the implementation had to clamp effective
-     GAIN to the available dynamic range).
-     ROLLOFF_FACTOR is per-Source parameter the application can use 
-     to increase or decrease the range of a source by decreasing
-     or increasing the attenuation, respectively. The default value
-     is 1. The implementation is free to optimize for a
-     ROLLOFF_FACTOR value of 0, which indicates that the application
-     does not wish any distance attenuation on the respective Source.    
-    </para>
-
-    <![ %Annote [
-      <note><title>Annotation (Linear Calculation)</title><para>
-      The logarithmic formula above is equivalent to
-      <literallayout>                     
-       G  = gain_linear / ( 1 + ROLLOFF_FACTOR*((dist-REFERENCE_DISTANCE)/REFERENCE_DISTANCE) );
-       G = min(G,max_gain_linear);
-       G = max(G,min_gain_linear);
-      </literallayout>
-       with linear gains calculated from the logarithmic GAIN, 
-       MIN_GAIN, MAX_GAIN accordingly.
-       By means of explanation: linear GAIN is applied to the sample, which describes
-       an amplitude ultimately (DAC) converted into voltage. The actual power of the
-       signal is proportional to the square of the amplitude (voltage). Logarithmic
-       measurement is done by comparing the actual power with a reference value,
-       i.e. the power (e.g in Watt) at the reference distance. The original Bel unit 
-       of measure (named after Alexander Graham Bell) was defined to account for the 
-       logarithmic response of the human ear: our subjective impression of "loudness"
-       is not linear in the power of the acoustic signal. For practical purposes (range 
-       of volumes the human ear can handle) the deciBel (dB) is a better unit:
-     <literallayout>
-        dB = 10 * log( P/P0 ) = 10 * log( sqr(A/A0 ) = 20 * log( A/A0 )
-     </literallayout>  
-       Common power/amplitude ratios and attenuations per distance are:
-     <table>
-     <title>Logarithmic Scale and Gain</title>
-     <tgroup cols="4" align="left" colsep=1 rowsep=1>
-     <thead>
-     <row>
-       <entry>Distance</>
-       <entry>Attenuation</>
-       <entry>Power Ratio</>
-       <entry>Amplitude Ratio</>        
-    </row>
-    </thead>
-    <tbody>
-    <row>
-       <entry>REF</>
-       <entry> 0dB </>
-       <entry> 1:1 </>
-       <entry> 1:1 </>        
-    </row>
-    <row>
-       <entry> 2*REF </>
-       <entry> -6dB </>
-       <entry>  1:4 </>
-       <entry>  1:2 </>        
-    </row>
-    <row>
-       <entry> 4*REF </>
-       <entry> -12dB </>
-       <entry>  1:16 </>
-       <entry>  1:4 </>        
-    </row>
-    <row>
-       <entry> 8*REF </>
-       <entry> -18dB </>
-       <entry>  1:64 </>
-       <entry>  1:8 </>        
-    </row>
-    <row>
-       <entry> 0.5*REF </>
-       <entry>  6dB </>
-       <entry>  2:1 </>
-       <entry>  4:1 </>        
-    </row>
-    <row>
-       <entry> 0.25*REF </>
-       <entry> 12dB </>
-       <entry>  4:1 </>
-       <entry> 16:1 </>        
-    </row>
-
-    </tbody>
-    </tgroup>
-    </table>
-     The logarithmic gain will drop from zero (linear gain 1) to negative infinity
-     (approaching linear gain 0). A linear gain of zero can not be represented
-     logarithmically. Any doubling of the reference distance will add another
-     -6dB (i.e. 6dB of attenuation). This approximates an inverse square law falloff
-     of signal power with distance, as long as the distance exceeds the reference
-     distance.
-    </para></note>
-    ]]>
-
-    <![ %Annote [
-      <note><title>Annotation (Rolloff quantization)</title><para>
-         Implementations that use lookup tables to speed up 
-         distance attenuation calculation may opt to map
-         ROLLOFF_FACTOR to a limited set of internally used
-         values, to minimize expense of per-Source calculations
-         and setup/memory costs.
-       </para></note>
-    ]]>
-
-    <![ %Annote [
-      <note><title>Annotation (Gain Clamping)</title><para>
-         In the absence of user MIN_GAIN and MAX_GAIN selections,
-         clamping is implied by implementation constraints, and
-         clamping behavior might change.
-         The &AL; implementation should not clamp intermediate
-         values of effective gain to unit range.
-         Any clamping, if necessary, should be applied at the latest 
-         possible stage. In other words, GAIN&gt;1 is perfectly 
-         valid as the implementation is free to clamp the value as 
-         needed for maximum mixing accuracy and to account for the 
-         actual dynamic range of the output device.
-       </para></note>
-    ]]>
-
-
-     <![ %Annote [
-      <note><title>Annotation (Extended Dynamic Range)</title><para>
-         For applications that 
-         change GAIN but do not want to adjust ROLLOFF_FACTOR
-         and REFERENCE_DISTANCE to account for different ranges,
-         the separation in this distance model might allow for
-         more intuitive adjustments:
-         If we put a damper on the jet engine by lowering GAIN, 
-         we still want the listener to perceive the full volume, 
-         but now at a closer distance, without changing the 
-         reference distance.
-      </para></note>
-    ]]>
-    </sect2>
-
-    <sect2> 
-    <title>Inverse Distance Clamped Model</title>
-    <para>
-         This is essentially the Inverse Distance model,
-         extended to guarantee that for distances below
-         REFERENCE_DISTANCE, gain is clamped. This mode
-         is equivalent to the IASIG I3DL2 (and DS3D) distance 
-         model.
-     <literallayout>
-      dist = max(dist,REFERENCE_DISTANCE);
-      dist = min(dist,MAX_DISTANCE);
-      G_dB = GAIN - 20*log10(1 + ROLLOFF_FACTOR*(dist-REFERENCE_DISTANCE)/REFERENCE_DISTANCE )
-      G_dB = min(G_dB,MAX_GAIN);
-      G_dB = max(G_dB,MIN_GAIN);
-     </literallayout>      
-    </para>
-     
-
-    <![ %Annote [
-      <note><title>Annotation (DS3D MIN_DISTANCE)</title><para>
-         The DS3D attenuation model is extended by an explicit 
-         clamping mechanism. REFERENCE_DISTANCE is equivalent
-         to DS3D MIN_DISTANCE if the INVERSE_DISTANCE_CLAMPED
-         mode is used.
-       </para></note>
-    ]]>
-
-    <![ %Annote [
-      <note><title>Annotation (High Frequency Rolloff)</title><para>
-         To simulate different atmospheric conditions, a frequency
-         dependent attenuation is used in A3D and EAX.
-         At this time &AL; does not have a mechanism to specify
-         lowpass filtering parameterized by distance. 
-      </para></note>
-    ]]>
-    </sect2>
-    </sect1>
-
-
-    <sect1 id="order-distance">
-    <title>Evaluation of Gain/Attenuation Related State</title>
-    <para>
-       While amplification/attenuation commute (mulplication of
-       scaling factors), clamping operations do not. The order
-       in which various gain related operations are applied is:
-       Distance attenuation is calculated first, including 
-       minimum (REFERENCE_DISTANCE) and maximum (MAX_DISTANCE)
-       thresholds. If the Source is directional (CONE_INNER_ANGLE 
-       less than CONE_OUTER_ANGLE), an angle-dependent attenuation
-       is calculated depending on CONE_OUTER_GAIN, and multiplied
-       with the distance dependent attenuation.
-       The resulting attenuation factor for the given angle and
-       distance between Listener and Source is multiplied
-       with Source GAIN. The effective GAIN computed this way
-       is compared against MIN_GAIN and MAX_GAIN thresholds.
-       The result is guaranteed to be clamped to [MIN_GAIN, MAX_GAIN],
-       and subsequently multiplied by Listener GAIN which serves
-       as an overall volume control. The implementation is free
-       to clamp Listener GAIN if necessary due to hardware or
-       implementation constraints.
-    </para>
-    </sect1>
-    
-
-
-    <sect1 id="culling-by-distance">
-    <title>No Culling By Distance</title>
-    <para>  
-      With the DS3D compatible Inverse Clamped Distance Model,
-      &AL; provides a per-Source MAX_DISTANCE attribute
-      that can be used to define a distance beyond which the Source will
-      not be further attenuated by distance.  
-       The DS3D distance attenuation model and its clamping of volume
-       is also extended by a mechanism to cull (mute) sources from proccessing,
-       based on distance. However, &AL; does not
-       support culling a Source from processing based on a distance
-       threshold.
-    </para>
-    <para>
-       At this time &AL; is not meant to support culling at all. Culling
-       based on distance, or bounding volumes, or other criteria, is best
-       left to the application. For example, the application might
-       employ sophisticated techniques to determine whether sources
-       are audible that are beyond the scope of &AL;. In particular,
-       rule based culling inevitably introduces acoustic artifacts.
-       E.g. if the Listener-Source distance is nearly equal to the
-       culling threshold distance, but varies above and below, there
-       will be popping artifacts in the absence of hysteresis.
-    </para>
-
-     <![ %Annote [
-      <note><title>Annotation (No MAX_DISTANCE plus MUTE)</title><para>
-         &AL; does support the AUDIBLE mode with MAX_DISTANCE (clamping),
-         but does not support culling. Applications that employ this
-         DS3D feature will have to perform their own distance calculation
-         and mute the source (Source GAIN equals zero) as desired.
-       </para></note>
-    ]]>
-
-    <![ %RFC [
-       <note id="rfc-bk000803-07"><title>RFC: DS3D-like Extension</title><para>  
-         For ease of portability, should we define an Extension that
-         provides MAX_DISTANCE for MUTE mode?
-      </para></note>
-    ]]>   
-    </sect1>
-
-
-    
-    <![ %Scratch [
-    <sect1 id="sound-speed">
-    <title>NO Sound Propagation Speed</title>
-    <para>
-      &AL; implementations can choose to model sound propagation with
-      limited speed for certain effects, e.g. early reflections.
-      In addition, the Doppler Effect is defined with respect to the
-      speed of sound in the predominant medium. The application can
-      set the speed of sound as a scalar value. The speed is defined
-      with respect to the scaled unit. If D I S T A N C E _ S C A L E is changed,
-      this will affect both the distance and the propagation speed,
-      leaving the propagation time unaffected.
-      <funcsynopsis><funcprototype> 
-      <funcdef> void <function>  PropagationSpeed </function></funcdef>
-      <paramdef> &float; <parameter> propSpeed </parameter></paramdef>
-      </funcprototype></funcsynopsis>
-      </para>
-     <para>
-      A negative scale will result in an INVALID_VALUE error, the
-      command is then ignored. The default value is 1. The current
-      setting can be queried using GetFloatv and PROPAGATION_SPEED.
-    </para>
-    </sect1>
-    ]]> 
-    
-    <sect1 id="doppler-scale">
-    <title>Velocity Dependent Doppler Effect</title>
-    <para>
-       The Doppler Effect depends on the velocities of Source and
-       Listener relative to the medium, and the propagation speed
-       of sound in that medium. The application might want to
-       emphasize or de-emphasize the Doppler Effect as physically
-       accurate calculation might not give the desired results. The
-       amount of frequency shift (pitch change) is proportional
-       to the speed of listener and source along their line of
-       sight. The application can increase or decrease that
-       frequency shift by specifying the scaling factor &AL;
-       should apply to the result of the calculation.
-    </para>
-    <para>
-      The Doppler Effect as implemented by &AL; is described
-      by the formula below. Effects of the medium (air, water)
-      moving with respect to listener and source are ignored.
-      DOPPLER_VELOCITY is the propagation speed relative to
-      which the Source velocities are interpreted. 
-      <literallayout>
-        VD:  DOPPLER_VELOCITY
-        DF:  DOPPLER_FACTOR
-        vl:  Listener velocity (scalar, projected on source-listener vector)
-        vs:  Source velocity (scalar, projected on source-listener vector)
-        f:   Frequency of sample
-        f':  effective Doppler shifted frequency
-
-        f' = DF * f * (VD-vl)/(VD+vs)
-
-        vl<0, vs>0 :  source and listener approaching each other
-        vl>0, vs<0 :  source and listener moving away from each other
-      </literallayout>
-      The implementation has to clamp the projected Listener 
-      velocity vl, if abs(vl) is greater or equal to VD. It similarly has to
-      clamp the projected Source velocity vs if abs(vs) is greater or equal 
-      to VD.
-    </para>
-    <para>
-      There are two API calls global to the current context that provide
-      control of the two related parameters. DOPPLER_FACTOR is a simple
-      scaling to exaggerate or deemphasize the Doppler (pitch) shift
-      resulting from the calculation.
-      <funcsynopsis><funcprototype> 
-      <funcdef> void <function> DopplerFactor </function></funcdef>
-      <paramdef> &float; <parameter> dopplerFactor </parameter></paramdef>
-      </funcprototype></funcsynopsis>
-      A negative value will result in an INVALID_VALUE error, the
-      command is then ignored. The default value is 1. The current
-      setting can be queried using GetFloatv and DOPPLER_FACTOR.
-      The implementation is free to optimize the case of DOPPLER_FACTOR
-      being set to zero, as this effectively disables the effect.
-    </para>
-
-    <![ %Annote [
-      <note><title>Annotation (No Enable)</title><para>
-         There is currently no mechanism to switch on/off Doppler 
-         calculation using e.g. a DOPPLER_SHIFT token and Enable/Disable.
-         For the time being, DopplerFactor(0) may be used to signal
-         to the implementation that no Doppler Effect calculation is
-         required.
-       </para></note>
-    ]]>
- 
-   <para>
-      DOPPLER_VELOCITY allows the application to change the
-      reference (propagation) velocity used in the Doppler Effect
-      calculation. This permits the application to use a velocity
-      scale appropriate to its purposes.
-      <funcsynopsis><funcprototype> 
-      <funcdef> void <function> DopplerVelocity </function></funcdef>
-      <paramdef> &float; <parameter> dopplerVelocity</parameter></paramdef>
-      </funcprototype></funcsynopsis>
-      A negative or zero value will result in an INVALID_VALUE error, and the
-      command is ignored. The default value is 1.
-      The current setting can be queried using GetFloatv and DOPPLER_VELOCITY.
-    </para>
-    
-    <![ %Annote [
-      <note><title>Annotation (No Sideeffects on Delay)</title><para>
-         To permit independent control of Doppler Effect as opposed
-         to other, sound wave propagation related effects (delays,
-         echos, reverberation), DOPPLER_VELOCITY is not taken into
-         account for any other calculation than Doppler Shift.
-       </para></note>
-    ]]>
-
-    <![ %Annote [
-      <note><title>Annotation (SetUnitsPerMeter)</title><para>
-         DOPPLER_VELOCITY accomplishes the purposes of DS3D
-         scaling parameters in a straightforward way, without
-         introducing the undesirable connotations of real world 
-         units.
-       </para></note>
-    ]]>
-    </sect1>
-
-    </chapter>
-
diff --git a/neo/openal/docs/ent-examples.sgml b/neo/openal/docs/ent-examples.sgml
deleted file mode 100644
index 24957738..00000000
--- a/neo/openal/docs/ent-examples.sgml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-  <!NOTATION  ASCII    system    "ASCII" >
-  <!ENTITY    sample.c  system "examples/init_al.c" CDATA CGM-CHAR> 
-  <!ENTITY    ExInitAL.c  system "examples/init_al.c"   CDATA  ASCII  > 
-  
\ No newline at end of file
diff --git a/neo/openal/docs/ent-extensions.sgml b/neo/openal/docs/ent-extensions.sgml
deleted file mode 100644
index c4acd939..00000000
--- a/neo/openal/docs/ent-extensions.sgml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-  <!-- ENTITY  ExtLoopPoint.txt  system "extensions/ext-loop-point.txt" CDATA linespecific --> 
- 
\ No newline at end of file
diff --git a/neo/openal/docs/ent-marks-annotated.sgml b/neo/openal/docs/ent-marks-annotated.sgml
deleted file mode 100644
index 2cbe4d35..00000000
--- a/neo/openal/docs/ent-marks-annotated.sgml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-        <!-- Annotated Specification Target -->
-        <!ENTITY % Level1       "INCLUDE"               > <!-- Reference     -->
-        <!ENTITY % Level2       "INCLUDE"               > <!-- Specification -->
-        <!ENTITY % RFC          "IGNORE"                > <!-- Specification Draft -->
-        <!ENTITY % Annote       "INCLUDE"               > <!-- Annotation -->
-        <!ENTITY % Ext1         "INCLUDE"               > <!-- ARB EXTensions -->
-        <!ENTITY % Ext2         "INCLUDE"               > <!-- Vendor EXTensions (if applicable) -->
-        <!ENTITY % Example      "IGNORE"                > <!-- Example Code Vendor EXTensions -->
-        <!ENTITY % Revision     "IGNORE"                > <!-- CVS Revision History Tags (per-file) -->
-        <!ENTITY % Scratch      "IGNORE"                > <!-- Internal working notes/tmeporary -->
diff --git a/neo/openal/docs/ent-marks-full.sgml b/neo/openal/docs/ent-marks-full.sgml
deleted file mode 100644
index eb5515ac..00000000
--- a/neo/openal/docs/ent-marks-full.sgml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-        <!-- Annotated Specification Target -->
-        <!ENTITY % Level1       "INCLUDE"               > <!-- Reference     -->
-        <!ENTITY % Level2       "INCLUDE"               > <!-- Specification -->
-        <!ENTITY % RFC          "INCLUDE"                > <!-- Specification Draft -->
-        <!ENTITY % Annote       "INCLUDE"               > <!-- Annotation -->
-        <!ENTITY % Ext1         "INCLUDE"               > <!-- ARB EXTensions -->
-        <!ENTITY % Ext2         "INCLUDE"               > <!-- Vendor EXTensions (if applicable) -->
-        <!ENTITY % Example      "INCLUDE"                > <!-- Example Code Vendor EXTensions -->
-        <!ENTITY % Revision     "IGNORE"                > <!-- CVS Revision History Tags (per-file) -->
-        <!ENTITY % Scratch      "IGNORE"                > <!-- Internal working notes/tmeporary -->
diff --git a/neo/openal/docs/ent-marks-reference.sgml b/neo/openal/docs/ent-marks-reference.sgml
deleted file mode 100644
index bb34d5e5..00000000
--- a/neo/openal/docs/ent-marks-reference.sgml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-        <!-- Reference Target --->
-        <!ENTITY % Level1       "INCLUDE"               > <!-- Reference     -->
-        <!ENTITY % Level2       "INCLUDE"               > <!-- Specification -->
-        <!ENTITY % RFC          "IGNORE"                > <!-- Specification Draft -->
-        <!ENTITY % Annote       "IGNORE"                > <!-- Annotation -->
-        <!ENTITY % Ext1         "INCLUDE"               > <!-- ARB EXTensions -->
-        <!ENTITY % Ext2         "INCLUDE"               > <!-- Vendor EXTensions (if applicable) -->
-        <!ENTITY % Example      "IGNORE"                > <!-- Example Code Vendor EXTensions -->
-        <!ENTITY % Revision     "IGNORE"                > <!-- CVS Revision History Tags (per-file) -->
-        <!ENTITY % Scratch      "IGNORE"                > <!-- Internal working notes/tmeporary -->
diff --git a/neo/openal/docs/ent-marks-specification.sgml b/neo/openal/docs/ent-marks-specification.sgml
deleted file mode 100644
index f68660ae..00000000
--- a/neo/openal/docs/ent-marks-specification.sgml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-        <!-- Specification Target -->
-        <!ENTITY % Level1       "INCLUDE"               > <!-- Reference     -->
-        <!ENTITY % Level2       "INCLUDE"               > <!-- Specification -->
-        <!ENTITY % RFC          "IGNORE"                > <!-- Specification Draft -->
-        <!ENTITY % Annote       "IGNORE"                > <!-- Annotation -->
-        <!ENTITY % Ext1         "INCLUDE"               > <!-- ARB EXTensions -->
-        <!ENTITY % Ext2         "INCLUDE"               > <!-- Vendor EXTensions (if applicable) -->
-        <!ENTITY % Example      "IGNORE"                > <!-- Example Code Vendor EXTensions -->
-        <!ENTITY % Revision     "IGNORE"                > <!-- CVS Revision History Tags (per-file) -->
-        <!ENTITY % Scratch      "IGNORE"                > <!-- Internal working notes/tmeporary -->
diff --git a/neo/openal/docs/ent-names.sgml b/neo/openal/docs/ent-names.sgml
deleted file mode 100644
index 9da1b979..00000000
--- a/neo/openal/docs/ent-names.sgml
+++ /dev/null
@@ -1,43 +0,0 @@
-
-        <!ENTITY   coLoki       "Loki Software"    >
-        <!ENTITY   coCreat      "Creative Labs"         >
-        <!ENTITY   OAL          "OpenAL"                >
-        <!ENTITY   AL           "AL"                    >
- 
-        <!ENTITY   OGL          "OpenGL"                >
-      
-        <!ENTITY   NONE         "NONE"                  >
-        <!ENTITY   TRUE         "TRUE"                  >
-        <!ENTITY   FALSE        "FALSE"                 >
-        <!ENTITY   NaN          "NaN"                   >
-        <!ENTITY   Infty        "Infinity"              >
-        <!ENTITY   type         "T "                    >
-        <!ENTITY   void         "void "                 >
-        <!ENTITY   bool         "boolean "              >
-        <!ENTITY   byte         "byte "                 >
-        <!ENTITY   ubyte        "ubyte "                >
-        <!ENTITY   short        "short "                >
-        <!ENTITY   ushort       "ushort "               >
-        <!ENTITY   int          "int "                  >
-        <!ENTITY   uint         "uint "                 >
-
-        <!ENTITY   long         "long "                 >
-        <!ENTITY   ulong        "ulong "                >
-
-        <!ENTITY   enum         "enum "                 >
-        <!ENTITY   sizei        "sizei "                >
-        <!ENTITY   bitfield     "bitfield "             >
-        <!ENTITY   float        "float "                >
-        <!ENTITY   double       "double "               >
-        <!ENTITY   clampf       "clampf "               >
-        <!ENTITY   clampd       "clampd "               >
-
-        <!-- ALC Context -->
-        <!ENTITY   device      "ALCdevice"              >
-        <!ENTITY   context     "ALCcontext"             >
-
-        <!ENTITY   Par          "Name"                  > <!-- enum as well as identifier -->
-        <!ENTITY   Sig          "Signature"             > <!-- legal types -->
-        <!ENTITY   Val          "Values"                > <!-- legal values/ranges -->
-        <!ENTITY   Def          "Default"               > <!-- default value -->
-  
diff --git a/neo/openal/docs/index.html b/neo/openal/docs/index.html
deleted file mode 100644
index d4060d1c..00000000
--- a/neo/openal/docs/index.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
-
-<head>
-<title> Index</title>
-</head>
-
-<body>
-
-<h1>Index</h1>
-<p>
-  This document has been removed.
-  See <a href="http://www.openal.org/">www.openal.org</a>
-  for information.
-</p>
-
-</body>
-</html>
-
-
-</html>
diff --git a/neo/openal/docs/oalspecs.sgml b/neo/openal/docs/oalspecs.sgml
deleted file mode 100644
index fb8d3b3f..00000000
--- a/neo/openal/docs/oalspecs.sgml
+++ /dev/null
@@ -1,109 +0,0 @@
-<!DOCTYPE Book PUBLIC "-//GNOME//DTD DocBook PNG Variant V1.1//EN"[
- 
-        <!-- INCLUDE or IGNORE for marked sections -->
-        <!ENTITY % Marks        system  "ent-marks.sgml"  >
-
-        <!-- keywords and other standard entities -->
-        <!ENTITY % Entities     system  "ent-names.sgml"  >
-      
-        <!-- C programs and other example entities -->
-        <!ENTITY % Examples     system  "ent-examples.sgml"  >
-    
-        <!-- Extensions as external ASCII documents -->
-        <!ENTITY % Extensions   system  "ent-extensions.sgml"  >
-      
-        %Marks; 
-        %Entities;
-        %Examples;
-        %Extensions;
-
-        <!-- book sections -->
-        <!ENTITY   CREDITS               system  "../CREDITS"  >
-        <!ENTITY   secBookInfo           system  "sec-bookinfo.sgml"  >
-        <!ENTITY   chpIntroduction       system  "chp-introduction.sgml"  >
-        <!ENTITY   chpOperation          system  "chp-operation.sgml"  >
-        <!ENTITY   chpState              system  "chp-state.sgml"  >
-        <!ENTITY   chpRendering          system  "chp-rendering.sgml"  >
-        <!ENTITY   chpBuffers            system  "chp-buffers.sgml"  >
-        <!ENTITY   chpQueueing           system  "chp-queueing.sgml"  >
-        <!ENTITY   chpMultiChannel       system  "chp-multichannel.sgml"  >
-
-        <!ENTITY   alcContext            system  "alc-context.sgml"  >
-
-        <!ENTITY   appConstants          system  "app-constants.sgml"  >
-        <!ENTITY   appExtensions         system  "app-extensions.sgml"  >
-        <!ENTITY   appExtensionProcess   system  "app-extensionprocess.sgml"  >
-        <!ENTITY   appAnnotations        system  "app-annotations.sgml"  >
-
-
-
-        <!-- misc. specifics -->
-        <!ENTITY   DocVersion   "1.0 (draft)"           >
-        <!ENTITY   DocDate      "2000/10/10"            >
-        <!ENTITY   ALVersion    "1.0"                   > 
-        <!ENTITY   ALCVersion   "1.0"                   > 
-]>
-
-
-<!-- INDEX -->
-
-<book id="index">
-
-<!-- HEADING -->
-  &secBookInfo;    
-
-<!-- INTRODUCTION -->
-  &chpIntroduction;
-
-<!-- CHAPTERS -->
-  &chpOperation;
-  &chpState;
-  &chpRendering;
-  &chpBuffers;
-  &chpQueueing;
-
-<![ %Scratch [
-  &chpMultiChannel;
-]]>
-
-  &alcContext;
- 
-<!-- APPENDICITIS [sic] -->
-
-  &appConstants;
-  &appExtensions;
-  &appExtensionProcess;
-
-<![ %Scratch [ 
-  &appAnnotations; 
-]]>
-
-
-<![ %Revision [ 
-  <appendix>
-  <title>Main Document CVS Revision History</title>
-  <para><literallayout>  
-   CVS Document: $Id: oalspecs.sgml,v 1.15 2000/11/10 23:10:44 bk Exp $
-   CVS Revision: $Revision: 1.15 $
-
-   $Log: oalspecs.sgml,v $
-   Revision 1.15  2000/11/10 23:10:44  bk
-   Cleanup.
-
-   Revision 1.14  2000/11/04 00:11:40  bk
-   Maintenance update
-
-   Revision 1.13  2000/10/26 03:01:55  bk
-   Fixed typo for ALC entity.
-
-   Revision 1.12  2000/10/26 02:59:46  bk
-   External entities.
-
-   </literallayout><para>     
-  </appendix>
-]]>
-
-
-
-</book>
-
diff --git a/neo/openal/docs/sec-bookinfo.sgml b/neo/openal/docs/sec-bookinfo.sgml
deleted file mode 100644
index 26b3b7a6..00000000
--- a/neo/openal/docs/sec-bookinfo.sgml
+++ /dev/null
@@ -1,53 +0,0 @@
-
-  <bookinfo> 
-    <title>
-      &OAL; Specification and Reference
-    </title>
-<!--
-    <editor>
-      <firstname>Bernd</firstname>
-      <surname>Kreimeier</surname>
-    </editor>
-  -->
-
-    <edition>Version 1.0 Draft</edition>
-
-    <pubdate>June 2000</pubdate>
-    <copyright>
-      <year>1999-2000</year>
-      <holder>Loki Software</holder>
-    </copyright>
-
-    <legalnotice>
-      <para>
-        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.
-      </para>
-     </legalnotice>
-     <legalnotice>
-      <para>
-        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 copyright owners.
-      </para>
-      </legalnotice>
-      <legalnotice>
-      <para> UNIX is a trademark of X/Open Group.</para>
-      <para> X Window System is a trademark of X Consortium, Inc.</para>
-      <para> Linux is a trademark of Linus Torvalds.</para>
-      <para> Windows is a trademark of Microsoft Corp.</para>
-      <para> Macintosh and Apple are  trademarks of Apple Computer, Inc.</para>
-      <para> Loki and &OAL; are trademarks of Loki Software, Inc.</para>
-      <para> All other trademarks are property of their respective owners.</para>
-    </legalnotice>
-
-    <releaseinfo> 
-      Draft document of &OAL; Specification.
-    </releaseinfo>   
-
-   
-
-  </bookinfo>
- 
\ No newline at end of file
diff --git a/neo/openal/docs/specification.html b/neo/openal/docs/specification.html
deleted file mode 100644
index 0d51804b..00000000
--- a/neo/openal/docs/specification.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
-
-<head>
-<title>OpenAL Specification</title>
-</head>
-
-<body>
-
-<h1>OpenAL Specification</h1>
-<p>
-  This document has been removed.
-  See <a href="index.html">Index</a>
-  for the specification.
-</p>
-
-</body>
-</html>
diff --git a/neo/openal/docs/white-paper.html b/neo/openal/docs/white-paper.html
deleted file mode 100644
index 3c763541..00000000
--- a/neo/openal/docs/white-paper.html
+++ /dev/null
@@ -1,16 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
-  <head>
-    <title>OpenAL Whitepaper</title>
-  </head>
-
-  <body>
-    <h1>OpenAL Whitepaper</h1>
-    <p>
-      This document has been removed.
-      See <a href="index.html">Index</a>
-      for the specification.
-    </p>
-
-  </body>
-</html>
diff --git a/neo/openal/include/al.h b/neo/openal/include/al.h
deleted file mode 100644
index 8c4f1202..00000000
--- a/neo/openal/include/al.h
+++ /dev/null
@@ -1,491 +0,0 @@
-#ifndef _AL_H_
-#define _AL_H_
-
-/**
- * OpenAL cross platform audio library
- * Copyright (C) 1999-2000 by authors.
- * 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., 59 Temple Place - Suite 330,
- *  Boston, MA  02111-1307, USA.
- * Or go to http://www.gnu.org/copyleft/lgpl.html
- */
-#include "altypes.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifdef _WIN32
- #ifdef _OPENAL32LIB
-  #define ALAPI __declspec(dllexport)
- #else
-  #define ALAPI __declspec(dllimport)
- #endif
- #define ALAPIENTRY __cdecl
- #define AL_CALLBACK
-#else
- #ifdef TARGET_OS_MAC
-  #if TARGET_OS_MAC
-   #pragma export on
-  #endif
- #endif
- #define ALAPI
- #define ALAPIENTRY __cdecl
- #define AL_CALLBACK
-#endif
-
-#define OPENAL
-
-#ifndef AL_NO_PROTOTYPES
-
-/**
- * OpenAL Maintenance Functions
- * Initialization and exiting.
- * State Management and Query.
- * Error Handling.
- * Extension Support.
- */
-
-/** State management. */
-ALAPI ALvoid	ALAPIENTRY alEnable( ALenum capability );
-ALAPI ALvoid	ALAPIENTRY alDisable( ALenum capability ); 
-ALAPI ALboolean ALAPIENTRY alIsEnabled( ALenum capability ); 
-
-/** Application preferences for driver performance choices. */
-ALAPI ALvoid	ALAPIENTRY alHint( ALenum target, ALenum mode );
-
-/** State retrieval. */
-ALAPI ALboolean ALAPIENTRY alGetBoolean( ALenum param );
-ALAPI ALint		ALAPIENTRY alGetInteger( ALenum param );
-ALAPI ALfloat	ALAPIENTRY alGetFloat( ALenum param );
-ALAPI ALdouble	ALAPIENTRY alGetDouble( ALenum param );
-ALAPI ALvoid	ALAPIENTRY alGetBooleanv( ALenum param, ALboolean* data );
-ALAPI ALvoid	ALAPIENTRY alGetIntegerv( ALenum param, ALint* data );
-ALAPI ALvoid	ALAPIENTRY alGetFloatv( ALenum param, ALfloat* data );
-ALAPI ALvoid	ALAPIENTRY alGetDoublev( ALenum param, ALdouble* data );
-ALAPI ALubyte*	ALAPIENTRY alGetString( ALenum param );
-
-/**
- * Error support.
- * Obtain the most recent error generated in the AL state machine.
- */
-ALAPI ALenum	ALAPIENTRY alGetError( ALvoid );
-
-
-/** 
- * Extension support.
- * Obtain the address of a function (usually an extension)
- *  with the name fname. All addresses are context-independent. 
- */
-ALAPI ALboolean ALAPIENTRY alIsExtensionPresent( ALubyte* fname );
-
-
-/** 
- * Extension support.
- * Obtain the address of a function (usually an extension)
- *  with the name fname. All addresses are context-independent. 
- */
-ALAPI ALvoid*	ALAPIENTRY alGetProcAddress( ALubyte* fname );
-
-
-/**
- * Extension support.
- * Obtain the integer value of an enumeration (usually an extension) with the name ename. 
- */
-ALAPI ALenum	ALAPIENTRY alGetEnumValue( ALubyte* ename );
-
-
-
-
-/**
- * LISTENER
- * Listener is the sample position for a given context.
- * The multi-channel (usually stereo) output stream generated
- *  by the mixer is parametrized by this Listener object:
- *  its position and velocity relative to Sources, within
- *  occluder and reflector geometry.
- */
-
-
-
-/**
- *
- * Listener Environment:  default 0.
- */
-ALAPI ALvoid	ALAPIENTRY alListeneri( ALenum param, ALint value );
-
-
-/**
- *
- * Listener Gain:  default 1.0f.
- */
-ALAPI ALvoid	ALAPIENTRY alListenerf( ALenum param, ALfloat value );
-
-
-/**  
- *
- * Listener Position.
- * Listener Velocity.
- */
-ALAPI ALvoid	ALAPIENTRY alListener3f( ALenum param, ALfloat v1, ALfloat v2, ALfloat v3 ); 
-
-
-/**
- *
- * Listener Position:        ALfloat[3]
- * Listener Velocity:        ALfloat[3]
- * Listener Orientation:     ALfloat[6]  (forward and up vector).
- */
-ALAPI ALvoid	ALAPIENTRY alListenerfv( ALenum param, ALfloat* values ); 
-
-ALAPI ALvoid	ALAPIENTRY alGetListeneri( ALenum param, ALint* value );
-ALAPI ALvoid	ALAPIENTRY alGetListenerf( ALenum param, ALfloat* value );
-ALAPI ALvoid	ALAPIENTRY alGetListener3f( ALenum param, ALfloat* v1, ALfloat* v2, ALfloat* v3 ); 
-ALAPI ALvoid	ALAPIENTRY alGetListenerfv( ALenum param, ALfloat* values ); 
-
-
-/**
- * SOURCE
- * Source objects are by default localized. Sources
- *  take the PCM data provided in the specified Buffer,
- *  apply Source-specific modifications, and then
- *  submit them to be mixed according to spatial 
- *  arrangement etc.
- */
-
-
-
-/** Create Source objects. */
-ALAPI ALvoid	ALAPIENTRY alGenSources( ALsizei n, ALuint* sources ); 
-
-/** Delete Source objects. */
-ALAPI ALvoid	ALAPIENTRY alDeleteSources( ALsizei n, ALuint* sources );
-
-/** Verify a handle is a valid Source. */ 
-ALAPI ALboolean ALAPIENTRY alIsSource( ALuint id ); 
-
-/** Set an integer parameter for a Source object. */
-ALAPI ALvoid	ALAPIENTRY alSourcei( ALuint source, ALenum param, ALint value ); 
-ALAPI ALvoid	ALAPIENTRY alSourcef( ALuint source, ALenum param, ALfloat value ); 
-ALAPI ALvoid	ALAPIENTRY alSource3f( ALuint source, ALenum param, ALfloat v1, ALfloat v2, ALfloat v3 );
-ALAPI ALvoid	ALAPIENTRY alSourcefv( ALuint source, ALenum param, ALfloat* values ); 
-
-/** Get an integer parameter for a Source object. */
-ALAPI ALvoid	ALAPIENTRY alGetSourcei( ALuint source,  ALenum param, ALint* value );
-ALAPI ALvoid	ALAPIENTRY alGetSourcef( ALuint source,  ALenum param, ALfloat* value );
-ALAPI ALvoid	ALAPIENTRY alGetSource3f( ALuint source,  ALenum param, ALfloat* v1, ALfloat* v2, ALfloat* v3 );
-ALAPI ALvoid	ALAPIENTRY alGetSourcefv( ALuint source, ALenum param, ALfloat* values );
-
-ALAPI ALvoid	ALAPIENTRY alSourcePlayv( ALsizei n, ALuint *sources );
-ALAPI ALvoid	ALAPIENTRY alSourcePausev( ALsizei n, ALuint *sources );
-ALAPI ALvoid	ALAPIENTRY alSourceStopv( ALsizei n, ALuint *sources );
-ALAPI ALvoid	ALAPIENTRY alSourceRewindv(ALsizei n,ALuint *sources);
-
-/** Activate a source, start replay. */
-ALAPI ALvoid	ALAPIENTRY alSourcePlay( ALuint source );
-
-/**
- * Pause a source, 
- *  temporarily remove it from the mixer list.
- */
-ALAPI ALvoid	ALAPIENTRY alSourcePause( ALuint source );
-
-/**
- * Stop a source,
- *  temporarily remove it from the mixer list,
- *  and reset its internal state to pre-Play.
- * To remove a Source completely, it has to be
- *  deleted following Stop, or before Play.
- */
-ALAPI ALvoid	ALAPIENTRY alSourceStop( ALuint source );
-
-/**
- * Rewinds a source, 
- *  temporarily remove it from the mixer list,
- *  and reset its internal state to pre-Play.
- */
-ALAPI ALvoid	ALAPIENTRY alSourceRewind( ALuint source );
-
-
-
-/**
- * BUFFER
- * Buffer objects are storage space for sample data.
- * Buffers are referred to by Sources. There can be more than
- *  one Source using the same Buffer data. If Buffers have
- *  to be duplicated on a per-Source basis, the driver has to
- *  take care of allocation, copying, and deallocation as well
- *  as propagating buffer data changes.
- */
-
-
-
-
-/** Buffer object generation. */
-ALAPI ALvoid 	ALAPIENTRY alGenBuffers( ALsizei n, ALuint* buffers );
-ALAPI ALvoid	ALAPIENTRY alDeleteBuffers( ALsizei n, ALuint* buffers );
-ALAPI ALboolean ALAPIENTRY alIsBuffer( ALuint buffer );
-
-/**
- * Specify the data to be filled into a buffer.
- */
-ALAPI ALvoid	ALAPIENTRY alBufferData( ALuint   buffer,
-										 ALenum   format,
-										 ALvoid*  data,
-										 ALsizei  size,
-										 ALsizei  freq );
-
-
-ALAPI ALvoid	ALAPIENTRY alGetBufferi( ALuint buffer, ALenum param, ALint*   value );
-ALAPI ALvoid	ALAPIENTRY alGetBufferf( ALuint buffer, ALenum param, ALfloat* value );
-
-
-
-
-/**
- * Queue stuff
- */
-
-ALAPI ALvoid	ALAPIENTRY alSourceQueueBuffers( ALuint source, ALsizei n, ALuint* buffers );
-ALAPI ALvoid	ALAPIENTRY alSourceUnqueueBuffers( ALuint source, ALsizei n, ALuint* buffers );
-
-/**
- * Knobs and dials
- */
-ALAPI ALvoid	ALAPIENTRY alDistanceModel( ALenum value );
-ALAPI ALvoid	ALAPIENTRY alDopplerFactor( ALfloat value );
-ALAPI ALvoid	ALAPIENTRY alDopplerVelocity( ALfloat value );
-
-#else /* AL_NO_PROTOTYPES */
-
-/**
- * OpenAL Maintenance Functions
- * Initialization and exiting.
- * State Management and Query.
- * Error Handling.
- * Extension Support.
- */
-
-/** State management. */
-ALAPI ALvoid	ALAPIENTRY (*alEnable)( ALenum capability );
-ALAPI ALvoid	ALAPIENTRY (*alDisable)( ALenum capability ); 
-ALAPI ALboolean ALAPIENTRY (*alIsEnabled)( ALenum capability ); 
-
-/** Application preferences for driver performance choices. */
-ALAPI ALvoid	ALAPIENTRY (*alHint)( ALenum target, ALenum mode );
-
-/** State retrieval. */
-ALAPI ALboolean ALAPIENTRY (*alGetBoolean)( ALenum param );
-ALAPI ALint		ALAPIENTRY (*alGetInteger)( ALenum param );
-ALAPI ALfloat	ALAPIENTRY (*alGetFloat)( ALenum param );
-ALAPI ALdouble	ALAPIENTRY (*alGetDouble)( ALenum param );
-ALAPI ALvoid	ALAPIENTRY (*alGetBooleanv)( ALenum param, ALboolean* data );
-ALAPI ALvoid	ALAPIENTRY (*alGetIntegerv)( ALenum param, ALint* data );
-ALAPI ALvoid	ALAPIENTRY (*alGetFloatv)( ALenum param, ALfloat* data );
-ALAPI ALvoid	ALAPIENTRY (*alGetDoublev)( ALenum param, ALdouble* data );
-ALAPI ALubyte*	ALAPIENTRY (*alGetString)( ALenum param );
-
-/**
- * Error support.
- * Obtain the most recent error generated in the AL state machine.
- */
-ALAPI ALenum	ALAPIENTRY (*alGetError)( ALvoid );
-
-
-/** 
- * Extension support.
- * Obtain the address of a function (usually an extension)
- *  with the name fname. All addresses are context-independent. 
- */
-ALAPI ALboolean ALAPIENTRY (*alIsExtensionPresent)( ALubyte* fname );
-
-
-/** 
- * Extension support.
- * Obtain the address of a function (usually an extension)
- *  with the name fname. All addresses are context-independent. 
- */
-ALAPI ALvoid*	ALAPIENTRY (*alGetProcAddress)( ALubyte* fname );
-
-
-/**
- * Extension support.
- * Obtain the integer value of an enumeration (usually an extension) with the name ename. 
- */
-ALAPI ALenum	ALAPIENTRY (*alGetEnumValue)( ALubyte* ename );
-
-
-
-
-/**
- * LISTENER
- * Listener is the sample position for a given context.
- * The multi-channel (usually stereo) output stream generated
- *  by the mixer is parametrized by this Listener object:
- *  its position and velocity relative to Sources, within
- *  occluder and reflector geometry.
- */
-
-
-
-/**
- *
- * Listener Environment:  default 0.
- */
-ALAPI ALvoid	ALAPIENTRY (*alListeneri)( ALenum param, ALint value );
-
-
-/**
- *
- * Listener Gain:  default 1.0f.
- */
-ALAPI ALvoid	ALAPIENTRY (*alListenerf)( ALenum param, ALfloat value );
-
-
-/**  
- *
- * Listener Position.
- * Listener Velocity.
- */
-ALAPI ALvoid	ALAPIENTRY (*alListener3f)( ALenum param, ALfloat v1, ALfloat v2, ALfloat v3 ); 
-
-
-/**
- *
- * Listener Position:        ALfloat[3]
- * Listener Velocity:        ALfloat[3]
- * Listener Orientation:     ALfloat[6]  (forward and up vector).
- */
-ALAPI ALvoid	ALAPIENTRY (*alListenerfv)( ALenum param, ALfloat* values ); 
-
-ALAPI ALvoid	ALAPIENTRY (*alGetListeneri)( ALenum param, ALint* value );
-ALAPI ALvoid	ALAPIENTRY (*alGetListenerf)( ALenum param, ALfloat* value );
-ALAPI ALvoid	ALAPIENTRY (*alGetListener3f)( ALenum param, ALfloat* v1, ALfloat* v2, ALfloat* v3 ); 
-ALAPI ALvoid	ALAPIENTRY (*alGetListenerfv)( ALenum param, ALfloat* values ); 
-
-
-/**
- * SOURCE
- * Source objects are by default localized. Sources
- *  take the PCM data provided in the specified Buffer,
- *  apply Source-specific modifications, and then
- *  submit them to be mixed according to spatial 
- *  arrangement etc.
- */
-
-
-
-/** Create Source objects. */
-ALAPI ALvoid	ALAPIENTRY (*alGenSources)( ALsizei n, ALuint* sources ); 
-
-/** Delete Source objects. */
-ALAPI ALvoid	ALAPIENTRY (*alDeleteSources)( ALsizei n, ALuint* sources );
-
-/** Verify a handle is a valid Source. */ 
-ALAPI ALboolean ALAPIENTRY (*alIsSource)( ALuint id ); 
-
-/** Set an integer parameter for a Source object. */
-ALAPI ALvoid	ALAPIENTRY (*alSourcei)( ALuint source, ALenum param, ALint value ); 
-ALAPI ALvoid	ALAPIENTRY (*alSourcef)( ALuint source, ALenum param, ALfloat value ); 
-ALAPI ALvoid	ALAPIENTRY (*alSource3f)( ALuint source, ALenum param, ALfloat v1, ALfloat v2, ALfloat v3 );
-ALAPI ALvoid	ALAPIENTRY (*alSourcefv)( ALuint source, ALenum param, ALfloat* values ); 
-
-/** Get an integer parameter for a Source object. */
-ALAPI ALvoid	ALAPIENTRY (*alGetSourcei)( ALuint source,  ALenum param, ALint* value );
-ALAPI ALvoid	ALAPIENTRY (*alGetSourcef)( ALuint source,  ALenum param, ALfloat* value );
-ALAPI ALvoid	ALAPIENTRY (*alGetSourcefv)( ALuint source, ALenum param, ALfloat* values );
-
-ALAPI ALvoid	ALAPIENTRY (*alSourcePlayv)( ALsizei n, ALuint *sources );
-ALAPI ALvoid	ALAPIENTRY (*alSourceStopv)( ALsizei n, ALuint *sources );
-
-/** Activate a source, start replay. */
-ALAPI ALvoid	ALAPIENTRY (*alSourcePlay)( ALuint source );
-
-/**
- * Pause a source, 
- *  temporarily remove it from the mixer list.
- */
-ALAPI ALvoid	ALAPIENTRY (*alSourcePause)( ALuint source );
-
-/**
- * Stop a source,
- *  temporarily remove it from the mixer list,
- *  and reset its internal state to pre-Play.
- * To remove a Source completely, it has to be
- *  deleted following Stop, or before Play.
- */
-ALAPI ALvoid	ALAPIENTRY (*alSourceStop)( ALuint source );
-
-
-
-/**
- * BUFFER
- * Buffer objects are storage space for sample data.
- * Buffers are referred to by Sources. There can be more than
- *  one Source using the same Buffer data. If Buffers have
- *  to be duplicated on a per-Source basis, the driver has to
- *  take care of allocation, copying, and deallocation as well
- *  as propagating buffer data changes.
- */
-
-
-
-
-/** Buffer object generation. */
-ALAPI ALvoid 	ALAPIENTRY (*alGenBuffers)( ALsizei n, ALuint* buffers );
-ALAPI ALvoid	ALAPIENTRY (*alDeleteBuffers)( ALsizei n, ALuint* buffers );
-ALAPI ALboolean ALAPIENTRY (*alIsBuffer)( ALuint buffer );
-
-/**
- * Specify the data to be filled into a buffer.
- */
-ALAPI ALvoid	ALAPIENTRY (*alBufferData)( ALuint   buffer,
-											ALenum   format,
-											ALvoid*  data,
-											ALsizei  size,
-											ALsizei  freq );
-
-ALAPI ALvoid	ALAPIENTRY (*alGetBufferi)( ALuint buffer, ALenum param, ALint*   value );
-ALAPI ALvoid	ALAPIENTRY (*alGetBufferf)( ALuint buffer, ALenum param, ALfloat* value );
-
-
-
-
-/**
- * Queue stuff
- */
-ALAPI ALvoid	ALAPIENTRY (*alSourceQueueBuffers)( ALuint source, ALsizei n, ALuint* buffers );
-ALAPI ALvoid	ALAPIENTRY (*alSourceUnqueueBuffers)( ALuint source, ALsizei n, ALuint* buffers );
-
-/**
- * Knobs and dials
- */
-ALAPI ALvoid	ALAPIENTRY (*alDistanceModel)( ALenum value );
-ALAPI ALvoid	ALAPIENTRY (*alDopplerFactor)( ALfloat value );
-ALAPI ALvoid	ALAPIENTRY (*alDopplerVelocity)( ALfloat value );
-
-#endif /* AL_NO_PROTOTYPES */
-
-#ifdef TARGET_OS_MAC
- #if TARGET_OS_MAC
-  #pragma export off
- #endif
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/neo/openal/include/alc.h b/neo/openal/include/alc.h
deleted file mode 100644
index b7252c4f..00000000
--- a/neo/openal/include/alc.h
+++ /dev/null
@@ -1,91 +0,0 @@
-#ifndef _ALC_H_
-#define _ALC_H_
-
-#include "altypes.h"
-#include "alctypes.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifdef _WIN32
- #ifdef _OPENAL32LIB
-  #define ALCAPI __declspec(dllexport)
- #else
-  #define ALCAPI __declspec(dllimport)
- #endif
-
- typedef struct ALCdevice_struct ALCdevice;
- typedef struct ALCcontext_struct ALCcontext;
-
- #define ALCAPIENTRY __cdecl
-#else
- #ifdef TARGET_OS_MAC
-  #if TARGET_OS_MAC
-   #pragma export on
-  #endif
- #endif
- #define ALCAPI
- #define ALCAPIENTRY __cdecl
-#endif
-
-
-
-#ifndef ALC_NO_PROTOTYPES
-
-ALCAPI ALCubyte*  ALCAPIENTRY alcGetString(ALCdevice *device,ALCenum param);
-ALCAPI ALCvoid    ALCAPIENTRY alcGetIntegerv(ALCdevice *device,ALCenum param,ALCsizei size,ALCint *data);
-
-ALCAPI ALCdevice* ALCAPIENTRY alcOpenDevice(ALCubyte *deviceName);
-ALCAPI ALCvoid    ALCAPIENTRY alcCloseDevice(ALCdevice *device);
-
-ALCAPI ALCcontext*ALCAPIENTRY alcCreateContext(ALCdevice *device,ALCint *attrList);
-ALCAPI ALCboolean ALCAPIENTRY alcMakeContextCurrent(ALCcontext *context);
-ALCAPI ALCvoid	  ALCAPIENTRY alcProcessContext(ALCcontext *context);
-ALCAPI ALCcontext*ALCAPIENTRY alcGetCurrentContext(ALCvoid);
-ALCAPI ALCdevice* ALCAPIENTRY alcGetContextsDevice(ALCcontext *context);
-ALCAPI ALCvoid	  ALCAPIENTRY alcSuspendContext(ALCcontext *context);
-ALCAPI ALCvoid    ALCAPIENTRY alcDestroyContext(ALCcontext *context);
-
-ALCAPI ALCenum	  ALCAPIENTRY alcGetError(ALCdevice *device);
-
-ALCAPI ALCboolean ALCAPIENTRY alcIsExtensionPresent(ALCdevice *device,ALCubyte *extName);
-ALCAPI ALCvoid *  ALCAPIENTRY alcGetProcAddress(ALCdevice *device,ALCubyte *funcName);
-ALCAPI ALCenum	  ALCAPIENTRY alcGetEnumValue(ALCdevice *device,ALCubyte *enumName);
-				
-#else /* ALC_NO_PROTOTYPES */
-
-ALCAPI ALCubyte*  ALCAPIENTRY (*alcGetString)(ALCdevice *device,ALCenum param);
-ALCAPI ALCvoid    ALCAPIENTRY (*alcGetIntegerv)(ALCdevice * device,ALCenum param,ALCsizei size,ALCint *data);
-
-ALCAPI ALCdevice* ALCAPIENTRY (*alcOpenDevice)(ALubyte *deviceName);
-ALCAPI ALCvoid    ALCAPIENTRY (*alcCloseDevice)(ALCdevice *device);
-
-ALCAPI ALCcontext*ALCAPIENTRY (*alcCreateContext)(ALCdevice *device,ALCint *attrList);
-ALCAPI ALCboolean ALCAPIENTRY (*alcMakeContextCurrent)(ALCcontext *context);
-ALCAPI ALCvoid	  ALCAPIENTRY (*alcProcessContext)(ALCcontext *context);
-ALCAPI ALCcontext*ALCAPIENTRY (*alcGetCurrentContext)(ALCvoid);
-ALCAPI ALCdevice* ALCAPIENTRY (*alcGetContextsDevice)(ALCcontext *context);
-ALCAPI ALCvoid	  ALCAPIENTRY (*alcSuspendContext)(ALCcontext *context);
-ALCAPI ALCvoid    ALCAPIENTRY (*alcDestroyContext)(ALCcontext *context);
-
-ALCAPI ALCenum	  ALCAPIENTRY (*alcGetError)(ALCdevice *device);
-
-ALCAPI ALCboolean ALCAPIENTRY (*alcIsExtensionPresent)(ALCdevice *device,ALCubyte *extName);
-ALCAPI ALCvoid *  ALCAPIENTRY (*alcGetProcAddress)(ALCdevice *device,ALCubyte *funcName);
-ALCAPI ALCenum	  ALCAPIENTRY (*alcGetEnumValue)(ALCdevice *device,ALCubyte *enumName);
-
-#endif /* AL_NO_PROTOTYPES */
-
-#ifdef TARGET_OS_MAC
- #if TARGET_OS_MAC
-  #pragma export off
- #endif
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/neo/openal/include/alctypes.h b/neo/openal/include/alctypes.h
deleted file mode 100644
index 436fcfac..00000000
--- a/neo/openal/include/alctypes.h
+++ /dev/null
@@ -1,125 +0,0 @@
-#ifndef _ALCTYPES_H_
-#define _ALCTYPES_H_
-
-/**
- * OpenAL cross platform audio library
- * Copyright (C) 1999-2000 by authors.
- * 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., 59 Temple Place - Suite 330,
- *  Boston, MA  02111-1307, USA.
- * Or go to http://www.gnu.org/copyleft/lgpl.html
- */
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** ALC boolean type. */
-typedef char ALCboolean;
-
-/** ALC 8bit signed byte. */
-typedef char ALCbyte;
-
-/** ALC 8bit unsigned byte. */
-typedef unsigned char ALCubyte;
-
-/** ALC 16bit signed short integer type. */
-typedef short ALCshort;
-
-/** ALC 16bit unsigned short integer type. */
-typedef unsigned short ALCushort;
-
-/** ALC 32bit unsigned integer type. */
-typedef unsigned ALCuint;
-
-/** ALC 32bit signed integer type. */
-typedef int ALCint;
-
-/** ALC 32bit floating point type. */
-typedef float ALCfloat;
-
-/** ALC 64bit double point type. */
-typedef double ALCdouble;
-
-/** ALC 32bit type. */
-typedef unsigned int ALCsizei;
-
-/** ALC void type */
-typedef void ALCvoid;
-
-/** ALC enumerations. */
-typedef int ALCenum;
-
-/* Bad value. */
-#define ALC_INVALID                              (-1)
-
-/* Boolean False. */
-#define ALC_FALSE                                0
-
-/* Boolean True. */
-#define ALC_TRUE                                 1
-
-/** Errors: No Error. */
-#define ALC_NO_ERROR                             ALC_FALSE
-
-#define ALC_MAJOR_VERSION                        0x1000
-#define ALC_MINOR_VERSION                        0x1001
-#define ALC_ATTRIBUTES_SIZE                      0x1002
-#define ALC_ALL_ATTRIBUTES                       0x1003
-
-#define ALC_DEFAULT_DEVICE_SPECIFIER             0x1004
-#define ALC_DEVICE_SPECIFIER                     0x1005
-#define ALC_EXTENSIONS                           0x1006
-
-#define ALC_FREQUENCY							 0x1007
-#define	ALC_REFRESH								 0x1008
-#define ALC_SYNC								 0x1009
-
-/** 
- * The device argument does not name a valid dvice.
- */
-#define ALC_INVALID_DEVICE                       0xA001
-
-/** 
- * The context argument does not name a valid context.
- */
-#define ALC_INVALID_CONTEXT                      0xA002  
-
-/**
- * A function was called at inappropriate time,
- *  or in an inappropriate way, causing an illegal state.
- * This can be an incompatible ALenum, object ID,
- *  and/or function.
- */
-#define ALC_INVALID_ENUM						 0xA003
-
-/** 
- * Illegal value passed as an argument to an AL call.
- * Applies to parameter values, but not to enumerations.
- */
-#define ALC_INVALID_VALUE                        0xA004
-
-/**
- * A function could not be completed,
- * because there is not enough memory available.
- */
-#define ALC_OUT_OF_MEMORY                        0xA005
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/neo/openal/include/altypes.h b/neo/openal/include/altypes.h
deleted file mode 100644
index 9dc4ead1..00000000
--- a/neo/openal/include/altypes.h
+++ /dev/null
@@ -1,333 +0,0 @@
-#ifndef _ALTYPES_H_
-#define _ALTYPES_H_
-
-/**
- * OpenAL cross platform audio library
- * Copyright (C) 1999-2000 by authors.
- * 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., 59 Temple Place - Suite 330,
- *  Boston, MA  02111-1307, USA.
- * Or go to http://www.gnu.org/copyleft/lgpl.html
- */
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** OpenAL boolean type. */
-typedef char ALboolean;
-
-/** OpenAL 8bit signed byte. */
-typedef char ALbyte;
-
-/** OpenAL 8bit unsigned byte. */
-typedef unsigned char ALubyte;
-
-/** OpenAL 16bit signed short integer type. */
-typedef short ALshort;
-
-/** OpenAL 16bit unsigned short integer type. */
-typedef unsigned short ALushort;
-
-/** OpenAL 32bit unsigned integer type. */
-typedef unsigned ALuint;
-
-/** OpenAL 32bit signed integer type. */
-typedef int ALint;
-
-/** OpenAL 32bit floating point type. */
-typedef float ALfloat;
-
-/** OpenAL 64bit double point type. */
-typedef double ALdouble;
-
-/** OpenAL 32bit type. */
-typedef unsigned int ALsizei;
-
-/** OpenAL void type */
-typedef void ALvoid;
-
-/** OpenAL enumerations. */
-typedef int ALenum;
-
-/* Bad value. */
-#define AL_INVALID                               (-1)
-
-/* Disable value. */
-#define AL_NONE									 0
-
-/* Boolean False. */
-#define AL_FALSE                                 0
-
-/* Boolean True. */
-#define AL_TRUE                                  1
-
-/**
-  * Indicate the type of AL_SOURCE.
-  * Sources can be spatialized 
-  */
-#define AL_SOURCE_TYPE                           0x200
-
-/** Indicate source has absolute coordinates. */
-#define AL_SOURCE_ABSOLUTE                       0x201
-
-/** Indicate Source has listener relative coordinates. */
-#define AL_SOURCE_RELATIVE                       0x202
-
-/**
- * Directional source, inner cone angle, in degrees.
- * Range:    [0-360] 
- * Default:  360
- */
-#define AL_CONE_INNER_ANGLE                      0x1001
-
-/**
- * Directional source, outer cone angle, in degrees.
- * Range:    [0-360] 
- * Default:  360
- */
-#define AL_CONE_OUTER_ANGLE                      0x1002
-
-/**
- * Specify the pitch to be applied, either at source,
- *  or on mixer results, at listener.
- * Range:	 [0.5-2.0]
- * Default:  1.0
- */
-#define AL_PITCH                                 0x1003
-
-/** 
- * Specify the current location in three dimensional space.
- * OpenAL, like OpenGL, uses a right handed coordinate system,
- *  where in a frontal default view X (thumb) points right, 
- *  Y points up (index finger), and Z points towards the
- *  viewer/camera (middle finger). 
- * To switch from a left handed coordinate system, flip the
- *  sign on the Z coordinate.
- * Listener position is always in the world coordinate system.
- */ 
-#define AL_POSITION                              0x1004
-  
-/** Specify the current direction as forward vector. */
-#define AL_DIRECTION                             0x1005
-  
-/** Specify the current velocity in three dimensional space. */
-#define AL_VELOCITY                              0x1006
-
-/**
- * Indicate whether source has to loop infinite.
- * Type: ALboolean
- * Range:    [AL_TRUE, AL_FALSE]
- * Default:  AL_FALSE
- */
-#define AL_LOOPING                               0x1007
-
-/**
- * Indicate the buffer to provide sound samples. 
- * Type: ALuint.
- * Range: any valid Buffer id.
- */
-#define AL_BUFFER                                0x1009
-
-/**
- * Indicate the gain (volume amplification) applied. 
- * Type:     ALfloat.
- * Range:    ]0.0-  ]
- * A value of 1.0 means un-attenuated/unchanged.
- * Each division by 2 equals an attenuation of -6dB.
- * Each multiplicaton with 2 equals an amplification of +6dB.
- * A value of 0.0 is meaningless with respect to a logarithmic
- *  scale; it is interpreted as zero volume - the channel
- *  is effectively disabled.
- */
-#define AL_GAIN                                  0x100A
-
-/**
- * Indicate minimum source attenuation.
- * Type:     ALfloat
- * Range:	 [0.0 - 1.0]
- */
-#define AL_MIN_GAIN                              0x100D
-
-/**
- * Indicate maximum source attenuation.
- * Type:	 ALfloat
- * Range:	 [0.0 - 1.0]
- */
-#define AL_MAX_GAIN                              0x100E
-
-/** 
- * Specify the current orientation.
- * Type:	 ALfv6 (at/up)
- * Range:	 N/A
- */
-#define AL_ORIENTATION                           0x100F
-
-/* byte offset into source (in canon format).  -1 if source
- * is not playing.  Don't set this, get this.
- *
- * Type:     ALfloat
- * Range:    [0.0 - ]
- * Default:  1.0
- */
-#define AL_REFERENCE_DISTANCE                    0x1020
-
- /**
- * Indicate the rolloff factor for the source.
- * Type: ALfloat
- * Range:    [0.0 - ]
- * Default:  1.0
- */
-#define AL_ROLLOFF_FACTOR                        0x1021
-
-/**
- * Indicate the gain (volume amplification) applied. 
- * Type:     ALfloat.
- * Range:    ]0.0-  ]
- * A value of 1.0 means un-attenuated/unchanged.
- * Each division by 2 equals an attenuation of -6dB.
- * Each multiplicaton with 2 equals an amplification of +6dB.
- * A value of 0.0 is meaningless with respect to a logarithmic
- *  scale; it is interpreted as zero volume - the channel
- *  is effectively disabled.
- */
-#define AL_CONE_OUTER_GAIN                       0x1022
-
-/** 
- * Specify the maximum distance.
- * Type:	 ALfloat
- * Range:	 [0.0 - ]
- */
-#define AL_MAX_DISTANCE                          0x1023
-
-/**
- * Specify the channel mask. (Creative)
- * Type:	 ALuint
- * Range:	 [0 - 255]
- */
-#define AL_CHANNEL_MASK							 0x3000
-
-/**
- * Source state information
- */
-#define AL_SOURCE_STATE                          0x1010
-#define AL_INITIAL                               0x1011
-#define AL_PLAYING                               0x1012
-#define AL_PAUSED                                0x1013
-#define AL_STOPPED                               0x1014
-
-/**
- * Buffer Queue params
- */
-#define AL_BUFFERS_QUEUED                        0x1015
-#define AL_BUFFERS_PROCESSED                     0x1016
-
-/** Sound buffers: format specifier. */
-#define AL_FORMAT_MONO8                          0x1100
-#define AL_FORMAT_MONO16                         0x1101
-#define AL_FORMAT_STEREO8                        0x1102
-#define AL_FORMAT_STEREO16                       0x1103
-
-/** 
- * Sound buffers: frequency, in units of Hertz [Hz].
- * This is the number of samples per second. Half of the
- *  sample frequency marks the maximum significant
- *  frequency component.
- */
-#define AL_FREQUENCY                             0x2001
-#define AL_BITS                                  0x2002
-#define AL_CHANNELS                              0x2003
-#define AL_SIZE                                  0x2004
-#define AL_DATA                                  0x2005
-
-/**
- * Buffer state.
- *
- * Not supported for public use (yet).
- */
-#define AL_UNUSED                                0x2010
-#define AL_PENDING                               0x2011
-#define AL_PROCESSED                             0x2012
-
-/** Errors: No Error. */
-#define AL_NO_ERROR                              AL_FALSE
-
-/** 
- * Illegal name passed as an argument to an AL call.
- */
-#define AL_INVALID_NAME                          0xA001
-
-/** 
- * Illegal enum passed as an argument to an AL call.
- */
-#define AL_INVALID_ENUM                          0xA002  
-/** 
- * Illegal value passed as an argument to an AL call.
- * Applies to parameter values, but not to enumerations.
- */
-#define AL_INVALID_VALUE                         0xA003
-  
-/**
- * A function was called at inappropriate time,
- *  or in an inappropriate way, causing an illegal state.
- * This can be an incompatible ALenum, object ID,
- *  and/or function.
- */
-#define AL_INVALID_OPERATION                     0xA004
-
-/**
- * A function could not be completed,
- * because there is not enough memory available.
- */
-#define AL_OUT_OF_MEMORY                         0xA005
-
-/** Context strings: Vendor Name. */
-#define AL_VENDOR                                0xB001
-#define AL_VERSION                               0xB002
-#define AL_RENDERER                              0xB003
-#define AL_EXTENSIONS                            0xB004
-
-/** Global tweakage. */
-
-/**
- * Doppler scale.  Default 1.0
- */
-#define AL_DOPPLER_FACTOR                        0xC000
- 
-/**
- * Doppler velocity.  Default 1.0
- */
-#define AL_DOPPLER_VELOCITY                      0xC001
-
-/**
- * Distance model.  Default AL_INVERSE_DISTANCE_CLAMPED
- */
-#define AL_DISTANCE_MODEL                        0xD000
-
-/** Distance models. */
-
-#define AL_INVERSE_DISTANCE                      0xD001
-#define AL_INVERSE_DISTANCE_CLAMPED              0xD002
- 
- /**
- * enables
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/neo/openal/include/alu.h b/neo/openal/include/alu.h
deleted file mode 100644
index c6adff62..00000000
--- a/neo/openal/include/alu.h
+++ /dev/null
@@ -1,34 +0,0 @@
-#ifndef _ALU_H_
-#define _ALU_H_
-
-#define ALUAPI
-#define ALUAPIENTRY __cdecl
-
-#define BUFFERSIZE 48000
-#define FRACTIONBITS 14
-#define FRACTIONMASK ((1L<<FRACTIONBITS)-1)
-#define OUTPUTCHANNELS 2
-
-#include "altypes.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-ALUAPI ALint	ALUAPIENTRY aluF2L(ALfloat value);
-ALUAPI ALshort	ALUAPIENTRY aluF2S(ALfloat value);
-ALUAPI ALvoid	ALUAPIENTRY aluCrossproduct(ALfloat *inVector1,ALfloat *inVector2,ALfloat *outVector);
-ALUAPI ALfloat	ALUAPIENTRY aluDotproduct(ALfloat *inVector1,ALfloat *inVector2);
-ALUAPI ALvoid	ALUAPIENTRY aluNormalize(ALfloat *inVector);
-ALUAPI ALvoid	ALUAPIENTRY aluMatrixVector(ALfloat matrix[3][3],ALfloat *vector);
-ALUAPI ALvoid	ALUAPIENTRY aluCalculateSourceParameters(ALuint source,ALuint channels,ALfloat *drysend,ALfloat *wetsend,ALfloat *pitch);
-ALUAPI ALvoid	ALUAPIENTRY aluMixData(ALvoid *context,ALvoid *buffer,ALsizei size,ALenum format);
-ALUAPI ALvoid	ALUAPIENTRY aluSetReverb(ALvoid *Reverb,ALuint Environment);
-ALUAPI ALvoid	ALUAPIENTRY aluReverb(ALvoid *Reverb,ALfloat Buffer[][2],ALsizei BufferSize);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/neo/openal/include/eax2.h b/neo/openal/include/eax2.h
deleted file mode 100644
index 9012d89c..00000000
--- a/neo/openal/include/eax2.h
+++ /dev/null
@@ -1,345 +0,0 @@
-/******************************************************************
-*
-*  EAX.H - DirectSound3D Environmental Audio Extensions version 2.0
-*  Updated July 8, 1999
-*
-*******************************************************************
-*/
-
-#ifndef EAX20_H_INCLUDED
-#define EAX20_H_INCLUDED
-
-#ifdef __cplusplus
-extern "C" {
-#endif // __cplusplus
-
-#pragma pack(push, 4)
-
-/*
-* EAX 2.0 listener property set {0306A6A8-B224-11d2-99E5-0000E8D8C722}
-*/
-DEFINE_GUID(DSPROPSETID_EAX20_ListenerProperties, 
-    0x306a6a8, 
-    0xb224, 
-    0x11d2, 
-    0x99, 0xe5, 0x0, 0x0, 0xe8, 0xd8, 0xc7, 0x22);
-
-typedef enum
-{
-    DSPROPERTY_EAX20LISTENER_NONE,
-    DSPROPERTY_EAX20LISTENER_ALLPARAMETERS,
-    DSPROPERTY_EAX20LISTENER_ROOM,
-    DSPROPERTY_EAX20LISTENER_ROOMHF,
-    DSPROPERTY_EAX20LISTENER_ROOMROLLOFFFACTOR,
-    DSPROPERTY_EAX20LISTENER_DECAYTIME,
-    DSPROPERTY_EAX20LISTENER_DECAYHFRATIO,
-    DSPROPERTY_EAX20LISTENER_REFLECTIONS,
-    DSPROPERTY_EAX20LISTENER_REFLECTIONSDELAY,
-    DSPROPERTY_EAX20LISTENER_REVERB,
-    DSPROPERTY_EAX20LISTENER_REVERBDELAY,
-    DSPROPERTY_EAX20LISTENER_ENVIRONMENT,
-    DSPROPERTY_EAX20LISTENER_ENVIRONMENTSIZE,
-    DSPROPERTY_EAX20LISTENER_ENVIRONMENTDIFFUSION,
-    DSPROPERTY_EAX20LISTENER_AIRABSORPTIONHF,
-    DSPROPERTY_EAX20LISTENER_FLAGS
-} DSPROPERTY_EAX20_LISTENERPROPERTY;
-	
-// OR these flags with property id
-#define DSPROPERTY_EAX20LISTENER_IMMEDIATE 0x00000000 // changes take effect immediately
-#define DSPROPERTY_EAX20LISTENER_DEFERRED  0x80000000 // changes take effect later
-#define DSPROPERTY_EAX20LISTENER_COMMITDEFERREDSETTINGS (DSPROPERTY_EAX20LISTENER_NONE | \
-                                                       DSPROPERTY_EAX20LISTENER_IMMEDIATE)
-
-// Use this structure for DSPROPERTY_EAX20LISTENER_ALLPARAMETERS
-// - all levels are hundredths of decibels
-// - all times are in seconds
-// - the reference for high frequency controls is 5 kHz
-//
-// NOTE: This structure may change in future EAX versions.
-//       It is recommended to initialize fields by name:
-//              myListener.lRoom = -1000;
-//              myListener.lRoomHF = -100;
-//              ...
-//              myListener.dwFlags = myFlags /* see EAXLISTENERFLAGS below */ ;
-//       instead of:
-//              myListener = { -1000, -100, ... , 0x00000009 };
-//       If you want to save and load presets in binary form, you 
-//       should define your own structure to insure future compatibility.
-//
-typedef struct _EAX20LISTENERPROPERTIES
-{
-    long lRoom;                    // room effect level at low frequencies
-    long lRoomHF;                  // room effect high-frequency level re. low frequency level
-    float flRoomRolloffFactor;     // like DS3D flRolloffFactor but for room effect
-    float flDecayTime;             // reverberation decay time at low frequencies
-    float flDecayHFRatio;          // high-frequency to low-frequency decay time ratio
-    long lReflections;             // early reflections level relative to room effect
-    float flReflectionsDelay;      // initial reflection delay time
-    long lReverb;                  // late reverberation level relative to room effect
-    float flReverbDelay;           // late reverberation delay time relative to initial reflection
-    unsigned long dwEnvironment;   // sets all listener properties
-    float flEnvironmentSize;       // environment size in meters
-    float flEnvironmentDiffusion;  // environment diffusion
-    float flAirAbsorptionHF;       // change in level per meter at 5 kHz
-    unsigned long dwFlags;         // modifies the behavior of properties
-} EAX20LISTENERPROPERTIES, *LPEAX20LISTENERPROPERTIES;
-
-// used by DSPROPERTY_EAX20LISTENER_ENVIRONMENT
-enum
-{
-    EAX20_ENVIRONMENT_GENERIC,
-    EAX20_ENVIRONMENT_PADDEDCELL,
-    EAX20_ENVIRONMENT_ROOM,
-    EAX20_ENVIRONMENT_BATHROOM,
-    EAX20_ENVIRONMENT_LIVINGROOM,
-    EAX20_ENVIRONMENT_STONEROOM,
-    EAX20_ENVIRONMENT_AUDITORIUM,
-    EAX20_ENVIRONMENT_CONCERTHALL,
-    EAX20_ENVIRONMENT_CAVE,
-    EAX20_ENVIRONMENT_ARENA,
-    EAX20_ENVIRONMENT_HANGAR,
-    EAX20_ENVIRONMENT_CARPETEDHALLWAY,
-    EAX20_ENVIRONMENT_HALLWAY,
-    EAX20_ENVIRONMENT_STONECORRIDOR,
-    EAX20_ENVIRONMENT_ALLEY,
-    EAX20_ENVIRONMENT_FOREST,
-    EAX20_ENVIRONMENT_CITY,
-    EAX20_ENVIRONMENT_MOUNTAINS,
-    EAX20_ENVIRONMENT_QUARRY,
-    EAX20_ENVIRONMENT_PLAIN,
-    EAX20_ENVIRONMENT_PARKINGLOT,
-    EAX20_ENVIRONMENT_SEWERPIPE,
-    EAX20_ENVIRONMENT_UNDERWATER,
-    EAX20_ENVIRONMENT_DRUGGED,
-    EAX20_ENVIRONMENT_DIZZY,
-    EAX20_ENVIRONMENT_PSYCHOTIC,
-
-    EAX20_ENVIRONMENT_COUNT
-};
-
-// Used by DS20PROPERTY_EAXLISTENER_FLAGS
-//
-// Note: The number and order of flags may change in future EAX versions.
-//       It is recommended to use the flag defines as follows:
-//              myFlags = EAXLISTENERFLAGS_DECAYTIMESCALE | EAXLISTENERFLAGS_REVERBSCALE;
-//       instead of:
-//              myFlags = 0x00000009;
-//
-// These flags determine what properties are affected by environment size.
-#define EAX20LISTENERFLAGS_DECAYTIMESCALE        0x00000001 // reverberation decay time
-#define EAX20LISTENERFLAGS_REFLECTIONSSCALE      0x00000002 // reflection level
-#define EAX20LISTENERFLAGS_REFLECTIONSDELAYSCALE 0x00000004 // initial reflection delay time
-#define EAX20LISTENERFLAGS_REVERBSCALE           0x00000008 // reflections level
-#define EAX20LISTENERFLAGS_REVERBDELAYSCALE      0x00000010 // late reverberation delay time
-
-// This flag limits high-frequency decay time according to air absorption.
-#define EAX20LISTENERFLAGS_DECAYHFLIMIT          0x00000020
- 
-#define EAX20LISTENERFLAGS_RESERVED              0xFFFFFFC0 // reserved future use
-
-// property ranges and defaults:
-
-#define EAX20LISTENER_MINROOM                       (-10000)
-#define EAX20LISTENER_MAXROOM                       0
-#define EAX20LISTENER_DEFAULTROOM                   (-1000)
-
-#define EAX20LISTENER_MINROOMHF                     (-10000)
-#define EAX20LISTENER_MAXROOMHF                     0
-#define EAX20LISTENER_DEFAULTROOMHF                 (-100)
-
-#define EAX20LISTENER_MINROOMROLLOFFFACTOR          0.0f
-#define EAX20LISTENER_MAXROOMROLLOFFFACTOR          10.0f
-#define EAX20LISTENER_DEFAULTROOMROLLOFFFACTOR      0.0f
-
-#define EAX20LISTENER_MINDECAYTIME                  0.1f
-#define EAX20LISTENER_MAXDECAYTIME                  20.0f
-#define EAX20LISTENER_DEFAULTDECAYTIME              1.49f
-
-#define EAX20LISTENER_MINDECAYHFRATIO               0.1f
-#define EAX20LISTENER_MAXDECAYHFRATIO               2.0f
-#define EAX20LISTENER_DEFAULTDECAYHFRATIO           0.83f
-
-#define EAX20LISTENER_MINREFLECTIONS                (-10000)
-#define EAX20LISTENER_MAXREFLECTIONS                1000
-#define EAX20LISTENER_DEFAULTREFLECTIONS            (-2602)
-
-#define EAX20LISTENER_MINREFLECTIONSDELAY           0.0f
-#define EAX20LISTENER_MAXREFLECTIONSDELAY           0.3f
-#define EAX20LISTENER_DEFAULTREFLECTIONSDELAY       0.007f
-
-#define EAX20LISTENER_MINREVERB                     (-10000)
-#define EAX20LISTENER_MAXREVERB                     2000
-#define EAX20LISTENER_DEFAULTREVERB                 200
-
-#define EAX20LISTENER_MINREVERBDELAY                0.0f
-#define EAX20LISTENER_MAXREVERBDELAY                0.1f
-#define EAX20LISTENER_DEFAULTREVERBDELAY            0.011f
-
-#define EAX20LISTENER_MINENVIRONMENT                0
-#define EAX20LISTENER_MAXENVIRONMENT                (EAX_ENVIRONMENT_COUNT-1)
-#define EAX20LISTENER_DEFAULTENVIRONMENT            EAX_ENVIRONMENT_GENERIC
-
-#define EAX20LISTENER_MINENVIRONMENTSIZE            1.0f
-#define EAX20LISTENER_MAXENVIRONMENTSIZE            100.0f
-#define EAX20LISTENER_DEFAULTENVIRONMENTSIZE        7.5f
-
-#define EAX20LISTENER_MINENVIRONMENTDIFFUSION       0.0f
-#define EAX20LISTENER_MAXENVIRONMENTDIFFUSION       1.0f
-#define EAX20LISTENER_DEFAULTENVIRONMENTDIFFUSION   1.0f
-
-#define EAX20LISTENER_MINAIRABSORPTIONHF            (-100.0f)
-#define EAX20LISTENER_MAXAIRABSORPTIONHF            0.0f
-#define EAX20LISTENER_DEFAULTAIRABSORPTIONHF        (-5.0f)
-
-#define EAX20LISTENER_DEFAULTFLAGS                  (EAX20LISTENERFLAGS_DECAYTIMESCALE |        \
-                                                   EAX20LISTENERFLAGS_REFLECTIONSSCALE |      \
-                                                   EAX20LISTENERFLAGS_REFLECTIONSDELAYSCALE | \
-                                                   EAX20LISTENERFLAGS_REVERBSCALE |           \
-                                                   EAX20LISTENERFLAGS_REVERBDELAYSCALE |      \
-                                                   EAX20LISTENERFLAGS_DECAYHFLIMIT)
-
-
-
-/*
-* EAX 2.0 buffer property set {0306A6A7-B224-11d2-99E5-0000E8D8C722}
-*/
-DEFINE_GUID(DSPROPSETID_EAX20_BufferProperties, 
-    0x306a6a7, 
-    0xb224, 
-    0x11d2, 
-    0x99, 0xe5, 0x0, 0x0, 0xe8, 0xd8, 0xc7, 0x22);
-
-// For compatibility with future EAX versions:
-#define DSPROPSETID_EAX20_BufferProperties DSPROPSETID_EAX20_BufferProperties
-
-typedef enum
-{
-    DSPROPERTY_EAX20BUFFER_NONE,
-    DSPROPERTY_EAX20BUFFER_ALLPARAMETERS,
-    DSPROPERTY_EAX20BUFFER_DIRECT,
-    DSPROPERTY_EAX20BUFFER_DIRECTHF,
-    DSPROPERTY_EAX20BUFFER_ROOM,
-    DSPROPERTY_EAX20BUFFER_ROOMHF, 
-    DSPROPERTY_EAX20BUFFER_ROOMROLLOFFFACTOR,
-    DSPROPERTY_EAX20BUFFER_OBSTRUCTION,
-    DSPROPERTY_EAX20BUFFER_OBSTRUCTIONLFRATIO,
-    DSPROPERTY_EAX20BUFFER_OCCLUSION, 
-    DSPROPERTY_EAX20BUFFER_OCCLUSIONLFRATIO,
-    DSPROPERTY_EAX20BUFFER_OCCLUSIONROOMRATIO,
-    DSPROPERTY_EAX20BUFFER_OUTSIDEVOLUMEHF,
-    DSPROPERTY_EAX20BUFFER_AIRABSORPTIONFACTOR,
-    DSPROPERTY_EAX20BUFFER_FLAGS
-} DSPROPERTY_EAX20_BUFFERPROPERTY;    
-
-// OR these flags with property id
-#define DSPROPERTY_EAX20BUFFER_IMMEDIATE 0x00000000 // changes take effect immediately
-#define DSPROPERTY_EAX20BUFFER_DEFERRED  0x80000000 // changes take effect later
-#define DSPROPERTY_EAX20BUFFER_COMMITDEFERREDSETTINGS (DSPROPERTY_EAX20BUFFER_NONE | \
-                                                     DSPROPERTY_EAX20BUFFER_IMMEDIATE)
-
-// Use this structure for DSPROPERTY_EAX20BUFFER_ALLPARAMETERS
-// - all levels are hundredths of decibels
-//
-// NOTE: This structure may change in future EAX versions.
-//       It is recommended to initialize fields by name:
-//              myBuffer.lDirect = 0;
-//              myBuffer.lDirectHF = -200;
-//              ...
-//              myBuffer.dwFlags = myFlags /* see EAXBUFFERFLAGS below */ ;
-//       instead of:
-//              myBuffer = { 0, -200, ... , 0x00000003 };
-//
-typedef struct _EAX20BUFFERPROPERTIES
-{
-    long lDirect;                // direct path level
-    long lDirectHF;              // direct path level at high frequencies
-    long lRoom;                  // room effect level
-    long lRoomHF;                // room effect level at high frequencies
-    float flRoomRolloffFactor;   // like DS3D flRolloffFactor but for room effect
-    long lObstruction;           // main obstruction control (attenuation at high frequencies) 
-    float flObstructionLFRatio;  // obstruction low-frequency level re. main control
-    long lOcclusion;             // main occlusion control (attenuation at high frequencies)
-    float flOcclusionLFRatio;    // occlusion low-frequency level re. main control
-    float flOcclusionRoomRatio;  // occlusion room effect level re. main control
-    long lOutsideVolumeHF;       // outside sound cone level at high frequencies
-    float flAirAbsorptionFactor; // multiplies DSPROPERTY_EAXLISTENER_AIRABSORPTIONHF
-    unsigned long dwFlags;       // modifies the behavior of properties
-} EAX20BUFFERPROPERTIES, *LPEAX20BUFFERPROPERTIES;
-
-// Used by DSPROPERTY_EAX20BUFFER_FLAGS
-//    TRUE:    value is computed automatically - property is an offset
-//    FALSE:   value is used directly
-//
-// Note: The number and order of flags may change in future EAX versions.
-//       To insure future compatibility, use flag defines as follows:
-//              myFlags = EAXBUFFERFLAGS_DIRECTHFAUTO | EAXBUFFERFLAGS_ROOMAUTO;
-//       instead of:
-//              myFlags = 0x00000003;
-//
-#define EAX20BUFFERFLAGS_DIRECTHFAUTO 0x00000001 // affects DSPROPERTY_EAXBUFFER_DIRECTHF
-#define EAX20BUFFERFLAGS_ROOMAUTO     0x00000002 // affects DSPROPERTY_EAXBUFFER_ROOM
-#define EAX20BUFFERFLAGS_ROOMHFAUTO   0x00000004 // affects DSPROPERTY_EAXBUFFER_ROOMHF
-
-#define EAX20BUFFERFLAGS_RESERVED     0xFFFFFFF8 // reserved future use
-
-// property ranges and defaults:
-
-#define EAX20BUFFER_MINDIRECT                  (-10000)
-#define EAX20BUFFER_MAXDIRECT                  1000
-#define EAX20BUFFER_DEFAULTDIRECT              0
-
-#define EAX20BUFFER_MINDIRECTHF                (-10000)
-#define EAX20BUFFER_MAXDIRECTHF                0
-#define EAX20BUFFER_DEFAULTDIRECTHF            0
-
-#define EAX20BUFFER_MINROOM                    (-10000)
-#define EAX20BUFFER_MAXROOM                    1000
-#define EAX20BUFFER_DEFAULTROOM                0
-
-#define EAX20BUFFER_MINROOMHF                  (-10000)
-#define EAX20BUFFER_MAXROOMHF                  0
-#define EAX20BUFFER_DEFAULTROOMHF              0
-
-#define EAX20BUFFER_MINROOMROLLOFFFACTOR       0.0f
-#define EAX20BUFFER_MAXROOMROLLOFFFACTOR       10.f
-#define EAX20BUFFER_DEFAULTROOMROLLOFFFACTOR   0.0f
-
-#define EAX20BUFFER_MINOBSTRUCTION             (-10000)
-#define EAX20BUFFER_MAXOBSTRUCTION             0
-#define EAX20BUFFER_DEFAULTOBSTRUCTION         0
-
-#define EAX20BUFFER_MINOBSTRUCTIONLFRATIO      0.0f
-#define EAX20BUFFER_MAXOBSTRUCTIONLFRATIO      1.0f
-#define EAX20BUFFER_DEFAULTOBSTRUCTIONLFRATIO  0.0f
-
-#define EAX20BUFFER_MINOCCLUSION               (-10000)
-#define EAX20BUFFER_MAXOCCLUSION               0
-#define EAX20BUFFER_DEFAULTOCCLUSION           0
-
-#define EAX20BUFFER_MINOCCLUSIONLFRATIO        0.0f
-#define EAX20BUFFER_MAXOCCLUSIONLFRATIO        1.0f
-#define EAX20BUFFER_DEFAULTOCCLUSIONLFRATIO    0.25f
-
-#define EAX20BUFFER_MINOCCLUSIONROOMRATIO      0.0f
-#define EAX20BUFFER_MAXOCCLUSIONROOMRATIO      10.0f
-#define EAX20BUFFER_DEFAULTOCCLUSIONROOMRATIO  0.5f
-
-#define EAX20BUFFER_MINOUTSIDEVOLUMEHF         (-10000)
-#define EAX20BUFFER_MAXOUTSIDEVOLUMEHF         0
-#define EAX20BUFFER_DEFAULTOUTSIDEVOLUMEHF     0
-
-#define EAX20BUFFER_MINAIRABSORPTIONFACTOR     0.0f
-#define EAX20BUFFER_MAXAIRABSORPTIONFACTOR     10.0f
-#define EAX20BUFFER_DEFAULTAIRABSORPTIONFACTOR 1.0f
-
-#define EAX20BUFFER_DEFAULTFLAGS               (EAX20BUFFERFLAGS_DIRECTHFAUTO | \
-                                              EAX20BUFFERFLAGS_ROOMAUTO |     \
-                                              EAX20BUFFERFLAGS_ROOMHFAUTO)
-
-#pragma pack(pop)
-
-#ifdef __cplusplus
-}
-#endif // __cplusplus
-
-#endif
diff --git a/neo/openal/include/eax3.h b/neo/openal/include/eax3.h
deleted file mode 100644
index 7f1a9e6d..00000000
--- a/neo/openal/include/eax3.h
+++ /dev/null
@@ -1,547 +0,0 @@
-/*******************************************************************\
-*																	*
-*  EAX.H - Environmental Audio Extensions version 3.0				*
-*          for OpenAL and DirectSound3D								*
-*																	*
-********************************************************************/
-
-#ifndef EAX30_H_INCLUDED
-#define EAX30_H_INCLUDED
-
-#ifdef __cplusplus
-extern "C" {
-#endif // __cplusplus
-
-#ifndef OPENAL
-	#include <dsound.h>
-
-	/*
-	 * EAX Wrapper Interface (using Direct X 7) {4FF53B81-1CE0-11d3-AAB8-00A0C95949D5}
-	 */
-	DEFINE_GUID(CLSID_EAXDirectSound, 
-    	0x4ff53b81, 
-    	0x1ce0, 
-    	0x11d3,
-    	0xaa, 0xb8, 0x0, 0xa0, 0xc9, 0x59, 0x49, 0xd5);
-    	
-   /*
-	* EAX Wrapper Interface (using Direct X 8) {CA503B60-B176-11d4-A094-D0C0BF3A560C}
-	*/
-	DEFINE_GUID(CLSID_EAXDirectSound8, 
-		0xca503b60,
-		0xb176,
-		0x11d4,
-		0xa0, 0x94, 0xd0, 0xc0, 0xbf, 0x3a, 0x56, 0xc);
-
-	
-
-#ifdef DIRECTSOUND_VERSION		
-#if DIRECTSOUND_VERSION == 0x0800
-	__declspec(dllimport) HRESULT WINAPI EAXDirectSoundCreate8(GUID*, LPDIRECTSOUND8*, IUnknown FAR *);
-	typedef HRESULT (FAR PASCAL *LPEAXDIRECTSOUNDCREATE8)(GUID*, LPDIRECTSOUND8*, IUnknown FAR*);
-#endif
-#endif
-	
-	__declspec(dllimport) HRESULT WINAPI EAXDirectSoundCreate(GUID*, LPDIRECTSOUND*, IUnknown FAR *);
-	typedef HRESULT (FAR PASCAL *LPEAXDIRECTSOUNDCREATE)(GUID*, LPDIRECTSOUND*, IUnknown FAR*);
-
-#else // OPENAL
-	//#include <al.h>
-	
-	#ifndef GUID_DEFINED
-		#define GUID_DEFINED
-		typedef struct _GUID
-		{
-			unsigned long Data1;
-			unsigned short Data2;
-			unsigned short Data3;
-			unsigned char Data4[8];
-		} GUID;
-	#endif // !GUID_DEFINED
-
-	#ifndef DEFINE_GUID
-		#ifndef INITGUID
-			#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
-					extern const GUID /*FAR*/ name
-		#else
-			#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
-					extern const GUID name = { l, w1, w2, { b1, b2,  b3,  b4,  b5,  b6,  b7,  b8 } }
-		#endif // INITGUID
-	#endif // DEFINE_GUID
-	
-
-	/*
-	 * EAX OpenAL Extension
-	 */
-	typedef ALenum (*EAXSet)(const GUID*, ALuint, ALuint, ALvoid*, ALuint);
-	typedef ALenum (*EAXGet)(const GUID*, ALuint, ALuint, ALvoid*, ALuint);
-	typedef ALboolean (*EAXSetBufferMode)(ALsizei,ALuint*,ALint);
-	typedef ALenum (*EAXGetBufferMode)(ALuint,ALint*);
-#endif
-
-#pragma pack(push, 4)
-
-/*
- * EAX 3.0 listener property set {A8FA6880-B476-11d3-BDB9-00C0F02DDF87}
- */
-DEFINE_GUID(DSPROPSETID_EAX30_ListenerProperties, 
-	0xa8fa6882, 
-	0xb476, 
-	0x11d3, 
-	0xbd, 0xb9, 0x00, 0xc0, 0xf0, 0x2d, 0xdf, 0x87);
-
-// For compatibility with future EAX versions:
-#define DSPROPSETID_EAX_ListenerProperties DSPROPSETID_EAX30_ListenerProperties
-
-typedef enum
-{
-    DSPROPERTY_EAXLISTENER_NONE,
-    DSPROPERTY_EAXLISTENER_ALLPARAMETERS,
-    DSPROPERTY_EAXLISTENER_ENVIRONMENT,
-    DSPROPERTY_EAXLISTENER_ENVIRONMENTSIZE,
-    DSPROPERTY_EAXLISTENER_ENVIRONMENTDIFFUSION,
-    DSPROPERTY_EAXLISTENER_ROOM,
-    DSPROPERTY_EAXLISTENER_ROOMHF,
-    DSPROPERTY_EAXLISTENER_ROOMLF,
-    DSPROPERTY_EAXLISTENER_DECAYTIME,
-    DSPROPERTY_EAXLISTENER_DECAYHFRATIO,
-    DSPROPERTY_EAXLISTENER_DECAYLFRATIO,
-    DSPROPERTY_EAXLISTENER_REFLECTIONS,
-    DSPROPERTY_EAXLISTENER_REFLECTIONSDELAY,
-    DSPROPERTY_EAXLISTENER_REFLECTIONSPAN,
-    DSPROPERTY_EAXLISTENER_REVERB,
-    DSPROPERTY_EAXLISTENER_REVERBDELAY,
-    DSPROPERTY_EAXLISTENER_REVERBPAN,
-    DSPROPERTY_EAXLISTENER_ECHOTIME,
-    DSPROPERTY_EAXLISTENER_ECHODEPTH,
-    DSPROPERTY_EAXLISTENER_MODULATIONTIME,
-    DSPROPERTY_EAXLISTENER_MODULATIONDEPTH,
-    DSPROPERTY_EAXLISTENER_AIRABSORPTIONHF,
-    DSPROPERTY_EAXLISTENER_HFREFERENCE,
-    DSPROPERTY_EAXLISTENER_LFREFERENCE,
-    DSPROPERTY_EAXLISTENER_ROOMROLLOFFFACTOR,
-    DSPROPERTY_EAXLISTENER_FLAGS
-} DSPROPERTY_EAX_LISTENERPROPERTY;
-
-// OR these flags with property id
-#define DSPROPERTY_EAXLISTENER_IMMEDIATE 0x00000000 // changes take effect immediately
-#define DSPROPERTY_EAXLISTENER_DEFERRED  0x80000000 // changes take effect later
-#define DSPROPERTY_EAXLISTENER_COMMITDEFERREDSETTINGS (DSPROPERTY_EAXLISTENER_NONE | \
-                                                       DSPROPERTY_EAXLISTENER_IMMEDIATE)
-#ifndef EAXVECTOR_DEFINED
-#define EAXVECTOR_DEFINED
-typedef struct _EAXVECTOR {
-	float x;
-	float y;
-	float z;
-} EAXVECTOR;
-#endif
-
-// Use this structure for DSPROPERTY_EAXLISTENER_ALLPARAMETERS
-// - all levels are hundredths of decibels
-// - all times and delays are in seconds
-//
-// NOTE: This structure may change in future EAX versions.
-//       It is recommended to initialize fields by name:
-//              myListener.lRoom = -1000;
-//              myListener.lRoomHF = -100;
-//              ...
-//              myListener.dwFlags = myFlags /* see EAXLISTENERFLAGS below */ ;
-//       instead of:
-//              myListener = { -1000, -100, ... , 0x00000009 };
-//       If you want to save and load presets in binary form, you 
-//       should define your own structure to insure future compatibility.
-//
-typedef struct _EAXLISTENERPROPERTIES
-{
-    unsigned long ulEnvironment;   // sets all listener properties
-    float flEnvironmentSize;       // environment size in meters
-    float flEnvironmentDiffusion;  // environment diffusion
-    long lRoom;                    // room effect level (at mid frequencies)
-    long lRoomHF;                  // relative room effect level at high frequencies
-    long lRoomLF;                  // relative room effect level at low frequencies  
-    float flDecayTime;             // reverberation decay time at mid frequencies
-    float flDecayHFRatio;          // high-frequency to mid-frequency decay time ratio
-    float flDecayLFRatio;          // low-frequency to mid-frequency decay time ratio   
-    long lReflections;             // early reflections level relative to room effect
-    float flReflectionsDelay;      // initial reflection delay time
-    EAXVECTOR vReflectionsPan;     // early reflections panning vector
-    long lReverb;                  // late reverberation level relative to room effect
-    float flReverbDelay;           // late reverberation delay time relative to initial reflection
-    EAXVECTOR vReverbPan;          // late reverberation panning vector
-    float flEchoTime;              // echo time
-    float flEchoDepth;             // echo depth
-    float flModulationTime;        // modulation time
-    float flModulationDepth;       // modulation depth
-    float flAirAbsorptionHF;       // change in level per meter at high frequencies
-    float flHFReference;           // reference high frequency
-    float flLFReference;           // reference low frequency 
-    float flRoomRolloffFactor;     // like DS3D flRolloffFactor but for room effect
-    unsigned long ulFlags;         // modifies the behavior of properties
-} EAXLISTENERPROPERTIES, *LPEAXLISTENERPROPERTIES;
-
-// used by DSPROPERTY_EAXLISTENER_ENVIRONMENT
-#ifndef EAX_ENVIRONMENTS_DEFINED
-#define EAX_ENVIRONMENTS_DEFINED
-enum
-{
-    EAX_ENVIRONMENT_GENERIC,
-    EAX_ENVIRONMENT_PADDEDCELL,
-    EAX_ENVIRONMENT_ROOM,
-    EAX_ENVIRONMENT_BATHROOM,
-    EAX_ENVIRONMENT_LIVINGROOM,
-    EAX_ENVIRONMENT_STONEROOM,
-    EAX_ENVIRONMENT_AUDITORIUM,
-    EAX_ENVIRONMENT_CONCERTHALL,
-    EAX_ENVIRONMENT_CAVE,
-    EAX_ENVIRONMENT_ARENA,
-    EAX_ENVIRONMENT_HANGAR,
-    EAX_ENVIRONMENT_CARPETEDHALLWAY,
-    EAX_ENVIRONMENT_HALLWAY,
-    EAX_ENVIRONMENT_STONECORRIDOR,
-    EAX_ENVIRONMENT_ALLEY,
-    EAX_ENVIRONMENT_FOREST,
-    EAX_ENVIRONMENT_CITY,
-    EAX_ENVIRONMENT_MOUNTAINS,
-    EAX_ENVIRONMENT_QUARRY,
-    EAX_ENVIRONMENT_PLAIN,
-    EAX_ENVIRONMENT_PARKINGLOT,
-    EAX_ENVIRONMENT_SEWERPIPE,
-    EAX_ENVIRONMENT_UNDERWATER,
-    EAX_ENVIRONMENT_DRUGGED,
-    EAX_ENVIRONMENT_DIZZY,
-    EAX_ENVIRONMENT_PSYCHOTIC,
-
-    EAX_ENVIRONMENT_UNDEFINED,
-
-    EAX_ENVIRONMENT_COUNT
-};
-#endif
-
-// Used by DSPROPERTY_EAXLISTENER_FLAGS
-//
-// Note: The number and order of flags may change in future EAX versions.
-//       It is recommended to use the flag defines as follows:
-//              myFlags = EAXLISTENERFLAGS_DECAYTIMESCALE | EAXLISTENERFLAGS_REVERBSCALE;
-//       instead of:
-//              myFlags = 0x00000009;
-//
-// These flags determine what properties are affected by environment size.
-#define EAXLISTENERFLAGS_DECAYTIMESCALE        0x00000001 // reverberation decay time
-#define EAXLISTENERFLAGS_REFLECTIONSSCALE      0x00000002 // reflection level
-#define EAXLISTENERFLAGS_REFLECTIONSDELAYSCALE 0x00000004 // initial reflection delay time
-#define EAXLISTENERFLAGS_REVERBSCALE           0x00000008 // reflections level
-#define EAXLISTENERFLAGS_REVERBDELAYSCALE      0x00000010 // late reverberation delay time
-#define EAXLISTENERFLAGS_ECHOTIMESCALE         0x00000040 // echo time
-#define EAXLISTENERFLAGS_MODULATIONTIMESCALE   0x00000080 // modulation time
-
-// This flag limits high-frequency decay time according to air absorption.
-#define EAXLISTENERFLAGS_DECAYHFLIMIT          0x00000020
- 
-#define EAXLISTENERFLAGS_RESERVED              0xFFFFFF00 // reserved future use
-
-// Property ranges and defaults:
-
-#define EAXLISTENER_MINENVIRONMENT                0
-#define EAXLISTENER_MAXENVIRONMENT                (EAX_ENVIRONMENT_COUNT-1)
-#define EAXLISTENER_DEFAULTENVIRONMENT            EAX_ENVIRONMENT_GENERIC
-
-#define EAXLISTENER_MINENVIRONMENTSIZE            1.0f
-#define EAXLISTENER_MAXENVIRONMENTSIZE            100.0f
-#define EAXLISTENER_DEFAULTENVIRONMENTSIZE        7.5f
-
-#define EAXLISTENER_MINENVIRONMENTDIFFUSION       0.0f
-#define EAXLISTENER_MAXENVIRONMENTDIFFUSION       1.0f
-#define EAXLISTENER_DEFAULTENVIRONMENTDIFFUSION   1.0f
-
-#define EAXLISTENER_MINROOM                       (-10000)
-#define EAXLISTENER_MAXROOM                       0
-#define EAXLISTENER_DEFAULTROOM                   (-1000)
-
-#define EAXLISTENER_MINROOMHF                     (-10000)
-#define EAXLISTENER_MAXROOMHF                     0
-#define EAXLISTENER_DEFAULTROOMHF                 (-100)
-
-#define EAXLISTENER_MINROOMLF                     (-10000)
-#define EAXLISTENER_MAXROOMLF                     0
-#define EAXLISTENER_DEFAULTROOMLF                 0
-
-#define EAXLISTENER_MINDECAYTIME                  0.1f
-#define EAXLISTENER_MAXDECAYTIME                  20.0f
-#define EAXLISTENER_DEFAULTDECAYTIME              1.49f
-
-#define EAXLISTENER_MINDECAYHFRATIO               0.1f
-#define EAXLISTENER_MAXDECAYHFRATIO               2.0f
-#define EAXLISTENER_DEFAULTDECAYHFRATIO           0.83f
-
-#define EAXLISTENER_MINDECAYLFRATIO               0.1f
-#define EAXLISTENER_MAXDECAYLFRATIO               2.0f
-#define EAXLISTENER_DEFAULTDECAYLFRATIO           1.00f
-
-#define EAXLISTENER_MINREFLECTIONS                (-10000)
-#define EAXLISTENER_MAXREFLECTIONS                1000
-#define EAXLISTENER_DEFAULTREFLECTIONS            (-2602)
-
-#define EAXLISTENER_MINREFLECTIONSDELAY           0.0f
-#define EAXLISTENER_MAXREFLECTIONSDELAY           0.3f
-#define EAXLISTENER_DEFAULTREFLECTIONSDELAY       0.007f
-
-#define EAXLISTENER_MINREVERB                     (-10000)
-#define EAXLISTENER_MAXREVERB                     2000
-#define EAXLISTENER_DEFAULTREVERB                 200
-
-#define EAXLISTENER_MINREVERBDELAY                0.0f
-#define EAXLISTENER_MAXREVERBDELAY                0.1f
-#define EAXLISTENER_DEFAULTREVERBDELAY            0.011f
-
-#define EAXLISTENER_MINECHOTIME                   0.075f
-#define EAXLISTENER_MAXECHOTIME	                  0.25f
-#define EAXLISTENER_DEFAULTECHOTIME               0.25f
-
-#define EAXLISTENER_MINECHODEPTH                  0.0f
-#define EAXLISTENER_MAXECHODEPTH                  1.0f
-#define EAXLISTENER_DEFAULTECHODEPTH              0.0f
-
-#define EAXLISTENER_MINMODULATIONTIME             0.04f
-#define EAXLISTENER_MAXMODULATIONTIME             4.0f
-#define EAXLISTENER_DEFAULTMODULATIONTIME         0.25f
-
-#define EAXLISTENER_MINMODULATIONDEPTH            0.0f
-#define EAXLISTENER_MAXMODULATIONDEPTH            1.0f
-#define EAXLISTENER_DEFAULTMODULATIONDEPTH        0.0f
-
-#define EAXLISTENER_MINAIRABSORPTIONHF            (-100.0f)
-#define EAXLISTENER_MAXAIRABSORPTIONHF            0.0f
-#define EAXLISTENER_DEFAULTAIRABSORPTIONHF        (-5.0f)
-
-#define EAXLISTENER_MINHFREFERENCE                1000.0f
-#define EAXLISTENER_MAXHFREFERENCE                20000.0f
-#define EAXLISTENER_DEFAULTHFREFERENCE            5000.0f
-
-#define EAXLISTENER_MINLFREFERENCE                20.0f
-#define EAXLISTENER_MAXLFREFERENCE                1000.0f
-#define EAXLISTENER_DEFAULTLFREFERENCE            250.0f
-
-#define EAXLISTENER_MINROOMROLLOFFFACTOR          0.0f
-#define EAXLISTENER_MAXROOMROLLOFFFACTOR          10.0f
-#define EAXLISTENER_DEFAULTROOMROLLOFFFACTOR      0.0f
-
-#define EAXLISTENER_DEFAULTFLAGS                  (EAXLISTENERFLAGS_DECAYTIMESCALE |        \
-                                                   EAXLISTENERFLAGS_REFLECTIONSSCALE |      \
-                                                   EAXLISTENERFLAGS_REFLECTIONSDELAYSCALE | \
-                                                   EAXLISTENERFLAGS_REVERBSCALE |           \
-                                                   EAXLISTENERFLAGS_REVERBDELAYSCALE |      \
-                                                   EAXLISTENERFLAGS_DECAYHFLIMIT)
-
-
-
-/*
-* EAX 3.0 buffer property set {A8FA6881-B476-11d3-BDB9-00C0F02DDF87}
-*/
-DEFINE_GUID(DSPROPSETID_EAX30_BufferProperties, 
-	0xa8fa6881, 
-	0xb476, 
-	0x11d3, 
-	0xbd, 0xb9, 0x0, 0xc0, 0xf0, 0x2d, 0xdf, 0x87);
-
-// For compatibility with future EAX versions:
-#define DSPROPSETID_EAX_BufferProperties DSPROPSETID_EAX30_BufferProperties
-#define DSPROPSETID_EAX_SourceProperties DSPROPSETID_EAX30_BufferProperties
-
-typedef enum
-{
-    DSPROPERTY_EAXBUFFER_NONE,
-    DSPROPERTY_EAXBUFFER_ALLPARAMETERS,
-    DSPROPERTY_EAXBUFFER_OBSTRUCTIONPARAMETERS,
-    DSPROPERTY_EAXBUFFER_OCCLUSIONPARAMETERS,
-    DSPROPERTY_EAXBUFFER_EXCLUSIONPARAMETERS,
-    DSPROPERTY_EAXBUFFER_DIRECT,
-    DSPROPERTY_EAXBUFFER_DIRECTHF,
-    DSPROPERTY_EAXBUFFER_ROOM,
-    DSPROPERTY_EAXBUFFER_ROOMHF,
-    DSPROPERTY_EAXBUFFER_OBSTRUCTION,
-    DSPROPERTY_EAXBUFFER_OBSTRUCTIONLFRATIO,
-    DSPROPERTY_EAXBUFFER_OCCLUSION, 
-    DSPROPERTY_EAXBUFFER_OCCLUSIONLFRATIO,
-    DSPROPERTY_EAXBUFFER_OCCLUSIONROOMRATIO,
-    DSPROPERTY_EAXBUFFER_OCCLUSIONDIRECTRATIO,
-    DSPROPERTY_EAXBUFFER_EXCLUSION, 
-    DSPROPERTY_EAXBUFFER_EXCLUSIONLFRATIO,
-    DSPROPERTY_EAXBUFFER_OUTSIDEVOLUMEHF, 
-    DSPROPERTY_EAXBUFFER_DOPPLERFACTOR, 
-    DSPROPERTY_EAXBUFFER_ROLLOFFFACTOR, 
-    DSPROPERTY_EAXBUFFER_ROOMROLLOFFFACTOR,
-    DSPROPERTY_EAXBUFFER_AIRABSORPTIONFACTOR,
-    DSPROPERTY_EAXBUFFER_FLAGS
-} DSPROPERTY_EAX_BUFFERPROPERTY;    
-
-// OR these flags with property id
-#define DSPROPERTY_EAXBUFFER_IMMEDIATE 0x00000000 // changes take effect immediately
-#define DSPROPERTY_EAXBUFFER_DEFERRED  0x80000000 // changes take effect later
-#define DSPROPERTY_EAXBUFFER_COMMITDEFERREDSETTINGS (DSPROPERTY_EAXBUFFER_NONE | \
-                                                     DSPROPERTY_EAXBUFFER_IMMEDIATE)
-
-// Use this structure for DSPROPERTY_EAXBUFFER_ALLPARAMETERS
-// - all levels are hundredths of decibels
-// - all delays are in seconds
-//
-// NOTE: This structure may change in future EAX versions.
-//       It is recommended to initialize fields by name:
-//              myBuffer.lDirect = 0;
-//              myBuffer.lDirectHF = -200;
-//              ...
-//              myBuffer.dwFlags = myFlags /* see EAXBUFFERFLAGS below */ ;
-//       instead of:
-//              myBuffer = { 0, -200, ... , 0x00000003 };
-//
-typedef struct _EAXBUFFERPROPERTIES
-{
-    long lDirect;                 // direct path level (at low and mid frequencies)
-    long lDirectHF;               // relative direct path level at high frequencies
-    long lRoom;                   // room effect level (at low and mid frequencies)
-    long lRoomHF;                 // relative room effect level at high frequencies
-    long lObstruction;            // main obstruction control (attenuation at high frequencies) 
-    float flObstructionLFRatio;   // obstruction low-frequency level re. main control
-    long lOcclusion;              // main occlusion control (attenuation at high frequencies)
-    float flOcclusionLFRatio;     // occlusion low-frequency level re. main control
-    float flOcclusionRoomRatio;   // relative occlusion control for room effect
-    float flOcclusionDirectRatio; // relative occlusion control for direct path
-    long lExclusion;              // main exlusion control (attenuation at high frequencies)
-    float flExclusionLFRatio;     // exclusion low-frequency level re. main control
-    long lOutsideVolumeHF;        // outside sound cone level at high frequencies
-    float flDopplerFactor;        // like DS3D flDopplerFactor but per source
-    float flRolloffFactor;        // like DS3D flRolloffFactor but per source
-    float flRoomRolloffFactor;    // like DS3D flRolloffFactor but for room effect
-    float flAirAbsorptionFactor;  // multiplies DSPROPERTY_EAXLISTENER_AIRABSORPTIONHF
-    unsigned long ulFlags;        // modifies the behavior of properties
-} EAXBUFFERPROPERTIES, *LPEAXBUFFERPROPERTIES;
-
-// Use this structure for DSPROPERTY_EAXBUFFER_OBSTRUCTION,
-#ifndef EAX_OBSTRUCTIONPROPERTIES_DEFINED
-#define EAX_OBSTRUCTIONPROPERTIES_DEFINED
-typedef struct _EAXOBSTRUCTIONPROPERTIES
-{
-    long lObstruction;
-    float flObstructionLFRatio;
-} EAXOBSTRUCTIONPROPERTIES, *LPEAXOBSTRUCTIONPROPERTIES;
-#endif
-
-// Use this structure for DSPROPERTY_EAXBUFFER_OCCLUSION
-#ifndef EAX_OCCLUSIONPROPERTIES_DEFINED
-#define EAX_OCCLUSIONPROPERTIES_DEFINED
-typedef struct _EAXOCCLUSIONPROPERTIES
-{
-    long lOcclusion;
-    float flOcclusionLFRatio;
-    float flOcclusionRoomRatio;
-    float flOcclusionDirectRatio;
-} EAXOCCLUSIONPROPERTIES, *LPEAXOCCLUSIONPROPERTIES;
-#endif
-
-// Use this structure for DSPROPERTY_EAXBUFFER_EXCLUSION
-#ifndef EAX_EXCLUSIONPROPERTIES_DEFINED
-#define EAX_EXCLUSIONPROPERTIES_DEFINED
-typedef struct _EAXEXCLUSIONPROPERTIES
-{
-    long lExclusion;
-    float flExclusionLFRatio;
-} EAXEXCLUSIONPROPERTIES, *LPEAXEXCLUSIONPROPERTIES;
-#endif
-
-// Used by DSPROPERTY_EAXBUFFER_FLAGS
-//    TRUE:    value is computed automatically - property is an offset
-//    FALSE:   value is used directly
-//
-// Note: The number and order of flags may change in future EAX versions.
-//       To insure future compatibility, use flag defines as follows:
-//              myFlags = EAXBUFFERFLAGS_DIRECTHFAUTO | EAXBUFFERFLAGS_ROOMAUTO;
-//       instead of:
-//              myFlags = 0x00000003;
-//
-#define EAXBUFFERFLAGS_DIRECTHFAUTO          0x00000001 // affects DSPROPERTY_EAXBUFFER_DIRECTHF
-#define EAXBUFFERFLAGS_ROOMAUTO              0x00000002 // affects DSPROPERTY_EAXBUFFER_ROOM
-#define EAXBUFFERFLAGS_ROOMHFAUTO            0x00000004 // affects DSPROPERTY_EAXBUFFER_ROOMHF
-
-#define EAXBUFFERFLAGS_RESERVED              0xFFFFFFF8 // reserved future use
-
-// Property ranges and defaults:
-
-#define EAXBUFFER_MINDIRECT                    (-10000)
-#define EAXBUFFER_MAXDIRECT                    1000
-#define EAXBUFFER_DEFAULTDIRECT                0
-
-#define EAXBUFFER_MINDIRECTHF                  (-10000)
-#define EAXBUFFER_MAXDIRECTHF                  0
-#define EAXBUFFER_DEFAULTDIRECTHF              0
-
-#define EAXBUFFER_MINROOM                      (-10000)
-#define EAXBUFFER_MAXROOM                      1000
-#define EAXBUFFER_DEFAULTROOM                  0
-
-#define EAXBUFFER_MINROOMHF                    (-10000)
-#define EAXBUFFER_MAXROOMHF                    0
-#define EAXBUFFER_DEFAULTROOMHF                0
-
-#define EAXBUFFER_MINOBSTRUCTION               (-10000)
-#define EAXBUFFER_MAXOBSTRUCTION               0
-#define EAXBUFFER_DEFAULTOBSTRUCTION           0
-
-#define EAXBUFFER_MINOBSTRUCTIONLFRATIO        0.0f
-#define EAXBUFFER_MAXOBSTRUCTIONLFRATIO        1.0f
-#define EAXBUFFER_DEFAULTOBSTRUCTIONLFRATIO    0.0f
-
-#define EAXBUFFER_MINOCCLUSION                 (-10000)
-#define EAXBUFFER_MAXOCCLUSION                 0
-#define EAXBUFFER_DEFAULTOCCLUSION             0
-
-#define EAXBUFFER_MINOCCLUSIONLFRATIO          0.0f
-#define EAXBUFFER_MAXOCCLUSIONLFRATIO          1.0f
-#define EAXBUFFER_DEFAULTOCCLUSIONLFRATIO      0.25f
-
-#define EAXBUFFER_MINOCCLUSIONROOMRATIO        0.0f
-#define EAXBUFFER_MAXOCCLUSIONROOMRATIO        10.0f
-#define EAXBUFFER_DEFAULTOCCLUSIONROOMRATIO    1.5f
-
-#define EAXBUFFER_MINOCCLUSIONDIRECTRATIO      0.0f
-#define EAXBUFFER_MAXOCCLUSIONDIRECTRATIO      10.0f
-#define EAXBUFFER_DEFAULTOCCLUSIONDIRECTRATIO  1.0f
-
-#define EAXBUFFER_MINEXCLUSION                 (-10000)
-#define EAXBUFFER_MAXEXCLUSION                 0
-#define EAXBUFFER_DEFAULTEXCLUSION             0
-
-#define EAXBUFFER_MINEXCLUSIONLFRATIO          0.0f
-#define EAXBUFFER_MAXEXCLUSIONLFRATIO          1.0f
-#define EAXBUFFER_DEFAULTEXCLUSIONLFRATIO      1.0f
-
-#define EAXBUFFER_MINOUTSIDEVOLUMEHF           (-10000)
-#define EAXBUFFER_MAXOUTSIDEVOLUMEHF           0
-#define EAXBUFFER_DEFAULTOUTSIDEVOLUMEHF       0
-
-#define EAXBUFFER_MINDOPPLERFACTOR             0.0f
-#define EAXBUFFER_MAXDOPPLERFACTOR             10.f
-#define EAXBUFFER_DEFAULTDOPPLERFACTOR         0.0f
-
-#define EAXBUFFER_MINROLLOFFFACTOR             0.0f
-#define EAXBUFFER_MAXROLLOFFFACTOR             10.f
-#define EAXBUFFER_DEFAULTROLLOFFFACTOR         0.0f
-
-#define EAXBUFFER_MINROOMROLLOFFFACTOR         0.0f
-#define EAXBUFFER_MAXROOMROLLOFFFACTOR         10.f
-#define EAXBUFFER_DEFAULTROOMROLLOFFFACTOR     0.0f
-
-#define EAXBUFFER_MINAIRABSORPTIONFACTOR       0.0f
-#define EAXBUFFER_MAXAIRABSORPTIONFACTOR       10.0f
-#define EAXBUFFER_DEFAULTAIRABSORPTIONFACTOR   1.0f
-
-#define EAXBUFFER_DEFAULTFLAGS                 (EAXBUFFERFLAGS_DIRECTHFAUTO |       \
-                                                EAXBUFFERFLAGS_ROOMAUTO |           \
-                                                EAXBUFFERFLAGS_ROOMHFAUTO )
-
-#pragma pack(pop)
-
-#ifdef __cplusplus
-}
-#endif // __cplusplus
-
-#endif
diff --git a/neo/openal/include/eax4.h b/neo/openal/include/eax4.h
deleted file mode 100644
index 6bf13137..00000000
--- a/neo/openal/include/eax4.h
+++ /dev/null
@@ -1,1575 +0,0 @@
-/*******************************************************************\
-*                                                                   *
-*  EAX.H - Environmental Audio Extensions version 4.0               *
-*          for OpenAL and DirectSound3D                             *
-*                                                                   *
-*          File revision 1.0.0 (GDC Beta SDK Release)               *
-*                                                                   *
-\*******************************************************************/
-
-#ifndef EAX_H_INCLUDED
-#define EAX_H_INCLUDED
-
-#ifdef __cplusplus
-extern "C" {
-#endif // __cplusplus
-
-#ifndef OPENAL
-    #include <dsound.h>
-
-    /*
-     * EAX Unified Interface (using Direct X 7) {4FF53B81-1CE0-11d3-AAB8-00A0C95949D5}
-     */
-    DEFINE_GUID(CLSID_EAXDirectSound, 
-        0x4ff53b81, 
-        0x1ce0, 
-        0x11d3,
-        0xaa, 0xb8, 0x0, 0xa0, 0xc9, 0x59, 0x49, 0xd5);
-        
-   /*
-    * EAX Unified Interface (using Direct X 8) {CA503B60-B176-11d4-A094-D0C0BF3A560C}
-    */
-    DEFINE_GUID(CLSID_EAXDirectSound8, 
-        0xca503b60,
-        0xb176,
-        0x11d4,
-        0xa0, 0x94, 0xd0, 0xc0, 0xbf, 0x3a, 0x56, 0xc);
-
-    
-
-#ifdef DIRECTSOUND_VERSION        
-#if DIRECTSOUND_VERSION >= 0x0800
-    __declspec(dllimport) HRESULT WINAPI EAXDirectSoundCreate8(GUID*, LPDIRECTSOUND8*, IUnknown FAR *);
-    typedef HRESULT (FAR PASCAL *LPEAXDIRECTSOUNDCREATE8)(GUID*, LPDIRECTSOUND8*, IUnknown FAR*);
-#endif
-#endif
-    
-    __declspec(dllimport) HRESULT WINAPI EAXDirectSoundCreate(GUID*, LPDIRECTSOUND*, IUnknown FAR *);
-    typedef HRESULT (FAR PASCAL *LPEAXDIRECTSOUNDCREATE)(GUID*, LPDIRECTSOUND*, IUnknown FAR*);
-
-#else // OPENAL
-//    #include <al.h>
-    
-    #ifndef GUID_DEFINED
-        #define GUID_DEFINED
-        typedef struct _GUID
-        {
-            unsigned long Data1;
-            unsigned short Data2;
-            unsigned short Data3;
-            unsigned char Data4[8];
-        } GUID;
-    #endif // GUID_DEFINED
-
-    #ifndef DEFINE_GUID
-        #ifndef INITGUID
-            #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
-                    extern const GUID /*FAR*/ name
-        #else
-            #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
-                    extern const GUID name = { l, w1, w2, { b1, b2,  b3,  b4,  b5,  b6,  b7,  b8 } }
-        #endif // INITGUID
-    #endif // DEFINE_GUID
-
-    /*
-     * EAX OpenAL Extensions
-     */
-    typedef ALenum (*EAXSet)(const GUID*, ALuint, ALuint, ALvoid*, ALuint);
-    typedef ALenum (*EAXGet)(const GUID*, ALuint, ALuint, ALvoid*, ALuint);
-	typedef ALboolean (*EAXSetBufferMode)(ALsizei, ALuint*, ALint);
-	typedef ALenum (*EAXGetBufferMode)(ALuint, ALint*);
-#endif
-
-#pragma pack(push, 4)
-
-
-
-
-////////////////////////////////////////////////////////////////////////////
-// Constants
-
-#define EAX_MAX_FXSLOTS 4
-#define EAX_MAX_ACTIVE_FXSLOTS 2
-
-// The EAX_NULL_GUID is used by EAXFXSLOT_LOADEFFECT, EAXCONTEXT_PRIMARYFXSLOTID
-// and EAXSOURCE_ACTIVEFXSLOTID
-
-// {00000000-0000-0000-0000-000000000000}
-DEFINE_GUID(EAX_NULL_GUID, 
-    0x00000000, 
-    0x0000, 
-    0x0000, 
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);
-
-// The EAX_PrimaryFXSlotID GUID is used by EAXSOURCE_ACTIVEFXSLOTID 
-
-// {F317866D-924C-450C-861B-E6DAA25E7C20}
-DEFINE_GUID(EAX_PrimaryFXSlotID, 
-    0xf317866d,
-    0x924c,
-    0x450c,
-    0x86, 0x1b, 0xe6, 0xda, 0xa2, 0x5e, 0x7c, 0x20);
-
-
-////////////////////////////////////////////////////////////////////////////
-
-    
-
-    
-////////////////////////////////////////////////////////////////////////////
-// Structures
-
-// Use this structure for EAXCONTEXT_ALL property.
-typedef struct _EAXCONTEXTPROPERTIES
-{
-    GUID          guidPrimaryFXSlotID;
-    float         flDistanceFactor;
-    float         flAirAbsorptionHF;
-    float         flHFReference;
-} EAXCONTEXTPROPERTIES, *LPEAXCONTEXTPROPERTIES; 
-
-// Use this structure for EAXSOURCE_ALLPARAMETERS
-// - all levels are hundredths of decibels
-// - all delays are in seconds
-//
-// NOTE: This structure may change in future EAX versions.
-//       It is recommended to initialize fields by name:
-//              myBuffer.lDirect = 0;
-//              myBuffer.lDirectHF = -200;
-//              ...
-//              myBuffer.dwFlags = myFlags /* see EAXSOURCEFLAGS below */ ;
-//       instead of:
-//              myBuffer = { 0, -200, ... , 0x00000003 };
-//
-typedef struct _EAXSOURCEPROPERTIES
-{
-    long          lDirect;                 // direct path level (at low and mid frequencies)
-    long          lDirectHF;               // relative direct path level at high frequencies
-    long          lRoom;                   // room effect level (at low and mid frequencies)
-    long          lRoomHF;                 // relative room effect level at high frequencies
-    long          lObstruction;            // main obstruction control (attenuation at high frequencies) 
-    float         flObstructionLFRatio;    // obstruction low-frequency level re. main control
-    long          lOcclusion;              // main occlusion control (attenuation at high frequencies)
-    float         flOcclusionLFRatio;      // occlusion low-frequency level re. main control
-    float         flOcclusionRoomRatio;    // relative occlusion control for room effect
-    float         flOcclusionDirectRatio;  // relative occlusion control for direct path
-    long          lExclusion;              // main exlusion control (attenuation at high frequencies)
-    float         flExclusionLFRatio;      // exclusion low-frequency level re. main control
-    long          lOutsideVolumeHF;        // outside sound cone level at high frequencies
-    float         flDopplerFactor;         // like DS3D flDopplerFactor but per source
-    float         flRolloffFactor;         // like DS3D flRolloffFactor but per source
-    float         flRoomRolloffFactor;     // like DS3D flRolloffFactor but for room effect
-    float         flAirAbsorptionFactor;   // multiplies EAXREVERB_AIRABSORPTIONHF
-    unsigned long ulFlags;                 // modifies the behavior of properties
-} EAXSOURCEPROPERTIES, *LPEAXSOURCEPROPERTIES;
-
-// Use this structure for EAXSOURCE_ALLSENDPARAMETERS
-// - all levels are hundredths of decibels
-//
-typedef struct _EAXSOURCEALLSENDPROPERTIES
-{
-	GUID          guidReceivingFXSlotID;
-	long          lSend;                   // send level (at low and mid frequencies)
-	long          lSendHF;                 // relative send level at high frequencies
-	long          lOcclusion;
-	float         flOcclusionLFRatio;
-	float         flOcclusionRoomRatio;
-	float         flOcclusionDirectRatio;
-	long          lExclusion; 
-	float         flExclusionLFRatio;
-} EAXSOURCEALLSENDPROPERTIES, *LPEAXSOURCEALLSENDPROPERTIES;
-
-// Use this structure for EAXSOURCE_ACTIVEFXSLOTID
-typedef struct _EAXACTIVEFXSLOTS
-{
-    GUID          guidActiveFXSlots[EAX_MAX_ACTIVE_FXSLOTS];
-} EAXACTIVEFXSLOTS, *LPEAXACTIVEFXSLOTS;
-
-// Use this structure for EAXSOURCE_OBSTRUCTIONPARAMETERS property.
-#ifndef EAX_OBSTRUCTIONPROPERTIES_DEFINED
-#define EAX_OBSTRUCTIONPROPERTIES_DEFINED
-typedef struct _EAXOBSTRUCTIONPROPERTIES
-{
-    long          lObstruction;
-    float         flObstructionLFRatio;
-} EAXOBSTRUCTIONPROPERTIES, *LPEAXOBSTRUCTIONPROPERTIES;
-#endif
-
-// Use this structure for EAXSOURCE_OCCLUSIONPARAMETERS property.
-#ifndef EAX_OCCLUSIONPROPERTIES_DEFINED
-#define EAX_OCCLUSIONPROPERTIES_DEFINED
-typedef struct _EAXOCCLUSIONPROPERTIES
-{
-    long          lOcclusion;
-    float         flOcclusionLFRatio;
-    float         flOcclusionRoomRatio;
-    float         flOcclusionDirectRatio;
-} EAXOCCLUSIONPROPERTIES, *LPEAXOCCLUSIONPROPERTIES;
-#endif
-
-// Use this structure for EAXSOURCE_EXCLUSIONPARAMETERS property.
-#ifndef EAX_EXCLUSIONPROPERTIES_DEFINED
-#define EAX_EXCLUSIONPROPERTIES_DEFINED
-typedef struct _EAXEXCLUSIONPROPERTIES
-{
-    long          lExclusion;
-    float         flExclusionLFRatio;
-} EAXEXCLUSIONPROPERTIES, *LPEAXEXCLUSIONPROPERTIES;
-#endif
-
-// Use this structure for EAXSOURCE_SENDPARAMETERS properties.
-typedef struct _EAXSOURCESENDPROPERTIES
-{
-    GUID          guidReceivingFXSlotID;
-    long          lSend;
-    long          lSendHF;
-} EAXSOURCESENDPROPERTIES, *LPEAXSOURCESENDPROPERTIES;
-
-// Use this structure for EAXSOURCE_OCCLUSIONSENDPARAMETERS 
-typedef struct _EAXSOURCEOCCLUSIONSENDPROPERTIES
-{
-	GUID          guidReceivingFXSlotID;
-	long          lOcclusion;
-	float         flOcclusionLFRatio;
-	float         flOcclusionRoomRatio;
-	float         flOcclusionDirectRatio;
-} EAXSOURCEOCCLUSIONSENDPROPERTIES, *LPEAXSOURCEOCCLUSIONSENDPROPERTIES;
-
-// Use this structure for EAXSOURCE_EXCLUSIONSENDPARAMETERS
-typedef struct _EAXSOURCEEXCLUSIONSENDPROPERTIES
-{
-	GUID          guidReceivingFXSlotID;
-	long          lExclusion;
-	float         flExclusionLFRatio;
-} EAXSOURCEEXCLUSIONSENDPROPERTIES, *LPEAXSOURCEEXCLUSIONSENDPROPERTIES;
-
-// Use this structure for EAXFXSLOT_ALLPARAMETERS
-// - all levels are hundredths of decibels
-//
-// NOTE: This structure may change in future EAX versions.
-//       It is recommended to initialize fields by name:
-//              myFXSlot.guidLoadEffect = EAX_REVERB_EFFECT;
-//              myFXSlot.lVolume = 0;
-//              myFXSlot.lLock = 1;
-//              myFXSlot.ulFlags = myFlags /* see EAXFXSLOTFLAGS below */ ;
-//       instead of:
-//              myFXSlot = { EAX_REVERB_EFFECT, 0, 1, 0x00000001 };
-//
-typedef struct _EAXFXSLOTPROPERTIES
-{
-	GUID          guidLoadEffect;
-	long          lVolume;
-	long          lLock;
-	unsigned long ulFlags;
-} EAXFXSLOTPROPERTIES, *LPEAXFXSLOTPROPERTIES;
-
-// Use this structure for EAXREVERB_REFLECTIONSPAN and EAXREVERB_REVERBPAN properties.
-#ifndef EAXVECTOR_DEFINED
-#define EAXVECTOR_DEFINED
-typedef struct _EAXVECTOR {
-    float x;
-    float y;
-    float z;
-} EAXVECTOR;
-#endif
-
-
-////////////////////////////////////////////////////////////////////////////
-
-
-
-
-////////////////////////////////////////////////////////////////////////////
-// Error Codes
-
-#define EAX_OK                     0
-#define EAXERR_INVALID_OPERATION   (-1)
-#define EAXERR_INVALID_VALUE       (-2)
-#define EAXERR_NO_EFFECT_LOADED    (-3)
-#define EAXERR_UNKNOWN_EFFECT      (-4)
-////////////////////////////////////////////////////////////////////////////
-
-
-
-
-////////////////////////////////////////////////////////////////////////////
-// Context Object
-
-// {1D4870AD-0DEF-43c0-A40C-523632296342}
-DEFINE_GUID(EAXPROPERTYID_EAX40_Context, 
-    0x1d4870ad, 
-    0xdef, 
-    0x43c0, 
-    0xa4, 0xc, 0x52, 0x36, 0x32, 0x29, 0x63, 0x42);
-
-// For compatibility with future EAX versions:
-#define EAXPROPERTYID_EAX_Context EAXPROPERTYID_EAX40_Context
-
-typedef enum
-{
-    EAXCONTEXT_NONE = 0,
-    EAXCONTEXT_ALLPARAMETERS,
-    EAXCONTEXT_PRIMARYFXSLOTID,
-    EAXCONTEXT_DISTANCEFACTOR,
-    EAXCONTEXT_AIRABSORPTIONHF,
-    EAXCONTEXT_HFREFERENCE,
-    EAXCONTEXT_LASTERROR
-} EAXCONTEXT_PROPERTY;
-
-// OR these flags with property id
-#define EAXCONTEXT_PARAMETER_IMMEDIATE 0x00000000 // changes take effect immediately
-#define EAXCONTEXT_PARAMETER_DEFER     0x80000000 // changes take effect later
-#define EAXCONTEXT_PARAMETER_COMMITDEFERREDSETTINGS (EAXCONTEXT_NONE | \
-                                                      EAXCONTEXT_PARAMETER_IMMEDIATE)
-
-// EAX Context property ranges and defaults:
-#define EAXCONTEXT_DEFAULTPRIMARYFXSLOTID EAXPROPERTYID_EAX40_FXSlot0
-
-#define EAXCONTEXT_MINDISTANCEFACTOR        FLT_MIN //minimum positive value
-#define EAXCONTEXT_MAXDISTANCEFACTOR        FLT_MAX
-#define EAXCONTEXT_DEFAULTDISTANCEFACTOR    1.0f
-
-#define EAXCONTEXT_MINAIRABSORPTIONHF     (-100.0f)
-#define EAXCONTEXT_MAXAIRABSORPTIONHF     0.0f
-#define EAXCONTEXT_DEFAULTAIRABSORPTIONHF (-5.0f)
-
-#define EAXCONTEXT_MINHFREFERENCE         1000.0f
-#define EAXCONTEXT_MAXHFREFERENCE         20000.0f
-#define EAXCONTEXT_DEFAULTHFREFERENCE     5000.0f
-
-#define EAXCONTEXT_DEFAULTLASTERROR         EAX_OK
-
-////////////////////////////////////////////////////////////////////////////
-
-
-
-
-////////////////////////////////////////////////////////////////////////////
-// Effect Slot Objects
-
-// {C4D79F1E-F1AC-436b-A81D-A738E7045469}
-DEFINE_GUID(EAXPROPERTYID_EAX40_FXSlot0, 
-    0xc4d79f1e, 
-    0xf1ac, 
-    0x436b, 
-    0xa8, 0x1d, 0xa7, 0x38, 0xe7, 0x4, 0x54, 0x69);
-
-// {08C00E96-74BE-4491-93AA-E8AD35A49117}
-DEFINE_GUID(EAXPROPERTYID_EAX40_FXSlot1, 
-    0x8c00e96, 
-    0x74be, 
-    0x4491, 
-    0x93, 0xaa, 0xe8, 0xad, 0x35, 0xa4, 0x91, 0x17);
-
-// {1D433B88-F0F6-4637-919F-60E7E06B5EDD}
-DEFINE_GUID(EAXPROPERTYID_EAX40_FXSlot2, 
-    0x1d433b88, 
-    0xf0f6, 
-    0x4637, 
-    0x91, 0x9f, 0x60, 0xe7, 0xe0, 0x6b, 0x5e, 0xdd);
-
-// {EFFF08EA-C7D8-44ab-93AD-6DBD5F910064}
-DEFINE_GUID(EAXPROPERTYID_EAX40_FXSlot3, 
-    0xefff08ea, 
-    0xc7d8, 
-    0x44ab, 
-    0x93, 0xad, 0x6d, 0xbd, 0x5f, 0x91, 0x0, 0x64);
-
-// For compatibility with future EAX versions:
-#define EAXPROPERTYID_EAX_FXSlot0 EAXPROPERTYID_EAX40_FXSlot0
-#define EAXPROPERTYID_EAX_FXSlot1 EAXPROPERTYID_EAX40_FXSlot1
-#define EAXPROPERTYID_EAX_FXSlot2 EAXPROPERTYID_EAX40_FXSlot2
-#define EAXPROPERTYID_EAX_FXSlot3 EAXPROPERTYID_EAX40_FXSlot3
-
-// FXSlot object properties
-typedef enum
-{
-    EAXFXSLOT_PARAMETER = 0, // range 0-0x40 reserved for loaded effect parameters
-    EAXFXSLOT_NONE = 0x10000,
-	EAXFXSLOT_ALLPARAMETERS,
-    EAXFXSLOT_LOADEFFECT,
-    EAXFXSLOT_VOLUME,
-	EAXFXSLOT_LOCK,
-	EAXFXSLOT_FLAGS
-} EAXFXSLOT_PROPERTY;
-
-// Note: The number and order of flags may change in future EAX versions.
-//       To insure future compatibility, use flag defines as follows:
-//              myFlags = EAXFXSLOTFLAGS_ENVIRONMENT;
-//       instead of:
-//              myFlags = 0x00000001;
-//
-#define EAXFXSLOTFLAGS_ENVIRONMENT   0x00000001
-#define EAXFXSLOTFLAGS_RESERVED      0xFFFFFFFE // reserved future use
-
-// EAX Effect Slot property ranges and defaults:
-#define EAXFXSLOT_MINVOLUME                    (-10000)
-#define EAXFXSLOT_MAXVOLUME                    0
-#define EAXFXSLOT_DEFAULTVOLUME                0
-
-#define EAXFXSLOT_MINLOCK    0
-#define EAXFXSLOT_MAXLOCK    1
-
-enum
-{
-   EAXFXSLOT_UNLOCKED = 0,
-   EAXFXSLOT_LOCKED = 1
-};
-
-#define EAXFXSLOT_DEFAULTFLAGS                 (EAXFXSLOTFLAGS_ENVIRONMENT)
-////////////////////////////////////////////////////////////////////////////
-
-
-
-
-////////////////////////////////////////////////////////////////////////////
-// Source Object
-
-// {1B86B823-22DF-4eae-8B3C-1278CE544227}
-DEFINE_GUID(EAXPROPERTYID_EAX40_Source, 
-    0x1b86b823, 
-    0x22df, 
-    0x4eae, 
-    0x8b, 0x3c, 0x12, 0x78, 0xce, 0x54, 0x42, 0x27);
-
-// For compatibility with future EAX versions:
-#define EAXPROPERTYID_EAX_Source EAXPROPERTYID_EAX40_Source
-
-// Source object properties
-typedef enum
-{
-    EAXSOURCE_NONE,
-    EAXSOURCE_ALLPARAMETERS,
-    EAXSOURCE_OBSTRUCTIONPARAMETERS,
-    EAXSOURCE_OCCLUSIONPARAMETERS,
-    EAXSOURCE_EXCLUSIONPARAMETERS,
-    EAXSOURCE_DIRECT,
-    EAXSOURCE_DIRECTHF,
-    EAXSOURCE_ROOM,
-    EAXSOURCE_ROOMHF,
-    EAXSOURCE_OBSTRUCTION,
-    EAXSOURCE_OBSTRUCTIONLFRATIO,
-    EAXSOURCE_OCCLUSION,
-    EAXSOURCE_OCCLUSIONLFRATIO, 
-    EAXSOURCE_OCCLUSIONROOMRATIO,
-    EAXSOURCE_OCCLUSIONDIRECTRATIO,
-    EAXSOURCE_EXCLUSION, 
-    EAXSOURCE_EXCLUSIONLFRATIO,
-    EAXSOURCE_OUTSIDEVOLUMEHF, 
-    EAXSOURCE_DOPPLERFACTOR, 
-    EAXSOURCE_ROLLOFFFACTOR, 
-    EAXSOURCE_ROOMROLLOFFFACTOR,
-    EAXSOURCE_AIRABSORPTIONFACTOR,
-    EAXSOURCE_FLAGS,
-    EAXSOURCE_SENDPARAMETERS,
-    EAXSOURCE_ALLSENDPARAMETERS,
-    EAXSOURCE_OCCLUSIONSENDPARAMETERS,
-    EAXSOURCE_EXCLUSIONSENDPARAMETERS,
-    EAXSOURCE_ACTIVEFXSLOTID,
-} EAXSOURCE_PROPERTY;
-
-// OR these flags with property id
-#define EAXSOURCE_PARAMETER_IMMEDIATE 0x00000000 // changes take effect immediately
-#define EAXSOURCE_PARAMETER_DEFERRED  0x80000000 // changes take effect later
-#define EAXSOURCE_PARAMETER_COMMITDEFERREDSETTINGS (EAXSOURCE_NONE | \
-                                                    EAXSOURCE_PARAMETER_IMMEDIATE)
-// Used by EAXSOURCE_FLAGS for EAXSOURCEFLAGS_xxxAUTO
-//    TRUE:    value is computed automatically - property is an offset
-//    FALSE:   value is used directly
-//
-// Note: The number and order of flags may change in future EAX versions.
-//       To insure future compatibility, use flag defines as follows:
-//              myFlags = EAXSOURCE_DIRECTHFAUTO | EAXSOURCE_ROOMAUTO;
-//       instead of:
-//              myFlags = 0x00000003;
-//
-#define EAXSOURCEFLAGS_DIRECTHFAUTO          0x00000001 // relates to EAXSOURCE_DIRECTHF
-#define EAXSOURCEFLAGS_ROOMAUTO              0x00000002 // relates to EAXSOURCE_ROOM
-#define EAXSOURCEFLAGS_ROOMHFAUTO            0x00000004 // relates to EAXSOURCE_ROOMHF
-#define EAXSOURCEFLAGS_RESERVED              0xFFFFFFF8 // reserved future use
-
-// EAX Source property ranges and defaults:
-#define EAXSOURCE_MINSEND                      (-10000)
-#define EAXSOURCE_MAXSEND                      0
-#define EAXSOURCE_DEFAULTSEND                  0
-
-#define EAXSOURCE_MINSENDHF                    (-10000)
-#define EAXSOURCE_MAXSENDHF                    0
-#define EAXSOURCE_DEFAULTSENDHF                0
-
-#define EAXSOURCE_MINDIRECT                    (-10000)
-#define EAXSOURCE_MAXDIRECT                    1000
-#define EAXSOURCE_DEFAULTDIRECT                0
-
-#define EAXSOURCE_MINDIRECTHF                  (-10000)
-#define EAXSOURCE_MAXDIRECTHF                  0
-#define EAXSOURCE_DEFAULTDIRECTHF              0
-
-#define EAXSOURCE_MINROOM                      (-10000)
-#define EAXSOURCE_MAXROOM                      1000
-#define EAXSOURCE_DEFAULTROOM                  0
-
-#define EAXSOURCE_MINROOMHF                    (-10000)
-#define EAXSOURCE_MAXROOMHF                    0
-#define EAXSOURCE_DEFAULTROOMHF                0
-
-#define EAXSOURCE_MINOBSTRUCTION               (-10000)
-#define EAXSOURCE_MAXOBSTRUCTION               0
-#define EAXSOURCE_DEFAULTOBSTRUCTION           0
-
-#define EAXSOURCE_MINOBSTRUCTIONLFRATIO        0.0f
-#define EAXSOURCE_MAXOBSTRUCTIONLFRATIO        1.0f
-#define EAXSOURCE_DEFAULTOBSTRUCTIONLFRATIO    0.0f
-
-#define EAXSOURCE_MINOCCLUSION                 (-10000)
-#define EAXSOURCE_MAXOCCLUSION                 0
-#define EAXSOURCE_DEFAULTOCCLUSION             0
-
-#define EAXSOURCE_MINOCCLUSIONLFRATIO          0.0f
-#define EAXSOURCE_MAXOCCLUSIONLFRATIO          1.0f
-#define EAXSOURCE_DEFAULTOCCLUSIONLFRATIO      0.25f
-
-#define EAXSOURCE_MINOCCLUSIONROOMRATIO        0.0f
-#define EAXSOURCE_MAXOCCLUSIONROOMRATIO        10.0f
-#define EAXSOURCE_DEFAULTOCCLUSIONROOMRATIO    1.5f
-
-#define EAXSOURCE_MINOCCLUSIONDIRECTRATIO      0.0f
-#define EAXSOURCE_MAXOCCLUSIONDIRECTRATIO      10.0f
-#define EAXSOURCE_DEFAULTOCCLUSIONDIRECTRATIO  1.0f
-
-#define EAXSOURCE_MINEXCLUSION                 (-10000)
-#define EAXSOURCE_MAXEXCLUSION                 0
-#define EAXSOURCE_DEFAULTEXCLUSION             0
-
-#define EAXSOURCE_MINEXCLUSIONLFRATIO          0.0f
-#define EAXSOURCE_MAXEXCLUSIONLFRATIO          1.0f
-#define EAXSOURCE_DEFAULTEXCLUSIONLFRATIO      1.0f
-
-#define EAXSOURCE_MINOUTSIDEVOLUMEHF           (-10000)
-#define EAXSOURCE_MAXOUTSIDEVOLUMEHF           0
-#define EAXSOURCE_DEFAULTOUTSIDEVOLUMEHF       0
-
-#define EAXSOURCE_MINDOPPLERFACTOR             0.0f
-#define EAXSOURCE_MAXDOPPLERFACTOR             10.f
-#define EAXSOURCE_DEFAULTDOPPLERFACTOR         1.0f
-
-#define EAXSOURCE_MINROLLOFFFACTOR             0.0f
-#define EAXSOURCE_MAXROLLOFFFACTOR             10.f
-#define EAXSOURCE_DEFAULTROLLOFFFACTOR         0.0f
-
-#define EAXSOURCE_MINROOMROLLOFFFACTOR         0.0f
-#define EAXSOURCE_MAXROOMROLLOFFFACTOR         10.f
-#define EAXSOURCE_DEFAULTROOMROLLOFFFACTOR     0.0f
-
-#define EAXSOURCE_MINAIRABSORPTIONFACTOR       0.0f
-#define EAXSOURCE_MAXAIRABSORPTIONFACTOR       10.0f
-#define EAXSOURCE_DEFAULTAIRABSORPTIONFACTOR   0.0f
-
-#define EAXSOURCE_DEFAULTFLAGS                 (EAXSOURCEFLAGS_DIRECTHFAUTO |       \
-                                                EAXSOURCEFLAGS_ROOMAUTO     |       \
-                                                EAXSOURCEFLAGS_ROOMHFAUTO  )
-
-#define EAXSOURCE_DEFAULTACTIVEFXSLOTID  {{ EAX_NULL_GUID.Data1, EAX_NULL_GUID.Data2, EAX_NULL_GUID.Data3, \
-                                    EAX_NULL_GUID.Data4[0],EAX_NULL_GUID.Data4[1],EAX_NULL_GUID.Data4[2],\
-                                    EAX_NULL_GUID.Data4[3],EAX_NULL_GUID.Data4[4],EAX_NULL_GUID.Data4[5],\
-                                    EAX_NULL_GUID.Data4[6],EAX_NULL_GUID.Data4[7] },                       \
-                                  { EAX_PrimaryFXSlotID.Data1, EAX_PrimaryFXSlotID.Data2, \
-                                    EAX_PrimaryFXSlotID.Data3, EAX_PrimaryFXSlotID.Data4[0],\
-                                    EAX_PrimaryFXSlotID.Data4[1],EAX_PrimaryFXSlotID.Data4[2],\
-                                    EAX_PrimaryFXSlotID.Data4[3],EAX_PrimaryFXSlotID.Data4[4],\
-                                    EAX_PrimaryFXSlotID.Data4[5],EAX_PrimaryFXSlotID.Data4[6],\
-                                    EAX_PrimaryFXSlotID.Data4[7] }}
-
-
-////////////////////////////////////////////////////////////////////////////
-
-
-
-
-////////////////////////////////////////////////////////////////////////////
-// Reverb Effect
-
-// EAX REVERB {0CF95C8F-A3CC-4849-B0B6-832ECC1822DF}
-DEFINE_GUID(EAX_REVERB_EFFECT, 
-    0xcf95c8f, 
-    0xa3cc, 
-    0x4849, 
-    0xb0, 0xb6, 0x83, 0x2e, 0xcc, 0x18, 0x22, 0xdf);
-
-// Reverb effect properties
-typedef enum
-{
-    EAXREVERB_NONE,
-    EAXREVERB_ALLPARAMETERS,
-    EAXREVERB_ENVIRONMENT,
-    EAXREVERB_ENVIRONMENTSIZE,
-    EAXREVERB_ENVIRONMENTDIFFUSION,
-    EAXREVERB_ROOM,
-    EAXREVERB_ROOMHF,
-    EAXREVERB_ROOMLF,
-    EAXREVERB_DECAYTIME,
-    EAXREVERB_DECAYHFRATIO,
-    EAXREVERB_DECAYLFRATIO,
-    EAXREVERB_REFLECTIONS,
-    EAXREVERB_REFLECTIONSDELAY,
-    EAXREVERB_REFLECTIONSPAN,
-    EAXREVERB_REVERB,
-    EAXREVERB_REVERBDELAY,
-    EAXREVERB_REVERBPAN,
-    EAXREVERB_ECHOTIME,
-    EAXREVERB_ECHODEPTH,
-    EAXREVERB_MODULATIONTIME,
-    EAXREVERB_MODULATIONDEPTH,
-    EAXREVERB_AIRABSORPTIONHF,
-    EAXREVERB_HFREFERENCE,
-    EAXREVERB_LFREFERENCE,
-    EAXREVERB_ROOMROLLOFFFACTOR,
-    EAXREVERB_FLAGS,
-} EAXREVERB_PROPERTY;
-
-// OR these flags with property id
-#define EAXREVERB_IMMEDIATE 0x00000000 // changes take effect immediately
-#define EAXREVERB_DEFERRED  0x80000000 // changes take effect later
-#define EAXREVERB_COMMITDEFERREDSETTINGS (EAXREVERB_NONE | \
-                                          EAXREVERB_IMMEDIATE)
-
-// used by EAXREVERB_ENVIRONMENT
-#ifndef EAX_ENVIRONMENTS_DEFINED
-#define EAX_ENVIRONMENTS_DEFINED
-enum
-{
-    EAX_ENVIRONMENT_GENERIC,
-    EAX_ENVIRONMENT_PADDEDCELL,
-    EAX_ENVIRONMENT_ROOM,
-    EAX_ENVIRONMENT_BATHROOM,
-    EAX_ENVIRONMENT_LIVINGROOM,
-    EAX_ENVIRONMENT_STONEROOM,
-    EAX_ENVIRONMENT_AUDITORIUM,
-    EAX_ENVIRONMENT_CONCERTHALL,
-    EAX_ENVIRONMENT_CAVE,
-    EAX_ENVIRONMENT_ARENA,
-    EAX_ENVIRONMENT_HANGAR,
-    EAX_ENVIRONMENT_CARPETEDHALLWAY,
-    EAX_ENVIRONMENT_HALLWAY,
-    EAX_ENVIRONMENT_STONECORRIDOR,
-    EAX_ENVIRONMENT_ALLEY,
-    EAX_ENVIRONMENT_FOREST,
-    EAX_ENVIRONMENT_CITY,
-    EAX_ENVIRONMENT_MOUNTAINS,
-    EAX_ENVIRONMENT_QUARRY,
-    EAX_ENVIRONMENT_PLAIN,
-    EAX_ENVIRONMENT_PARKINGLOT,
-    EAX_ENVIRONMENT_SEWERPIPE,
-    EAX_ENVIRONMENT_UNDERWATER,
-    EAX_ENVIRONMENT_DRUGGED,
-    EAX_ENVIRONMENT_DIZZY,
-    EAX_ENVIRONMENT_PSYCHOTIC,
-
-    EAX_ENVIRONMENT_UNDEFINED,
-
-    EAX_ENVIRONMENT_COUNT
-};
-#endif
-
-// Used by EAXREVERB_FLAGS
-//
-// Note: The number and order of flags may change in future EAX versions.
-//       It is recommended to use the flag defines as follows:
-//              myFlags = EAXREVERBFLAGS_DECAYTIMESCALE | EAXREVERBFLAGS_REVERBSCALE;
-//       instead of:
-//              myFlags = 0x00000009;
-//
-// These flags determine what properties are affected by environment size.
-#define EAXREVERBFLAGS_DECAYTIMESCALE        0x00000001 // reverberation decay time
-#define EAXREVERBFLAGS_REFLECTIONSSCALE      0x00000002 // reflection level
-#define EAXREVERBFLAGS_REFLECTIONSDELAYSCALE 0x00000004 // initial reflection delay time
-#define EAXREVERBFLAGS_REVERBSCALE           0x00000008 // reflections level
-#define EAXREVERBFLAGS_REVERBDELAYSCALE      0x00000010 // late reverberation delay time
-#define EAXREVERBFLAGS_ECHOTIMESCALE         0x00000040 // echo time
-#define EAXREVERBFLAGS_MODULATIONTIMESCALE   0x00000080 // modulation time
-// This flag limits high-frequency decay time according to air absorption.
-#define EAXREVERBFLAGS_DECAYHFLIMIT          0x00000020
-#define EAXREVERBFLAGS_RESERVED              0xFFFFFF00 // reserved future use
-
-// Use this structure for EAXREVERB_ALLPARAMETERS
-// - all levels are hundredths of decibels
-// - all times and delays are in seconds
-//
-// NOTE: This structure may change in future EAX versions.
-//       It is recommended to initialize fields by name:
-//              myReverb.lRoom = -1000;
-//              myReverb.lRoomHF = -100;
-//              ...
-//              myReverb.dwFlags = myFlags /* see EAXREVERBFLAGS below */ ;
-//       instead of:
-//              myReverb = { -1000, -100, ... , 0x00000009 };
-//       If you want to save and load presets in binary form, you 
-//       should define your own structure to insure future compatibility.
-//
-typedef struct _EAXREVERBPROPERTIES
-{
-    unsigned long ulEnvironment;   // sets all reverb properties
-    float flEnvironmentSize;       // environment size in meters
-    float flEnvironmentDiffusion;  // environment diffusion
-    long lRoom;                    // room effect level (at mid frequencies)
-    long lRoomHF;                  // relative room effect level at high frequencies
-    long lRoomLF;                  // relative room effect level at low frequencies  
-    float flDecayTime;             // reverberation decay time at mid frequencies
-    float flDecayHFRatio;          // high-frequency to mid-frequency decay time ratio
-    float flDecayLFRatio;          // low-frequency to mid-frequency decay time ratio   
-    long lReflections;             // early reflections level relative to room effect
-    float flReflectionsDelay;      // initial reflection delay time
-    EAXVECTOR vReflectionsPan;     // early reflections panning vector
-    long lReverb;                  // late reverberation level relative to room effect
-    float flReverbDelay;           // late reverberation delay time relative to initial reflection
-    EAXVECTOR vReverbPan;          // late reverberation panning vector
-    float flEchoTime;              // echo time
-    float flEchoDepth;             // echo depth
-    float flModulationTime;        // modulation time
-    float flModulationDepth;       // modulation depth
-    float flAirAbsorptionHF;       // change in level per meter at high frequencies
-    float flHFReference;           // reference high frequency
-    float flLFReference;           // reference low frequency 
-    float flRoomRolloffFactor;     // like DS3D flRolloffFactor but for room effect
-    unsigned long ulFlags;         // modifies the behavior of properties
-} EAXREVERBPROPERTIES, *LPEAXREVERBPROPERTIES;
-
-// Property ranges and defaults:
-#define EAXREVERB_MINENVIRONMENT                0
-#define EAXREVERB_MAXENVIRONMENT               (EAX_ENVIRONMENT_COUNT-1)
-#define EAXREVERB_DEFAULTENVIRONMENT            EAX_ENVIRONMENT_GENERIC
-
-#define EAXREVERB_MINENVIRONMENTSIZE            1.0f
-#define EAXREVERB_MAXENVIRONMENTSIZE            100.0f
-#define EAXREVERB_DEFAULTENVIRONMENTSIZE        7.5f
-
-#define EAXREVERB_MINENVIRONMENTDIFFUSION       0.0f
-#define EAXREVERB_MAXENVIRONMENTDIFFUSION       1.0f
-#define EAXREVERB_DEFAULTENVIRONMENTDIFFUSION   1.0f
-
-#define EAXREVERB_MINROOM                       (-10000)
-#define EAXREVERB_MAXROOM                       0
-#define EAXREVERB_DEFAULTROOM                   (-1000)
-
-#define EAXREVERB_MINROOMHF                     (-10000)
-#define EAXREVERB_MAXROOMHF                     0
-#define EAXREVERB_DEFAULTROOMHF                 (-100)
-
-#define EAXREVERB_MINROOMLF                     (-10000)
-#define EAXREVERB_MAXROOMLF                     0
-#define EAXREVERB_DEFAULTROOMLF                 0
-
-#define EAXREVERB_MINDECAYTIME                  0.1f
-#define EAXREVERB_MAXDECAYTIME                  20.0f
-#define EAXREVERB_DEFAULTDECAYTIME              1.49f
-
-#define EAXREVERB_MINDECAYHFRATIO               0.1f
-#define EAXREVERB_MAXDECAYHFRATIO               2.0f
-#define EAXREVERB_DEFAULTDECAYHFRATIO           0.83f
-
-#define EAXREVERB_MINDECAYLFRATIO               0.1f
-#define EAXREVERB_MAXDECAYLFRATIO               2.0f
-#define EAXREVERB_DEFAULTDECAYLFRATIO           1.00f
-
-#define EAXREVERB_MINREFLECTIONS                (-10000)
-#define EAXREVERB_MAXREFLECTIONS                1000
-#define EAXREVERB_DEFAULTREFLECTIONS            (-2602)
-
-#define EAXREVERB_MINREFLECTIONSDELAY           0.0f
-#define EAXREVERB_MAXREFLECTIONSDELAY           0.3f
-#define EAXREVERB_DEFAULTREFLECTIONSDELAY       0.007f
-
-#define EAXREVERB_DEFAULTREFLECTIONSPAN         {0.0f, 0.0f, 0.0f}
-
-#define EAXREVERB_MINREVERB                     (-10000)
-#define EAXREVERB_MAXREVERB                     2000
-#define EAXREVERB_DEFAULTREVERB                 200
-
-#define EAXREVERB_MINREVERBDELAY                0.0f
-#define EAXREVERB_MAXREVERBDELAY                0.1f
-#define EAXREVERB_DEFAULTREVERBDELAY            0.011f
-
-#define EAXREVERB_DEFAULTREVERBPAN              {0.0f, 0.0f, 0.0f}
-
-#define EAXREVERB_MINECHOTIME                   0.075f
-#define EAXREVERB_MAXECHOTIME                      0.25f
-#define EAXREVERB_DEFAULTECHOTIME               0.25f
-
-#define EAXREVERB_MINECHODEPTH                  0.0f
-#define EAXREVERB_MAXECHODEPTH                  1.0f
-#define EAXREVERB_DEFAULTECHODEPTH              0.0f
-
-#define EAXREVERB_MINMODULATIONTIME             0.04f
-#define EAXREVERB_MAXMODULATIONTIME             4.0f
-#define EAXREVERB_DEFAULTMODULATIONTIME         0.25f
-
-#define EAXREVERB_MINMODULATIONDEPTH            0.0f
-#define EAXREVERB_MAXMODULATIONDEPTH            1.0f
-#define EAXREVERB_DEFAULTMODULATIONDEPTH        0.0f
-
-#define EAXREVERB_MINAIRABSORPTIONHF            (-100.0f)
-#define EAXREVERB_MAXAIRABSORPTIONHF            0.0f
-#define EAXREVERB_DEFAULTAIRABSORPTIONHF        (-5.0f)
-
-#define EAXREVERB_MINHFREFERENCE                1000.0f
-#define EAXREVERB_MAXHFREFERENCE                20000.0f
-#define EAXREVERB_DEFAULTHFREFERENCE            5000.0f
-
-#define EAXREVERB_MINLFREFERENCE                20.0f
-#define EAXREVERB_MAXLFREFERENCE                1000.0f
-#define EAXREVERB_DEFAULTLFREFERENCE            250.0f
-
-#define EAXREVERB_MINROOMROLLOFFFACTOR          0.0f
-#define EAXREVERB_MAXROOMROLLOFFFACTOR          10.0f
-#define EAXREVERB_DEFAULTROOMROLLOFFFACTOR      0.0f
-
-#define EAXREVERB_DEFAULTFLAGS                  (EAXREVERBFLAGS_DECAYTIMESCALE |        \
-                                                 EAXREVERBFLAGS_REFLECTIONSSCALE |      \
-                                                 EAXREVERBFLAGS_REFLECTIONSDELAYSCALE | \
-                                                 EAXREVERBFLAGS_REVERBSCALE |           \
-                                                 EAXREVERBFLAGS_REVERBDELAYSCALE |      \
-                                                 EAXREVERBFLAGS_DECAYHFLIMIT)
-////////////////////////////////////////////////////////////////////////////
-
-
-
-
-////////////////////////////////////////////////////////////////////////////
-
-//          New Effect Types
-
-////////////////////////////////////////////////////////////////////////////
-
-
-////////////////////////////////////////////////////////////////////////////
-// AGC Compressor Effect
-
-// EAX AGC COMPRESSOR {BFB7A01E-7825-4039-927F-3AABDA0C560}
-
-DEFINE_GUID(EAX_AGCCOMPRESSOR_EFFECT,
-    0xbfb7a01e,
-    0x7825,
-    0x4039,
-    0x92, 0x7f, 0x3, 0xaa, 0xbd, 0xa0, 0xc5, 0x60);
-
-// AGC Compressor properties
-typedef enum
-{
-    EAXAGCCOMPRESSOR_NONE,
-    EAXAGCCOMPRESSOR_ALLPARAMETERS,
-    EAXAGCCOMPRESSOR_ONOFF
-} EAXAGCCOMPRESSOR_PROPERTY;
-
-// OR these flags with property id
-#define EAXAGCCOMPRESSOR_IMMEDIATE 0x00000000 // changes take effect immediately
-#define EAXAGCCOMPRESSOR_DEFERRED  0x80000000 // changes take effect later
-#define EAXAGCCOMPRESSOR_COMMITDEFERREDSETTINGS (EAXAGCCOMPRESSOR_NONE | \
-                                                 EAXAGCCOMPRESSOR_IMMEDIATE)
-
-// Use this structure for EAXAGCCOMPRESSOR_ALLPARAMETERS
-typedef struct _EAXAGCCOMPRESSORPROPERTIES
-{
-    unsigned long ulOnOff;   // Switch Compressor on or off
-} EAXAGCCOMPRESSORPROPERTIES, *LPEAXAGCCOMPRESSORPROPERTIES;
-
-// Property ranges and defaults:
-
-#define EAXAGCCOMPRESSOR_MINONOFF           0
-#define EAXAGCCOMPRESSOR_MAXONOFF           1
-#define EAXAGCCOMPRESSOR_DEFAULTONOFF       1
-
-////////////////////////////////////////////////////////////////////////////
-
-
-////////////////////////////////////////////////////////////////////////////
-// Autowah Effect
-
-// EAX AUTOWAH {EC3130C0-AC7A-11D2-88DD-A024D13CE1}
-DEFINE_GUID(EAX_AUTOWAH_EFFECT, 
-    0xec3130c0,
-    0xac7a,
-    0x11d2,
-    0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1);
-
-// Autowah properties
-typedef enum
-{
-    EAXAUTOWAH_NONE,
-    EAXAUTOWAH_ALLPARAMETERS,
-    EAXAUTOWAH_ATTACKTIME,
-    EAXAUTOWAH_RELEASETIME,
-    EAXAUTOWAH_RESONANCE,
-    EAXAUTOWAH_PEAKLEVEL
-} EAXAUTOWAH_PROPERTY;
-
-// OR these flags with property id
-#define EAXAUTOWAH_IMMEDIATE 0x00000000 // changes take effect immediately
-#define EAXAUTOWAH_DEFERRED  0x80000000 // changes take effect later
-#define EAXAUTOWAH_COMMITDEFERREDSETTINGS (EAXAUTOWAH_NONE | \
-                                           EAXAUTOWAH_IMMEDIATE)
-
-// Use this structure for EAXAUTOWAH_ALLPARAMETERS
-typedef struct _EAXAUTOWAHPROPERTIES
-{
-    float   flAttackTime;                // Attack time (seconds)
-    float   flReleaseTime;          // Release time (seconds)
-    long    lResonance;             // Resonance (mB)
-    long    lPeakLevel;             // Peak level (mB)
-} EAXAUTOWAHPROPERTIES, *LPEAXAUTOWAHPROPERTIES;
-
-// Property ranges and defaults:
-
-#define EAXAUTOWAH_MINATTACKTIME            0.0001f 
-#define EAXAUTOWAH_MAXATTACKTIME            1.0f
-#define EAXAUTOWAH_DEFAULTATTACKTIME        0.06f
-
-#define EAXAUTOWAH_MINRELEASETIME           0.0001f
-#define EAXAUTOWAH_MAXRELEASETIME           1.0f
-#define EAXAUTOWAH_DEFAULTRELEASETIME       0.06f
-
-#define EAXAUTOWAH_MINRESONANCE             600     
-#define EAXAUTOWAH_MAXRESONANCE             6000
-#define EAXAUTOWAH_DEFAULTRESONANCE         6000
-
-#define EAXAUTOWAH_MINPEAKLEVEL             (-9000)
-#define EAXAUTOWAH_MAXPEAKLEVEL             9000
-#define EAXAUTOWAH_DEFAULTPEAKLEVEL         2100
-
-////////////////////////////////////////////////////////////////////////////
-
-
-////////////////////////////////////////////////////////////////////////////
-// Chorus Effect
-
-// EAX CHORUS {DE6D6FE0-AC79-11D2-88DD-A024D13CE1}
-
-DEFINE_GUID(EAX_CHORUS_EFFECT,
-    0xde6d6fe0,
-    0xac79,
-    0x11d2,
-    0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1);
-
-
-// Chorus properties
-typedef enum
-{
-    EAXCHORUS_NONE,
-    EAXCHORUS_ALLPARAMETERS,
-    EAXCHORUS_WAVEFORM,
-    EAXCHORUS_PHASE,
-    EAXCHORUS_RATE,
-    EAXCHORUS_DEPTH,
-    EAXCHORUS_FEEDBACK,
-    EAXCHORUS_DELAY
-} EAXCHORUS_PROPERTY;
-
-// OR these flags with property id
-#define EAXCHORUS_IMMEDIATE 0x00000000 // changes take effect immediately
-#define EAXCHORUS_DEFERRED  0x80000000 // changes take effect later
-#define EAXCHORUS_COMMITDEFERREDSETTINGS (EAXCHORUS_NONE | \
-                                          EAXCHORUS_IMMEDIATE)
-
-// used by EAXCHORUS_WAVEFORM
-enum
-{
-    EAX_CHORUS_SINUSOID,
-    EAX_CHORUS_TRIANGLE
-};
-
-// Use this structure for EAXCHORUS_ALLPARAMETERS
-typedef struct _EAXCHORUSPROPERTIES
-{
-    unsigned long   ulWaveform;      // Waveform selector - see enum above
-    long            lPhase;         // Phase (Degrees)
-    float           flRate;         // Rate (Hz)
-    float           flDepth;        // Depth (0 to 1)
-    float           flFeedback;     // Feedback (-1 to 1)
-    float           flDelay;        // Delay (seconds)
-} EAXCHORUSPROPERTIES, *LPEAXCHORUSPROPERTIES;
-
-// Property ranges and defaults:
-
-#define EAXCHORUS_MINWAVEFORM               0
-#define EAXCHORUS_MAXWAVEFORM               1
-#define EAXCHORUS_DEFAULTWAVEFORM           1
-
-#define EAXCHORUS_MINPHASE              (-180)
-#define EAXCHORUS_MAXPHASE              180
-#define EAXCHORUS_DEFAULTPHASE          90
-
-#define EAXCHORUS_MINRATE               0.0f
-#define EAXCHORUS_MAXRATE               10.0f
-#define EAXCHORUS_DEFAULTRATE           1.1f
-
-#define EAXCHORUS_MINDEPTH              0.0f
-#define EAXCHORUS_MAXDEPTH              1.0f
-#define EAXCHORUS_DEFAULTDEPTH          0.1f
-
-#define EAXCHORUS_MINFEEDBACK           (-1.0f)
-#define EAXCHORUS_MAXFEEDBACK           1.0f
-#define EAXCHORUS_DEFAULTFEEDBACK       0.25f
-
-#define EAXCHORUS_MINDELAY              0.0f
-#define EAXCHORUS_MAXDELAY              0.016f
-#define EAXCHORUS_DEFAULTDELAY          0.016f
-
-////////////////////////////////////////////////////////////////////////////
-
-
-////////////////////////////////////////////////////////////////////////////
-// Distortion Effect
-
-// EAX DISTORTION {975A4CE0-AC7E-11D2-88DD-A024D13CE1}
-
-DEFINE_GUID(EAX_DISTORTION_EFFECT,
-    0x975a4ce0,
-    0xac7e,
-    0x11d2,
-    0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1);
-
-// Distortion properties
-typedef enum
-{
-    EAXDISTORTION_NONE,
-    EAXDISTORTION_ALLPARAMETERS,
-    EAXDISTORTION_EDGE,
-    EAXDISTORTION_GAIN,
-    EAXDISTORTION_LOWPASSCUTOFF,
-    EAXDISTORTION_EQCENTER,
-    EAXDISTORTION_EQBANDWIDTH
-} EAXDISTORTION_PROPERTY;
-
-// OR these flags with property id
-#define EAXDISTORTION_IMMEDIATE 0x00000000 // changes take effect immediately
-#define EAXDISTORTION_DEFERRED  0x80000000 // changes take effect later
-#define EAXDISTORTION_COMMITDEFERREDSETTINGS (EAXDISTORTION_NONE | \
-                                              EAXDISTORTION_IMMEDIATE)
-
-// Use this structure for EAXDISTORTION_ALLPARAMETERS
-typedef struct _EAXDISTORTIONPROPERTIES
-{
-    float   flEdge;             // Controls the shape of the distortion (0 to 1)
-    long    lGain;              // Controls the post distortion gain (mB)
-    float   flLowPassCutOff;    // Controls the cut-off of the filter pre-distortion (Hz)
-    float   flEQCenter;         // Controls the center frequency of the EQ post-distortion (Hz)
-    float   flEQBandwidth;      // Controls the bandwidth of the EQ post-distortion (Hz)
-} EAXDISTORTIONPROPERTIES, *LPEAXDISTORTIONPROPERTIES;
-
-// Property ranges and defaults:
-
-#define EAXDISTORTION_MINEDGE               0.0f
-#define EAXDISTORTION_MAXEDGE               1.0f
-#define EAXDISTORTION_DEFAULTEDGE           0.2f
-
-#define EAXDISTORTION_MINGAIN               (-6000)
-#define EAXDISTORTION_MAXGAIN               0
-#define EAXDISTORTION_DEFAULTGAIN           (-2600)
-
-#define EAXDISTORTION_MINLOWPASSCUTOFF      80.0f
-#define EAXDISTORTION_MAXLOWPASSCUTOFF      24000.0f
-#define EAXDISTORTION_DEFAULTLOWPASSCUTOFF  8000.0f
-
-#define EAXDISTORTION_MINEQCENTER           80.0f
-#define EAXDISTORTION_MAXEQCENTER           24000.0f
-#define EAXDISTORTION_DEFAULTEQCENTER       3600.0f
-
-#define EAXDISTORTION_MINEQBANDWIDTH        80.0f
-#define EAXDISTORTION_MAXEQBANDWIDTH        24000.0f
-#define EAXDISTORTION_DEFAULTEQBANDWIDTH    3600.0f
-
-////////////////////////////////////////////////////////////////////////////
-
-
-////////////////////////////////////////////////////////////////////////////
-// Echo Effect
-
-// EAX ECHO {E9F1BC0-AC82-11D2-88DD-A024D13CE1}
-
-DEFINE_GUID(EAX_ECHO_EFFECT,
-    0xe9f1bc0,
-    0xac82,
-    0x11d2,
-    0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1);
-
-// Echo properties
-typedef enum
-{
-    EAXECHO_NONE,
-    EAXECHO_ALLPARAMETERS,
-    EAXECHO_DELAY,
-    EAXECHO_LRDELAY,
-    EAXECHO_DAMPING,
-    EAXECHO_FEEDBACK,
-    EAXECHO_SPREAD
-} EAXECHO_PROPERTY;
-
-// OR these flags with property id
-#define EAXECHO_IMMEDIATE 0x00000000 // changes take effect immediately
-#define EAXECHO_DEFERRED  0x80000000 // changes take effect later
-#define EAXECHO_COMMITDEFERREDSETTINGS (EAXECHO_NONE | \
-                                        EAXECHO_IMMEDIATE)
-
-// Use this structure for EAXECHO_ALLPARAMETERS
-typedef struct _EAXECHOPROPERTIES
-{
-    float   flDelay;            // Controls the initial delay time (seconds)
-    float   flLRDelay;          // Controls the delay time between the first and second taps (seconds)
-    float   flDamping;          // Controls a low-pass filter that dampens the echoes (0 to 1)
-    float   flFeedback;         // Controls the duration of echo repetition (0 to 1)
-    float   flSpread;           // Controls the left-right spread of the echoes
-} EAXECHOPROPERTIES, *LPEAXECHOPROPERTIES;
-
-// Property ranges and defaults:
-                    
-#define EAXECHO_MINDAMPING          0.0f
-#define EAXECHO_MAXDAMPING          0.99f
-#define EAXECHO_DEFAULTDAMPING      0.5f
-
-#define EAXECHO_MINDELAY            0.0f
-#define EAXECHO_MAXDELAY            0.207f
-#define EAXECHO_DEFAULTDELAY        0.1f
-
-#define EAXECHO_MINLRDELAY          0.0f
-#define EAXECHO_MAXLRDELAY          0.404f
-#define EAXECHO_DEFAULTLRDELAY      0.1f
-
-#define EAXECHO_MINFEEDBACK         0.0f
-#define EAXECHO_MAXFEEDBACK         1.0f
-#define EAXECHO_DEFAULTFEEDBACK     0.5f
-
-#define EAXECHO_MINSPREAD           (-1.0f)
-#define EAXECHO_MAXSPREAD             1.0f
-#define EAXECHO_DEFAULTSPREAD       (-1.0f)
-
-////////////////////////////////////////////////////////////////////////////
-
-
-////////////////////////////////////////////////////////////////////////////
-// Equalizer Effect
-
-// EAX EQUALIZER {65F94CE0-9793-11D3-939D-C0F02DD6F0}
-
-DEFINE_GUID(EAX_EQUALIZER_EFFECT,
-    0x65f94ce0,
-    0x9793,
-    0x11d3,
-    0x93, 0x9d, 0x0, 0xc0, 0xf0, 0x2d, 0xd6, 0xf0);
-
-
-// Equalizer properties
-typedef enum
-{
-    EAXEQUALIZER_NONE,
-    EAXEQUALIZER_ALLPARAMETERS,
-    EAXEQUALIZER_LOWGAIN,
-    EAXEQUALIZER_LOWCUTOFF,
-    EAXEQUALIZER_MID1GAIN,
-    EAXEQUALIZER_MID1CENTER,
-    EAXEQUALIZER_MID1WIDTH,
-    EAXEQUALIZER_MID2GAIN,
-    EAXEQUALIZER_MID2CENTER,
-    EAXEQUALIZER_MID2WIDTH,
-    EAXEQUALIZER_HIGHGAIN,
-    EAXEQUALIZER_HIGHCUTOFF
-} EAXEQUALIZER_PROPERTY;
-
-// OR these flags with property id
-#define EAXEQUALIZER_IMMEDIATE 0x00000000 // changes take effect immediately
-#define EAXEQUALIZER_DEFERRED  0x80000000 // changes take effect later
-#define EAXEQUALIZER_COMMITDEFERREDSETTINGS (EAXEQUALIZER_NONE | \
-                                             EAXEQUALIZER_IMMEDIATE)
-
-// Use this structure for EAXEQUALIZER_ALLPARAMETERS
-typedef struct _EAXEQUALIZERPROPERTIES
-{
-    long    lLowGain;           // (mB)
-    float   flLowCutOff;        // (Hz)
-    long    lMid1Gain;          // (mB)
-    float   flMid1Center;       // (Hz)
-    float   flMid1Width;        // (octaves)
-    long    lMid2Gain;          // (mB)
-    float   flMid2Center;       // (Hz)
-    float   flMid2Width;        // (octaves)
-    long    lHighGain;          // (mB)
-    float   flHighCutOff;       // (Hz)
-} EAXEQUALIZERPROPERTIES, *LPEAXEQUALIZERPROPERTIES;
-
-// Property ranges and defaults:
-
-#define EAXEQUALIZER_MINLOWGAIN         (-1800)
-#define EAXEQUALIZER_MAXLOWGAIN         1800
-#define EAXEQUALIZER_DEFAULTLOWGAIN     0
-
-#define EAXEQUALIZER_MINLOWCUTOFF       50.0f
-#define EAXEQUALIZER_MAXLOWCUTOFF       800.0f
-#define EAXEQUALIZER_DEFAULTLOWCUTOFF   200.0f
-
-#define EAXEQUALIZER_MINMID1GAIN        (-1800)
-#define EAXEQUALIZER_MAXMID1GAIN        1800
-#define EAXEQUALIZER_DEFAULTMID1GAIN    0
-
-#define EAXEQUALIZER_MINMID1CENTER      200.0f
-#define EAXEQUALIZER_MAXMID1CENTER      3000.0f
-#define EAXEQUALIZER_DEFAULTMID1CENTER  500.0f
-
-#define EAXEQUALIZER_MINMID1WIDTH       0.01f
-#define EAXEQUALIZER_MAXMID1WIDTH       1.0f
-#define EAXEQUALIZER_DEFAULTMID1WIDTH   1.0f
-
-#define EAXEQUALIZER_MINMID2GAIN        (-1800)
-#define EAXEQUALIZER_MAXMID2GAIN        1800
-#define EAXEQUALIZER_DEFAULTMID2GAIN    0
-
-#define EAXEQUALIZER_MINMID2CENTER      1000.0f
-#define EAXEQUALIZER_MAXMID2CENTER      8000.0f
-#define EAXEQUALIZER_DEFAULTMID2CENTER  3000.0f
-
-#define EAXEQUALIZER_MINMID2WIDTH       0.01f
-#define EAXEQUALIZER_MAXMID2WIDTH       1.0f
-#define EAXEQUALIZER_DEFAULTMID2WIDTH   1.0f
-
-#define EAXEQUALIZER_MINHIGHGAIN        (-1800)
-#define EAXEQUALIZER_MAXHIGHGAIN        1800
-#define EAXEQUALIZER_DEFAULTHIGHGAIN    0
-
-#define EAXEQUALIZER_MINHIGHCUTOFF      4000.0f
-#define EAXEQUALIZER_MAXHIGHCUTOFF      16000.0f
-#define EAXEQUALIZER_DEFAULTHIGHCUTOFF  6000.0f
-
-////////////////////////////////////////////////////////////////////////////
-
-
-////////////////////////////////////////////////////////////////////////////
-// Flanger Effect
-
-// EAX FLANGER {A70007C0-7D2-11D3-9B1E-A024D13CE1}
-
-DEFINE_GUID(EAX_FLANGER_EFFECT,
-    0xa70007c0,
-    0x7d2,
-    0x11d3,
-    0x9b, 0x1e, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1);
-
-// Flanger properties
-typedef enum
-{
-    EAXFLANGER_NONE,
-    EAXFLANGER_ALLPARAMETERS,
-    EAXFLANGER_WAVEFORM,
-    EAXFLANGER_PHASE,
-    EAXFLANGER_RATE,
-    EAXFLANGER_DEPTH,
-    EAXFLANGER_FEEDBACK,
-    EAXFLANGER_DELAY
-} EAXFLANGER_PROPERTY;
-
-// OR these flags with property id
-#define EAXFLANGER_IMMEDIATE 0x00000000 // changes take effect immediately
-#define EAXFLANGER_DEFERRED  0x80000000 // changes take effect later
-#define EAXFLANGER_COMMITDEFERREDSETTINGS (EAXFLANGER_NONE | \
-                                           EAXFLANGER_IMMEDIATE)
-
-// used by EAXFLANGER_WAVEFORM
-enum
-{
-    EAX_FLANGER_SINUSOID,
-    EAX_FLANGER_TRIANGLE
-};
-
-// Use this structure for EAXFLANGER_ALLPARAMETERS
-typedef struct _EAXFLANGERPROPERTIES
-{
-    unsigned long   ulWaveform;  // Waveform selector - see enum above
-    long            lPhase;     // Phase (Degrees)
-    float           flRate;     // Rate (Hz)
-    float           flDepth;    // Depth (0 to 1)
-    float           flFeedback; // Feedback (0 to 1)
-    float           flDelay;    // Delay (seconds)
-} EAXFLANGERPROPERTIES, *LPEAXFLANGERPROPERTIES;
-
-// Property ranges and defaults:
-
-#define EAXFLANGER_MINWAVEFORM              0
-#define EAXFLANGER_MAXWAVEFORM              1
-#define EAXFLANGER_DEFAULTWAVEFORM          1
-
-#define EAXFLANGER_MINPHASE             (-180)
-#define EAXFLANGER_MAXPHASE             180
-#define EAXFLANGER_DEFAULTPHASE         0
-
-#define EAXFLANGER_MINRATE              0.0f
-#define EAXFLANGER_MAXRATE              10.0f
-#define EAXFLANGER_DEFAULTRATE          0.27f
-
-#define EAXFLANGER_MINDEPTH             0.0f
-#define EAXFLANGER_MAXDEPTH             1.0f
-#define EAXFLANGER_DEFAULTDEPTH         1.0f
-
-#define EAXFLANGER_MINFEEDBACK          (-1.0f)
-#define EAXFLANGER_MAXFEEDBACK          1.0f
-#define EAXFLANGER_DEFAULTFEEDBACK      (-0.5f)
-
-#define EAXFLANGER_MINDELAY             0.0f
-#define EAXFLANGER_MAXDELAY             0.004f
-#define EAXFLANGER_DEFAULTDELAY         0.002f
-
-////////////////////////////////////////////////////////////////////////////
-
-
-////////////////////////////////////////////////////////////////////////////
-// Frequency Shifter Effect
-
-// EAX FREQUENCY SHIFTER {DC3E1880-9212-11D3-939D-C0F02DD6F0}
-
-DEFINE_GUID(EAX_FREQUENCYSHIFTER_EFFECT,
-    0xdc3e1880,
-    0x9212,
-    0x11d3,
-    0x93, 0x9d, 0x0, 0xc0, 0xf0, 0x2d, 0xd6, 0xf0);
-
-// Frequency Shifter properties
-typedef enum
-{
-    EAXFREQUENCYSHIFTER_NONE,
-    EAXFREQUENCYSHIFTER_ALLPARAMETERS,
-    EAXFREQUENCYSHIFTER_FREQUENCY,
-    EAXFREQUENCYSHIFTER_LEFTDIRECTION,
-    EAXFREQUENCYSHIFTER_RIGHTDIRECTION
-} EAXFREQUENCYSHIFTER_PROPERTY;
-
-// OR these flags with property id
-#define EAXFREQUENCYSHIFTER_IMMEDIATE 0x00000000 // changes take effect immediately
-#define EAXFREQUENCYSHIFTER_DEFERRED  0x80000000 // changes take effect later
-#define EAXFREQUENCYSHIFTER_COMMITDEFERREDSETTINGS (EAXFREQUENCYSHIFTER_NONE | \
-                                                    EAXFREQUENCYSHIFTER_IMMEDIATE)
-
-// used by EAXFREQUENCYSHIFTER_LEFTDIRECTION and EAXFREQUENCYSHIFTER_RIGHTDIRECTION 
-enum
-{
-    EAX_FREQUENCYSHIFTER_DOWN,
-    EAX_FREQUENCYSHIFTER_UP,
-    EAX_FREQUENCYSHIFTER_OFF
-};
-
-// Use this structure for EAXFREQUENCYSHIFTER_ALLPARAMETERS
-typedef struct _EAXFREQUENCYSHIFTERPROPERTIES
-{
-    float           flFrequency;        // (Hz)
-    unsigned long   ulLeftDirection;     // see enum above
-    unsigned long   ulRightDirection;    // see enum above
-} EAXFREQUENCYSHIFTERPROPERTIES, *LPEAXFREQUENCYSHIFTERPROPERTIES;
-
-// Property ranges and defaults:
-
-#define EAXFREQUENCYSHIFTER_MINFREQUENCY            0.0f
-#define EAXFREQUENCYSHIFTER_MAXFREQUENCY            24000.0f
-#define EAXFREQUENCYSHIFTER_DEFAULTFREQUENCY        0.0f
-
-#define EAXFREQUENCYSHIFTER_MINLEFTDIRECTION        0
-#define EAXFREQUENCYSHIFTER_MAXLEFTDIRECTION        2
-#define EAXFREQUENCYSHIFTER_DEFAULTLEFTDIRECTION    0
-
-#define EAXFREQUENCYSHIFTER_MINRIGHTDIRECTION       0
-#define EAXFREQUENCYSHIFTER_MAXRIGHTDIRECTION       2
-#define EAXFREQUENCYSHIFTER_DEFAULTRIGHTDIRECTION   0
-
-////////////////////////////////////////////////////////////////////////////
-
-
-////////////////////////////////////////////////////////////////////////////
-// Vocal Morpher Effect
-
-// EAX VOCAL MORPHER {E41CF10C-3383-11D2-88DD-A024D13CE1}
-
-DEFINE_GUID(EAX_VOCALMORPHER_EFFECT, 
-    0xe41cf10c,
-    0x3383,
-    0x11d2,
-    0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1);
-
-// Vocal Morpher properties
-typedef enum
-{
-    EAXVOCALMORPHER_NONE,
-    EAXVOCALMORPHER_ALLPARAMETERS,
-    EAXVOCALMORPHER_PHONEMEA,
-    EAXVOCALMORPHER_PHONEMEACOARSETUNING,
-    EAXVOCALMORPHER_PHONEMEB,
-    EAXVOCALMORPHER_PHONEMEBCOARSETUNING,
-    EAXVOCALMORPHER_WAVEFORM,
-    EAXVOCALMORPHER_RATE
-} EAXVOCALMORPHER_PROPERTY;
-
-// OR these flags with property id
-#define EAXVOCALMORPHER_IMMEDIATE 0x00000000 // changes take effect immediately
-#define EAXVOCALMORPHER_DEFERRED  0x80000000 // changes take effect later
-#define EAXVOCALMORPHER_COMMITDEFERREDSETTINGS (EAXVOCALMORPHER_NONE | \
-                                                EAXVOCALMORPHER_IMMEDIATE)
-
-// used by EAXVOCALMORPHER_PHONEMEA and EAXVOCALMORPHER_PHONEMEB
-enum
-{
-    A, E, I, O, U, AA, AE, AH, AO, EH, ER, IH, IY, UH, UW, B, D, F, G,
-    J, K, L, M, N, P, R, S, T, V, Z
-};
-
-// used by EAXVOCALMORPHER_WAVEFORM
-enum
-{
-    EAX_VOCALMORPHER_SINUSOID,
-    EAX_VOCALMORPHER_TRIANGLE,
-    EAX_VOCALMORPHER_SAWTOOTH
-};
-
-// Use this structure for EAXVOCALMORPHER_ALLPARAMETERS
-typedef struct _EAXVOCALMORPHERPROPERTIES
-{
-    unsigned long   ulPhonemeA;              // see enum above
-    long            lPhonemeACoarseTuning;  // (semitones)
-    unsigned long   ulPhonemeB;              // see enum above
-    long            lPhonemeBCoarseTuning;  // (semitones)
-    unsigned long   ulWaveform;              // Waveform selector - see enum above
-    float           flRate;                 // (Hz)
-} EAXVOCALMORPHERPROPERTIES, *LPEAXVOCALMORPHERPROPERTIES;
-
-// Property ranges and defaults:
-
-#define EAXVOCALMORPHER_MINPHONEMEA                 0
-#define EAXVOCALMORPHER_MAXPHONEMEA                 29
-#define EAXVOCALMORPHER_DEFAULTPHONEMEA             0
-
-#define EAXVOCALMORPHER_MINPHONEMEACOARSETUNING     (-24)
-#define EAXVOCALMORPHER_MAXPHONEMEACOARSETUNING     24
-#define EAXVOCALMORPHER_DEFAULTPHONEMEACOARSETUNING 0
-
-#define EAXVOCALMORPHER_MINPHONEMEB                 0
-#define EAXVOCALMORPHER_MAXPHONEMEB                 29
-#define EAXVOCALMORPHER_DEFAULTPHONEMEB             10
-
-#define EAXVOCALMORPHER_MINPHONEMEBCOARSETUNING     (-24)
-#define EAXVOCALMORPHER_MAXPHONEMEBCOARSETUNING     24
-#define EAXVOCALMORPHER_DEFAULTPHONEMEBCOARSETUNING 0
-
-#define EAXVOCALMORPHER_MINWAVEFORM                 0
-#define EAXVOCALMORPHER_MAXWAVEFORM                 2
-#define EAXVOCALMORPHER_DEFAULTWAVEFORM             0
-
-#define EAXVOCALMORPHER_MINRATE                     0.0f
-#define EAXVOCALMORPHER_MAXRATE                     10.0f
-#define EAXVOCALMORPHER_DEFAULTRATE                 1.41f
-
-////////////////////////////////////////////////////////////////////////////
-
-
-////////////////////////////////////////////////////////////////////////////
-// Pitch Shifter Effect
-
-// EAX PITCH SHIFTER {E7905100-AFB2-11D2-88DD-A024D13CE1}
-
-DEFINE_GUID(EAX_PITCHSHIFTER_EFFECT,
-    0xe7905100,
-    0xafb2,
-    0x11d2,
-    0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1);
-
-// Pitch Shifter properties
-typedef enum
-{
-    EAXPITCHSHIFTER_NONE,
-    EAXPITCHSHIFTER_ALLPARAMETERS,
-    EAXPITCHSHIFTER_COARSETUNE,
-    EAXPITCHSHIFTER_FINETUNE
-} EAXPITCHSHIFTER_PROPERTY;
-
-// OR these flags with property id
-#define EAXPITCHSHIFTER_IMMEDIATE 0x00000000 // changes take effect immediately
-#define EAXPITCHSHIFTER_DEFERRED  0x80000000 // changes take effect later
-#define EAXPITCHSHIFTER_COMMITDEFERREDSETTINGS (EAXPITCHSHIFTER_NONE | \
-                                                EAXPITCHSHIFTER_IMMEDIATE)
-
-// Use this structure for EAXPITCHSHIFTER_ALLPARAMETERS
-typedef struct _EAXPITCHSHIFTERPROPERTIES
-{
-    long    lCoarseTune;    // Amount of pitch shift (semitones)
-    long    lFineTune;      // Amount of pitch shift (cents)
-} EAXPITCHSHIFTERPROPERTIES, *LPEAXPITCHSHIFTERPROPERTIES;
-
-// Property ranges and defaults:
-
-#define EAXPITCHSHIFTER_MINCOARSETUNE       (-12)
-#define EAXPITCHSHIFTER_MAXCOARSETUNE       12
-#define EAXPITCHSHIFTER_DEFAULTCOARSETUNE   12
-
-#define EAXPITCHSHIFTER_MINFINETUNE         (-50)
-#define EAXPITCHSHIFTER_MAXFINETUNE         50
-#define EAXPITCHSHIFTER_DEFAULTFINETUNE     0
-
-////////////////////////////////////////////////////////////////////////////
-
-
-////////////////////////////////////////////////////////////////////////////
-// Ring Modulator Effect
-
-// EAX RING MODULATOR {B89FE60-AFB5-11D2-88DD-A024D13CE1}
-
-DEFINE_GUID(EAX_RINGMODULATOR_EFFECT,
-    0xb89fe60,
-    0xafb5,
-    0x11d2,
-    0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1);
-
-// Ring Modulator properties
-typedef enum
-{
-    EAXRINGMODULATOR_NONE,
-    EAXRINGMODULATOR_ALLPARAMETERS,
-    EAXRINGMODULATOR_FREQUENCY,
-    EAXRINGMODULATOR_HIGHPASSCUTOFF,
-    EAXRINGMODULATOR_WAVEFORM
-} EAXRINGMODULATOR_PROPERTY;
-
-// OR these flags with property id
-#define EAXRINGMODULATOR_IMMEDIATE 0x00000000 // changes take effect immediately
-#define EAXRINGMODULATOR_DEFERRED  0x80000000 // changes take effect later
-#define EAXRINGMODULATOR_COMMITDEFERREDSETTINGS (EAXRINGMODULATOR_NONE | \
-                                                 EAXRINGMODULATOR_IMMEDIATE)
-
-// used by EAXRINGMODULATOR_WAVEFORM
-enum
-{
-    EAX_RINGMODULATOR_SINUSOID,
-    EAX_RINGMODULATOR_SAWTOOTH,
-    EAX_RINGMODULATOR_SQUARE
-};
-
-// Use this structure for EAXRINGMODULATOR_ALLPARAMETERS
-typedef struct _EAXRINGMODULATORPROPERTIES
-{
-    float           flFrequency;        // Frequency of modulation (Hz)
-    float           flHighPassCutOff;   // Cut-off frequency of high-pass filter (Hz)
-    unsigned long   ulWaveform;          // Waveform selector - see enum above
-} EAXRINGMODULATORPROPERTIES, *LPEAXRINGMODULATORPROPERTIES;
-
-// Property ranges and defaults:
-
-#define EAXRINGMODULATOR_MINFREQUENCY           0.0f
-#define EAXRINGMODULATOR_MAXFREQUENCY           8000.0f
-#define EAXRINGMODULATOR_DEFAULTFREQUENCY       440.0f
-
-#define EAXRINGMODULATOR_MINHIGHPASSCUTOFF      0.0f
-#define EAXRINGMODULATOR_MAXHIGHPASSCUTOFF      24000.0f
-#define EAXRINGMODULATOR_DEFAULTHIGHPASSCUTOFF  800.0f
-
-#define EAXRINGMODULATOR_MINWAVEFORM            0
-#define EAXRINGMODULATOR_MAXWAVEFORM            2
-#define EAXRINGMODULATOR_DEFAULTWAVEFORM        0
-
-////////////////////////////////////////////////////////////////////////////
-
-#pragma pack(pop)
-
-#ifdef __cplusplus
-}
-#endif // __cplusplus
-
-#endif
diff --git a/neo/openal/include/eax5.h b/neo/openal/include/eax5.h
deleted file mode 100644
index e4cba6d9..00000000
--- a/neo/openal/include/eax5.h
+++ /dev/null
@@ -1,1792 +0,0 @@
-/*******************************************************************\
-*                                                                   *
-*  EAX.H - Environmental Audio Extensions version 5.0               *
-*          for OpenAL and DirectSound3D                             *
-*                                                                   *
-*          File revision 0.9.6 version a (July 14th 2004)           *
-*          EAX 5.0 API Spec version 1.5                             *
-*                                                                   *
-\*******************************************************************/
-
-#ifndef EAX_H_INCLUDED
-#define EAX_H_INCLUDED
-
-#ifdef __cplusplus
-extern "C" {
-#endif // __cplusplus
-
-#ifndef OPENAL
-    #include <dsound.h>
-
-    /*
-     * EAX Unified Interface (using Direct X 7) {4FF53B81-1CE0-11d3-AAB8-00A0C95949D5}
-     */
-    DEFINE_GUID(CLSID_EAXDirectSound, 
-        0x4ff53b81, 
-        0x1ce0, 
-        0x11d3,
-        0xaa, 0xb8, 0x0, 0xa0, 0xc9, 0x59, 0x49, 0xd5);
-        
-   /*
-    * EAX Unified Interface (using Direct X 8) {CA503B60-B176-11d4-A094-D0C0BF3A560C}
-    */
-    DEFINE_GUID(CLSID_EAXDirectSound8, 
-        0xca503b60,
-        0xb176,
-        0x11d4,
-        0xa0, 0x94, 0xd0, 0xc0, 0xbf, 0x3a, 0x56, 0xc);
-
-    
-
-#ifdef DIRECTSOUND_VERSION        
-#if DIRECTSOUND_VERSION >= 0x0800
-    __declspec(dllimport) HRESULT WINAPI EAXDirectSoundCreate8(GUID*, LPDIRECTSOUND8*, IUnknown FAR *);
-    typedef HRESULT (FAR PASCAL *LPEAXDIRECTSOUNDCREATE8)(GUID*, LPDIRECTSOUND8*, IUnknown FAR*);
-#endif
-#endif
-    
-    __declspec(dllimport) HRESULT WINAPI EAXDirectSoundCreate(GUID*, LPDIRECTSOUND*, IUnknown FAR *);
-    typedef HRESULT (FAR PASCAL *LPEAXDIRECTSOUNDCREATE)(GUID*, LPDIRECTSOUND*, IUnknown FAR*);
-
-#else // OPENAL
-    #include <al.h>
-    
-    #ifndef GUID_DEFINED
-        #define GUID_DEFINED
-        typedef struct _GUID
-        {
-            unsigned long Data1;
-            unsigned short Data2;
-            unsigned short Data3;
-            unsigned char Data4[8];
-        } GUID;
-    #endif // GUID_DEFINED
-
-    #ifndef DEFINE_GUID
-        #ifndef INITGUID
-            #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
-                    extern const GUID /*FAR*/ name
-        #else
-            #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
-                    extern const GUID name = { l, w1, w2, { b1, b2,  b3,  b4,  b5,  b6,  b7,  b8 } }
-        #endif // INITGUID
-    #endif // DEFINE_GUID
-
-    /*
-     * EAX OpenAL Extensions
-     */
-    typedef ALenum (*EAXSet)(const GUID*, ALuint, ALuint, ALvoid*, ALuint);
-    typedef ALenum (*EAXGet)(const GUID*, ALuint, ALuint, ALvoid*, ALuint);
-	typedef ALboolean (*EAXSetBufferMode)(ALsizei, ALuint*, ALint);
-	typedef ALenum (*EAXGetBufferMode)(ALuint, ALint*);
-#endif
-
-#pragma pack(push, 4)
-
-
-
-
-////////////////////////////////////////////////////////////////////////////
-// Constants
-
-#define EAX_MAX_FXSLOTS 4
-#define EAX_MAX_ACTIVE_FXSLOTS 4
-
-// The EAX_NULL_GUID is used by EAXFXSLOT_LOADEFFECT, EAXCONTEXT_PRIMARYFXSLOTID
-// and EAXSOURCE_ACTIVEFXSLOTID
-
-// {00000000-0000-0000-0000-000000000000}
-DEFINE_GUID(EAX_NULL_GUID, 
-    0x00000000, 
-    0x0000, 
-    0x0000, 
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);
-
-// The EAX_PrimaryFXSlotID GUID is used by EAXSOURCE_ACTIVEFXSLOTID 
-// {F317866D-924C-450C-861B-E6DAA25E7C20}
-DEFINE_GUID(EAX_PrimaryFXSlotID, 
-    0xf317866d,
-    0x924c,
-    0x450c,
-    0x86, 0x1b, 0xe6, 0xda, 0xa2, 0x5e, 0x7c, 0x20);
-
-
-
-////////////////////////////////////////////////////////////////////////////
-
-    
-
-    
-////////////////////////////////////////////////////////////////////////////
-// Structures
-
-// Use this structure for EAXCONTEXT_EAXSESSION property
-#ifndef EAXSESSIONPROPERTIES_DEFINED
-#define EAXSESSIONPROPERTIES_DEFINED
-typedef struct _EAXSESSIONPROPERTIES
-{
-    unsigned long     ulEAXVersion;
-    unsigned long     ulMaxActiveSends;
-} EAXSESSIONPROPERTIES, *LPEAXSESSIONPROPERTIES; 
-#endif
-
-// Use this structure for EAXCONTEXT_ALL property.
-#ifndef EAXCONTEXTPROPERTIES_DEFINED
-#define EAXCONTEXTPROPERTIES_DEFINED
-typedef struct _EAXCONTEXTPROPERTIES
-{
-    GUID          guidPrimaryFXSlotID;
-    float         flDistanceFactor;
-    float         flAirAbsorptionHF;
-    float         flHFReference;
-	float         flMacroFXFactor;
-} EAXCONTEXTPROPERTIES, *LPEAXCONTEXTPROPERTIES; 
-#endif
-
-// Use this structure for EAXSOURCE_ALLPARAMETERS
-// - all levels are hundredths of decibels
-// - all delays are in seconds
-//
-// NOTE: This structure may change in future EAX versions.
-//       It is recommended to initialize fields by name:
-//              myBuffer.lDirect = 0;
-//              myBuffer.lDirectHF = -200;
-//              ...
-//              myBuffer.dwFlags = myFlags /* see EAXSOURCEFLAGS below */ ;
-//       instead of:
-//              myBuffer = { 0, -200, ... , 0x00000003 };
-//
-#ifndef EAXSOURCEPROPERTIES_DEFINED
-#define EAXSOURCEPROPERTIES_DEFINED
-typedef struct _EAXSOURCEPROPERTIES
-{
-    long          lDirect;                 // direct path level (at low and mid frequencies)
-    long          lDirectHF;               // relative direct path level at high frequencies
-    long          lRoom;                   // room effect level (at low and mid frequencies)
-    long          lRoomHF;                 // relative room effect level at high frequencies
-    long          lObstruction;            // main obstruction control (attenuation at high frequencies) 
-    float         flObstructionLFRatio;    // obstruction low-frequency level re. main control
-    long          lOcclusion;              // main occlusion control (attenuation at high frequencies)
-    float         flOcclusionLFRatio;      // occlusion low-frequency level re. main control
-    float         flOcclusionRoomRatio;    // relative occlusion control for room effect
-    float         flOcclusionDirectRatio;  // relative occlusion control for direct path
-    long          lExclusion;              // main exlusion control (attenuation at high frequencies)
-    float         flExclusionLFRatio;      // exclusion low-frequency level re. main control
-    long          lOutsideVolumeHF;        // outside sound cone level at high frequencies
-    float         flDopplerFactor;         // like DS3D flDopplerFactor but per source
-    float         flRolloffFactor;         // like DS3D flRolloffFactor but per source
-    float         flRoomRolloffFactor;     // like DS3D flRolloffFactor but for room effect
-    float         flAirAbsorptionFactor;   // multiplies EAXREVERB_AIRABSORPTIONHF
-    unsigned long ulFlags;                 // modifies the behavior of properties
-	float         flMacroFXFactor;         //###TODO### add comment here
-} EAXSOURCEPROPERTIES, *LPEAXSOURCEPROPERTIES;
-#endif
-
-
-// Use this structure for EAXSOURCE_ALL2DPARAMETERS
-// - all levels are hundredths of decibels
-// - all delays are in seconds
-//
-// NOTE: This structure may change in future EAX versions.
-//       It is recommended to initialize fields by name:
-//              myBuffer.lDirect = 0;
-//              myBuffer.lDirectHF = -200;
-//              ...
-//              myBuffer.dwFlags = myFlags /* see EAXSOURCEFLAGS below */ ;
-//       instead of:
-//              myBuffer = { 0, -200, ... , 0x00000003 };
-//
-#ifndef EAXSOURCE2DPROPERTIES_DEFINED
-#define EAXSOURCE2DPROPERTIES_DEFINED
-typedef struct _EAXSOURCE2DPROPERTIES
-{
-    long          lDirect;                 // direct path level (at low and mid frequencies)
-    long          lDirectHF;               // relative direct path level at high frequencies
-    long          lRoom;                   // room effect level (at low and mid frequencies)
-    long          lRoomHF;                 // relative room effect level at high frequencies
-    unsigned long ulFlags;                 // modifies the behavior of properties
-} EAXSOURCE2DPROPERTIES, *LPEAXSOURCE2DPROPERTIES;
-#endif
-
-
-// Use this structure for EAXSOURCE_ALLSENDPARAMETERS
-// - all levels are hundredths of decibels
-//
-#ifndef EAXSOURCEALLSENDPROPERTIES_DEFINED
-#define EAXSOURCEALLSENDPROPERTIES_DEFINED
-typedef struct _EAXSOURCEALLSENDPROPERTIES
-{
-	GUID          guidReceivingFXSlotID;
-	long          lSend;                   // send level (at low and mid frequencies)
-	long          lSendHF;                 // relative send level at high frequencies
-	long          lOcclusion;
-	float         flOcclusionLFRatio;
-	float         flOcclusionRoomRatio;
-	float         flOcclusionDirectRatio;
-	long          lExclusion; 
-	float         flExclusionLFRatio;
-} EAXSOURCEALLSENDPROPERTIES, *LPEAXSOURCEALLSENDPROPERTIES;
-#endif
-
-// Use this structure for EAXSOURCE_SPEAKERLEVELS
-// - level is in hundredths of decibels
-//
-#ifndef EAXSPEAKERLEVELPROPERTIES_DEFINED
-#define EAXSPEAKERLEVELPROPERTIES_DEFINED
-typedef struct _EAXSPEAKERLEVELPROPERTIES
-{
-      long lSpeakerID;
-      long lLevel;
-} EAXSPEAKERLEVELPROPERTIES, *LPEAXSPEAKERLEVELPROPERTIES;
-#endif
-
-// Use this structure for EAXSOURCE_ACTIVEFXSLOTID
-#ifndef EAXACTIVEFXSLOTS_DEFINED
-#define EAXACTIVEFXSLOTS_DEFINED
-typedef struct _EAXACTIVEFXSLOTS
-{
-    GUID          guidActiveFXSlots[EAX_MAX_ACTIVE_FXSLOTS];
-} EAXACTIVEFXSLOTS, *LPEAXACTIVEFXSLOTS;
-#endif
-
-// Use this structure for EAXSOURCE_OBSTRUCTIONPARAMETERS property.
-#ifndef EAXOBSTRUCTIONPROPERTIES_DEFINED
-#define EAXOBSTRUCTIONPROPERTIES_DEFINED
-typedef struct _EAXOBSTRUCTIONPROPERTIES
-{
-    long          lObstruction;
-    float         flObstructionLFRatio;
-} EAXOBSTRUCTIONPROPERTIES, *LPEAXOBSTRUCTIONPROPERTIES;
-#endif
-
-// Use this structure for EAXSOURCE_OCCLUSIONPARAMETERS property.
-#ifndef EAXOCCLUSIONPROPERTIES_DEFINED
-#define EAXOCCLUSIONPROPERTIES_DEFINED
-typedef struct _EAXOCCLUSIONPROPERTIES
-{
-    long          lOcclusion;
-    float         flOcclusionLFRatio;
-    float         flOcclusionRoomRatio;
-    float         flOcclusionDirectRatio;
-} EAXOCCLUSIONPROPERTIES, *LPEAXOCCLUSIONPROPERTIES;
-#endif
-
-// Use this structure for EAXSOURCE_EXCLUSIONPARAMETERS property.
-#ifndef EAXEXCLUSIONPROPERTIES_DEFINED
-#define EAXEXCLUSIONPROPERTIES_DEFINED
-typedef struct _EAXEXCLUSIONPROPERTIES
-{
-    long          lExclusion;
-    float         flExclusionLFRatio;
-} EAXEXCLUSIONPROPERTIES, *LPEAXEXCLUSIONPROPERTIES;
-#endif
-
-// Use this structure for EAXSOURCE_SENDPARAMETERS properties.
-#ifndef EAXSOURCESENDPROPERTIES_DEFINED
-#define EAXSOURCESENDPROPERTIES_DEFINED
-typedef struct _EAXSOURCESENDPROPERTIES
-{
-    GUID          guidReceivingFXSlotID;
-    long          lSend;
-    long          lSendHF;
-} EAXSOURCESENDPROPERTIES, *LPEAXSOURCESENDPROPERTIES;
-#endif
-
-// Use this structure for EAXSOURCE_OCCLUSIONSENDPARAMETERS 
-#ifndef EAXSOURCEOCCLUSIONSENDPROPERTIES_DEFINED
-#define EAXSOURCEOCCLUSIONSENDPROPERTIES_DEFINED
-typedef struct _EAXSOURCEOCCLUSIONSENDPROPERTIES
-{
-	GUID          guidReceivingFXSlotID;
-	long          lOcclusion;
-	float         flOcclusionLFRatio;
-	float         flOcclusionRoomRatio;
-	float         flOcclusionDirectRatio;
-} EAXSOURCEOCCLUSIONSENDPROPERTIES, *LPEAXSOURCEOCCLUSIONSENDPROPERTIES;
-#endif
-
-// Use this structure for EAXSOURCE_EXCLUSIONSENDPARAMETERS
-#ifndef EAXSOURCEEXCLUSIONSENDPROPERTIES_DEFINED
-#define EAXSOURCEEXCLUSIONSENDPROPERTIES_DEFINED
-typedef struct _EAXSOURCEEXCLUSIONSENDPROPERTIES
-{
-	GUID          guidReceivingFXSlotID;
-	long          lExclusion;
-	float         flExclusionLFRatio;
-} EAXSOURCEEXCLUSIONSENDPROPERTIES, *LPEAXSOURCEEXCLUSIONSENDPROPERTIES;
-#endif
-
-// Use this structure for EAXFXSLOT_ALLPARAMETERS
-// - all levels are hundredths of decibels
-//
-// NOTE: This structure may change in future EAX versions.
-//       It is recommended to initialize fields by name:
-//              myFXSlot.guidLoadEffect = EAX_REVERB_EFFECT;
-//              myFXSlot.lVolume = 0;
-//              myFXSlot.lLock = 1;
-//              myFXSlot.ulFlags = myFlags /* see EAXFXSLOTFLAGS below */ ;
-//       instead of:
-//              myFXSlot = { EAX_REVERB_EFFECT, 0, 1, 0x00000001 };
-//
-#ifndef EAXFXSLOTPROPERTIES_DEFINED
-#define EAXFXSLOTPROPERTIES_DEFINED
-typedef struct _EAXFXSLOTPROPERTIES
-{
-	GUID          guidLoadEffect;
-	long          lVolume;
-	long          lLock;
-	unsigned long ulFlags;
-	long          lOcclusion;
-	float         flOcclusionLFRatio;
-} EAXFXSLOTPROPERTIES, *LPEAXFXSLOTPROPERTIES;
-#endif
-
-
-// Use this structure for EAXREVERB_REFLECTIONSPAN and EAXREVERB_REVERBPAN properties.
-#ifndef EAXVECTOR_DEFINED
-#define EAXVECTOR_DEFINED
-typedef struct _EAXVECTOR {
-    float x;
-    float y;
-    float z;
-} EAXVECTOR;
-#endif
-
-
-////////////////////////////////////////////////////////////////////////////
-
-
-
-
-////////////////////////////////////////////////////////////////////////////
-// Error Codes
-
-#define EAX_OK                           0
-#define EAXERR_INVALID_OPERATION         (-1)
-#define EAXERR_INVALID_VALUE             (-2)
-#define EAXERR_NO_EFFECT_LOADED          (-3)
-#define EAXERR_UNKNOWN_EFFECT            (-4)
-#define EAXERR_INCOMPATIBLE_SOURCE_TYPE  (-5)
-#define EAXERR_INCOMPATIBLE_EAX_VERSION  (-6)
-////////////////////////////////////////////////////////////////////////////
-
-
-
-
-////////////////////////////////////////////////////////////////////////////
-// Context Object
-
-// {57E13437-B932-4ab2-B8BD-5266C1A887EE}
-DEFINE_GUID(EAXPROPERTYID_EAX50_Context, 
-    0x57e13437, 
-	0xb932, 
-	0x4ab2, 
-	0xb8, 0xbd, 0x52, 0x66, 0xc1, 0xa8, 0x87, 0xee);
-
-// For compatibility with future EAX versions:
-#define EAXPROPERTYID_EAX_Context EAXPROPERTYID_EAX50_Context
-
-typedef enum
-{
-    EAXCONTEXT_NONE = 0,
-    EAXCONTEXT_ALLPARAMETERS,
-    EAXCONTEXT_PRIMARYFXSLOTID,
-    EAXCONTEXT_DISTANCEFACTOR,
-    EAXCONTEXT_AIRABSORPTIONHF,
-    EAXCONTEXT_HFREFERENCE,
-    EAXCONTEXT_LASTERROR,
-	EAXCONTEXT_SPEAKERCONFIG,
-	EAXCONTEXT_EAXSESSION,
-	EAXCONTEXT_MACROFXFACTOR
-} EAXCONTEXT_PROPERTY;
-
-// OR these flags with property id
-#define EAXCONTEXT_PARAMETER_IMMEDIATE 0x00000000 // changes take effect immediately
-#define EAXCONTEXT_PARAMETER_DEFER     0x80000000 // changes take effect later
-#define EAXCONTEXT_PARAMETER_COMMITDEFERREDSETTINGS (EAXCONTEXT_NONE | \
-                                                      EAXCONTEXT_PARAMETER_IMMEDIATE)
-
-// EAX Context property ranges and defaults:
-#define EAXCONTEXT_DEFAULTPRIMARYFXSLOTID EAXPROPERTYID_EAX50_FXSlot0
-
-#define EAXCONTEXT_MINDISTANCEFACTOR        FLT_MIN //minimum positive value
-#define EAXCONTEXT_MAXDISTANCEFACTOR        FLT_MAX
-#define EAXCONTEXT_DEFAULTDISTANCEFACTOR    1.0f
-
-#define EAXCONTEXT_MINAIRABSORPTIONHF     (-100.0f)
-#define EAXCONTEXT_MAXAIRABSORPTIONHF     0.0f
-#define EAXCONTEXT_DEFAULTAIRABSORPTIONHF (-5.0f)
-
-#define EAXCONTEXT_MINHFREFERENCE         1000.0f
-#define EAXCONTEXT_MAXHFREFERENCE         20000.0f
-#define EAXCONTEXT_DEFAULTHFREFERENCE     5000.0f
-
-#define EAXCONTEXT_DEFAULTLASTERROR         EAX_OK
-
-enum {
-	HEADPHONES = 0,
-	SPEAKERS_2,
-	SPEAKERS_4,
-	SPEAKERS_5,	// 5.1 speakers
-	SPEAKERS_6, // 6.1 speakers
-	SPEAKERS_7, // 7.1 speakers
-};
-
-enum {
-	EAX_40 = 5,       // EAX 4.0 
-	EAX_50 = 6,       // EAX 5.0 
-};
-
-// min,max, default values for ulEAXVersion in struct EAXSESSIONPROPERTIES
-#define EAXCONTEXT_MINEAXSESSION          EAX_40
-#define EAXCONTEXT_MAXEAXSESSION          EAX_50
-#define EAXCONTEXT_DEFAULTEAXSESSION      EAX_40
-
-// min,max, default values for ulMaxActiveSends in struct EAXSESSIONPROPERTIES
-#define EAXCONTEXT_MINMAXACTIVESENDS       2 
-#define EAXCONTEXT_MAXMAXACTIVESENDS       4
-#define EAXCONTEXT_DEFAULTMAXACTIVESENDS   2
-
-#define EAXCONTEXT_MINMACROFXFACTOR       0.0f
-#define EAXCONTEXT_MAXMACROFXFACTOR       1.0f
-#define EAXCONTEXT_DEFAULTMACROFXFACTOR   0.0f
-
-////////////////////////////////////////////////////////////////////////////
-
-
-
-
-////////////////////////////////////////////////////////////////////////////
-// Effect Slot Objects
-
-// {91F9590F-C388-407a-84B0-1BAE0EF71ABC}
-DEFINE_GUID(EAXPROPERTYID_EAX50_FXSlot0, 
-    0x91f9590f, 
-	0xc388, 
-	0x407a, 
-	0x84, 0xb0, 0x1b, 0xae, 0xe, 0xf7, 0x1a, 0xbc);
-
-// {8F5F7ACA-9608-4965-8137-8213C7B9D9DE}
-DEFINE_GUID(EAXPROPERTYID_EAX50_FXSlot1, 
-    0x8f5f7aca, 
-	0x9608, 
-	0x4965, 
-	0x81, 0x37, 0x82, 0x13, 0xc7, 0xb9, 0xd9, 0xde);
-
-// {3C0F5252-9834-46f0-A1D8-5B95C4A00A30}
-DEFINE_GUID(EAXPROPERTYID_EAX50_FXSlot2, 
-    0x3c0f5252, 
-	0x9834, 
-	0x46f0, 
-	0xa1, 0xd8, 0x5b, 0x95, 0xc4, 0xa0, 0xa, 0x30);
-
-// {E2EB0EAA-E806-45e7-9F86-06C1571A6FA3}
-DEFINE_GUID(EAXPROPERTYID_EAX50_FXSlot3, 
-    0xe2eb0eaa, 
-	0xe806, 
-	0x45e7, 
-	0x9f, 0x86, 0x6, 0xc1, 0x57, 0x1a, 0x6f, 0xa3);
-
-
-// For compatibility with future EAX versions:
-#define EAXPROPERTYID_EAX_FXSlot0 EAXPROPERTYID_EAX50_FXSlot0
-#define EAXPROPERTYID_EAX_FXSlot1 EAXPROPERTYID_EAX50_FXSlot1
-#define EAXPROPERTYID_EAX_FXSlot2 EAXPROPERTYID_EAX50_FXSlot2
-#define EAXPROPERTYID_EAX_FXSlot3 EAXPROPERTYID_EAX50_FXSlot3
-
-// FXSlot object properties
-typedef enum
-{
-    EAXFXSLOT_PARAMETER = 0, // range 0-0x40 reserved for loaded effect parameters
-    EAXFXSLOT_NONE = 0x10000,
-	EAXFXSLOT_ALLPARAMETERS,
-    EAXFXSLOT_LOADEFFECT,
-    EAXFXSLOT_VOLUME,
-	EAXFXSLOT_LOCK,
-	EAXFXSLOT_FLAGS,
-	EAXFXSLOT_OCCLUSION,
-	EAXFXSLOT_OCCLUSIONLFRATIO
-} EAXFXSLOT_PROPERTY;
-
-// Note: The number and order of flags may change in future EAX versions.
-//       To insure future compatibility, use flag defines as follows:
-//              myFlags = EAXFXSLOTFLAGS_ENVIRONMENT;
-//       instead of:
-//              myFlags = 0x00000001;
-//
-#define EAXFXSLOTFLAGS_ENVIRONMENT   0x00000001
-#define EAXFXSLOTFLAGS_UPMIX         0x00000002
-#define EAXFXSLOTFLAGS_RESERVED      0xFFFFFFFC // reserved future use
-
-// EAX Effect Slot property ranges and defaults:
-#define EAXFXSLOT_MINVOLUME                    (-10000)
-#define EAXFXSLOT_MAXVOLUME                    0
-#define EAXFXSLOT_DEFAULTVOLUME                0
-
-enum
-{
-   EAXFXSLOT_UNLOCKED = 0,
-   EAXFXSLOT_LOCKED = 1
-};
-
-#define EAXFXSLOT_MINLOCK    0
-#define EAXFXSLOT_MAXLOCK    1
-
-#define EAXFXSLOT_MINOCCLUSION                 (-10000)
-#define EAXFXSLOT_MAXOCCLUSION                 0
-#define EAXFXSLOT_DEFAULTOCCLUSION             0
-
-#define EAXFXSLOT_MINOCCLUSIONLFRATIO          0.0f
-#define EAXFXSLOT_MAXOCCLUSIONLFRATIO          1.0f
-#define EAXFXSLOT_DEFAULTOCCLUSIONLFRATIO      0.25f
-
-#define EAXFXSLOT_DEFAULTFLAGS                 (EAXFXSLOTFLAGS_ENVIRONMENT | \
-                                                EAXFXSLOTFLAGS_UPMIX        )  // ignored for reverb
-////////////////////////////////////////////////////////////////////////////
-
-
-
-////////////////////////////////////////////////////////////////////////////
-// Source Object
-
-// {5EDF82F0-24A7-4f38-8E64-2F09CA05DEE1}
-DEFINE_GUID(EAXPROPERTYID_EAX50_Source, 
-    0x5edf82f0, 
-	0x24a7, 
-	0x4f38, 
-	0x8e, 0x64, 0x2f, 0x9, 0xca, 0x5, 0xde, 0xe1);
-
-
-// For compatibility with future EAX versions:
-#define EAXPROPERTYID_EAX_Source EAXPROPERTYID_EAX50_Source
-
-// Source object properties
-typedef enum
-{
-    EAXSOURCE_NONE,
-    EAXSOURCE_ALLPARAMETERS,
-    EAXSOURCE_OBSTRUCTIONPARAMETERS,
-    EAXSOURCE_OCCLUSIONPARAMETERS,
-    EAXSOURCE_EXCLUSIONPARAMETERS,
-    EAXSOURCE_DIRECT,
-    EAXSOURCE_DIRECTHF,
-    EAXSOURCE_ROOM,
-    EAXSOURCE_ROOMHF,
-    EAXSOURCE_OBSTRUCTION,
-    EAXSOURCE_OBSTRUCTIONLFRATIO,
-    EAXSOURCE_OCCLUSION,
-    EAXSOURCE_OCCLUSIONLFRATIO, 
-    EAXSOURCE_OCCLUSIONROOMRATIO,
-    EAXSOURCE_OCCLUSIONDIRECTRATIO,
-    EAXSOURCE_EXCLUSION, 
-    EAXSOURCE_EXCLUSIONLFRATIO,
-    EAXSOURCE_OUTSIDEVOLUMEHF, 
-    EAXSOURCE_DOPPLERFACTOR, 
-    EAXSOURCE_ROLLOFFFACTOR, 
-    EAXSOURCE_ROOMROLLOFFFACTOR,
-    EAXSOURCE_AIRABSORPTIONFACTOR,
-    EAXSOURCE_FLAGS,
-    EAXSOURCE_SENDPARAMETERS,
-    EAXSOURCE_ALLSENDPARAMETERS,
-    EAXSOURCE_OCCLUSIONSENDPARAMETERS,
-    EAXSOURCE_EXCLUSIONSENDPARAMETERS,
-    EAXSOURCE_ACTIVEFXSLOTID,
-	EAXSOURCE_MACROFXFACTOR,
-	EAXSOURCE_SPEAKERLEVELS,
-	EAXSOURCE_ALL2DPARAMETERS,
-} EAXSOURCE_PROPERTY;
-
-// OR these flags with property id
-#define EAXSOURCE_PARAMETER_IMMEDIATE 0x00000000 // changes take effect immediately
-#define EAXSOURCE_PARAMETER_DEFERRED  0x80000000 // changes take effect later
-#define EAXSOURCE_PARAMETER_COMMITDEFERREDSETTINGS (EAXSOURCE_NONE | \
-                                                    EAXSOURCE_PARAMETER_IMMEDIATE)
-// Used by EAXSOURCE_FLAGS for EAXSOURCEFLAGS_xxxAUTO
-//    TRUE:    value is computed automatically - property is an offset
-//    FALSE:   value is used directly
-//
-// Note: The number and order of flags may change in future EAX versions.
-//       To insure future compatibility, use flag defines as follows:
-//              myFlags = EAXSOURCE_DIRECTHFAUTO | EAXSOURCE_ROOMAUTO;
-//       instead of:
-//              myFlags = 0x00000003;
-//
-#define EAXSOURCEFLAGS_DIRECTHFAUTO          0x00000001 // relates to EAXSOURCE_DIRECTHF
-#define EAXSOURCEFLAGS_ROOMAUTO              0x00000002 // relates to EAXSOURCE_ROOM
-#define EAXSOURCEFLAGS_ROOMHFAUTO            0x00000004 // relates to EAXSOURCE_ROOMHF
-#define EAXSOURCEFLAGS_3DELEVATIONFILTER     0x00000008
-#define EAXSOURCEFLAGS_UPMIX                 0x00000010
-#define EAXSOURCEFLAGS_APPLYSPEAKERLEVELS    0x00000020
-#define EAXSOURCEFLAGS_RESERVED              0xFFFFFFC0 // reserved future use
-
-// EAX Source property ranges and defaults:
-#define EAXSOURCE_MINSEND                      (-10000)
-#define EAXSOURCE_MAXSEND                      0
-#define EAXSOURCE_DEFAULTSEND                  0
-
-#define EAXSOURCE_MINSENDHF                    (-10000)
-#define EAXSOURCE_MAXSENDHF                    0
-#define EAXSOURCE_DEFAULTSENDHF                0
-
-#define EAXSOURCE_MINDIRECT                    (-10000)
-#define EAXSOURCE_MAXDIRECT                    1000
-#define EAXSOURCE_DEFAULTDIRECT                0
-
-#define EAXSOURCE_MINDIRECTHF                  (-10000)
-#define EAXSOURCE_MAXDIRECTHF                  0
-#define EAXSOURCE_DEFAULTDIRECTHF              0
-
-#define EAXSOURCE_MINROOM                      (-10000)
-#define EAXSOURCE_MAXROOM                      1000
-#define EAXSOURCE_DEFAULTROOM                  0
-
-#define EAXSOURCE_MINROOMHF                    (-10000)
-#define EAXSOURCE_MAXROOMHF                    0
-#define EAXSOURCE_DEFAULTROOMHF                0
-
-#define EAXSOURCE_MINOBSTRUCTION               (-10000)
-#define EAXSOURCE_MAXOBSTRUCTION               0
-#define EAXSOURCE_DEFAULTOBSTRUCTION           0
-
-#define EAXSOURCE_MINOBSTRUCTIONLFRATIO        0.0f
-#define EAXSOURCE_MAXOBSTRUCTIONLFRATIO        1.0f
-#define EAXSOURCE_DEFAULTOBSTRUCTIONLFRATIO    0.0f
-
-#define EAXSOURCE_MINOCCLUSION                 (-10000)
-#define EAXSOURCE_MAXOCCLUSION                 0
-#define EAXSOURCE_DEFAULTOCCLUSION             0
-
-#define EAXSOURCE_MINOCCLUSIONLFRATIO          0.0f
-#define EAXSOURCE_MAXOCCLUSIONLFRATIO          1.0f
-#define EAXSOURCE_DEFAULTOCCLUSIONLFRATIO      0.25f
-
-#define EAXSOURCE_MINOCCLUSIONROOMRATIO        0.0f
-#define EAXSOURCE_MAXOCCLUSIONROOMRATIO        10.0f
-#define EAXSOURCE_DEFAULTOCCLUSIONROOMRATIO    1.5f
-
-#define EAXSOURCE_MINOCCLUSIONDIRECTRATIO      0.0f
-#define EAXSOURCE_MAXOCCLUSIONDIRECTRATIO      10.0f
-#define EAXSOURCE_DEFAULTOCCLUSIONDIRECTRATIO  1.0f
-
-#define EAXSOURCE_MINEXCLUSION                 (-10000)
-#define EAXSOURCE_MAXEXCLUSION                 0
-#define EAXSOURCE_DEFAULTEXCLUSION             0
-
-#define EAXSOURCE_MINEXCLUSIONLFRATIO          0.0f
-#define EAXSOURCE_MAXEXCLUSIONLFRATIO          1.0f
-#define EAXSOURCE_DEFAULTEXCLUSIONLFRATIO      1.0f
-
-#define EAXSOURCE_MINOUTSIDEVOLUMEHF           (-10000)
-#define EAXSOURCE_MAXOUTSIDEVOLUMEHF           0
-#define EAXSOURCE_DEFAULTOUTSIDEVOLUMEHF       0
-
-#define EAXSOURCE_MINDOPPLERFACTOR             0.0f
-#define EAXSOURCE_MAXDOPPLERFACTOR             10.f
-#define EAXSOURCE_DEFAULTDOPPLERFACTOR         1.0f
-
-#define EAXSOURCE_MINROLLOFFFACTOR             0.0f
-#define EAXSOURCE_MAXROLLOFFFACTOR             10.f
-#define EAXSOURCE_DEFAULTROLLOFFFACTOR         0.0f
-
-#define EAXSOURCE_MINROOMROLLOFFFACTOR         0.0f
-#define EAXSOURCE_MAXROOMROLLOFFFACTOR         10.f
-#define EAXSOURCE_DEFAULTROOMROLLOFFFACTOR     0.0f
-
-#define EAXSOURCE_MINAIRABSORPTIONFACTOR       0.0f
-#define EAXSOURCE_MAXAIRABSORPTIONFACTOR       10.0f
-#define EAXSOURCE_DEFAULTAIRABSORPTIONFACTOR   0.0f
-
-#define EAXSOURCE_MINMACROFXFACTOR             0.0f
-#define EAXSOURCE_MAXMACROFXFACTOR             1.0f
-#define EAXSOURCE_DEFAULTMACROFXFACTOR         1.0f
-
-#define EAXSOURCE_MINSPEAKERLEVEL		       (-10000)
-#define EAXSOURCE_MAXSPEAKERLEVEL		       0
-#define EAXSOURCE_DEFAULTSPEAKERLEVEL	       (-10000)
-
-enum
-{
-   EAXSPEAKER_FRONT_LEFT    = 1,
-   EAXSPEAKER_FRONT_CENTER  = 2,
-   EAXSPEAKER_FRONT_RIGHT   = 3,
-   EAXSPEAKER_SIDE_RIGHT    = 4,
-   EAXSPEAKER_REAR_RIGHT    = 5,
-   EAXSPEAKER_REAR_CENTER   = 6,
-   EAXSPEAKER_REAR_LEFT     = 7,
-   EAXSPEAKER_SIDE_LEFT     = 8,
-   EAXSPEAKER_LOW_FREQUENCY = 9
-};
-
-
-// EAXSOURCEFLAGS_DIRECTHFAUTO, EAXSOURCEFLAGS_ROOMAUTO and EAXSOURCEFLAGS_ROOMHFAUTO are ignored for 2D sources
-// EAXSOURCEFLAGS_UPMIX is ignored for 3D sources
-#define EAXSOURCE_DEFAULTFLAGS                (EAXSOURCEFLAGS_DIRECTHFAUTO |   \
-                                               EAXSOURCEFLAGS_ROOMAUTO     |   \
-                                               EAXSOURCEFLAGS_ROOMHFAUTO   |   \
-                                               EAXSOURCEFLAGS_UPMIX )
-
-
-// A 3D Source's default ACTIVEFXSLOTID is { EAX_NULL_GUID, EAX_PrimaryFXSlotID, EAX_NULL_GUID, EAX_NULL_GUID }
-#define EAXSOURCE_3DDEFAULTACTIVEFXSLOTID  {{ EAX_NULL_GUID.Data1, EAX_NULL_GUID.Data2, EAX_NULL_GUID.Data3, \
-                                    EAX_NULL_GUID.Data4[0],EAX_NULL_GUID.Data4[1],EAX_NULL_GUID.Data4[2],\
-                                    EAX_NULL_GUID.Data4[3],EAX_NULL_GUID.Data4[4],EAX_NULL_GUID.Data4[5],\
-                                    EAX_NULL_GUID.Data4[6],EAX_NULL_GUID.Data4[7] },                     \
-								{ EAX_PrimaryFXSlotID.Data1, EAX_PrimaryFXSlotID.Data2,                  \
-                                    EAX_PrimaryFXSlotID.Data3, EAX_PrimaryFXSlotID.Data4[0],             \
-                                    EAX_PrimaryFXSlotID.Data4[1],EAX_PrimaryFXSlotID.Data4[2],           \
-                                    EAX_PrimaryFXSlotID.Data4[3],EAX_PrimaryFXSlotID.Data4[4],           \
-                                    EAX_PrimaryFXSlotID.Data4[5],EAX_PrimaryFXSlotID.Data4[6],           \
-                                    EAX_PrimaryFXSlotID.Data4[7] },                                      \
-								{ EAX_NULL_GUID.Data1, EAX_NULL_GUID.Data2, EAX_NULL_GUID.Data3,         \
-                                    EAX_NULL_GUID.Data4[0],EAX_NULL_GUID.Data4[1],EAX_NULL_GUID.Data4[2],\
-                                    EAX_NULL_GUID.Data4[3],EAX_NULL_GUID.Data4[4],EAX_NULL_GUID.Data4[5],\
-                                    EAX_NULL_GUID.Data4[6],EAX_NULL_GUID.Data4[7] },                     \
-								{ EAX_NULL_GUID.Data1, EAX_NULL_GUID.Data2, EAX_NULL_GUID.Data3,         \
-                                    EAX_NULL_GUID.Data4[0],EAX_NULL_GUID.Data4[1],EAX_NULL_GUID.Data4[2],\
-                                    EAX_NULL_GUID.Data4[3],EAX_NULL_GUID.Data4[4],EAX_NULL_GUID.Data4[5],\
-                                    EAX_NULL_GUID.Data4[6],EAX_NULL_GUID.Data4[7] }  }
-
-// A 2D Source's default ACTIVEFXSLOTID is { EAX_NULL_GUID, EAX_NULL_GUID, EAX_NULL_GUID, EAX_NULL_GUID }
-#define EAXSOURCE_2DDEFAULTACTIVEFXSLOTID  {{ EAX_NULL_GUID.Data1, EAX_NULL_GUID.Data2, EAX_NULL_GUID.Data3, \
-                                    EAX_NULL_GUID.Data4[0],EAX_NULL_GUID.Data4[1],EAX_NULL_GUID.Data4[2],\
-                                    EAX_NULL_GUID.Data4[3],EAX_NULL_GUID.Data4[4],EAX_NULL_GUID.Data4[5],\
-                                    EAX_NULL_GUID.Data4[6],EAX_NULL_GUID.Data4[7] },                     \
-								{ EAX_NULL_GUID.Data1, EAX_NULL_GUID.Data2, EAX_NULL_GUID.Data3,         \
-                                    EAX_NULL_GUID.Data4[0],EAX_NULL_GUID.Data4[1],EAX_NULL_GUID.Data4[2],\
-                                    EAX_NULL_GUID.Data4[3],EAX_NULL_GUID.Data4[4],EAX_NULL_GUID.Data4[5],\
-                                    EAX_NULL_GUID.Data4[6],EAX_NULL_GUID.Data4[7] },                     \
-								{ EAX_NULL_GUID.Data1, EAX_NULL_GUID.Data2, EAX_NULL_GUID.Data3,         \
-                                    EAX_NULL_GUID.Data4[0],EAX_NULL_GUID.Data4[1],EAX_NULL_GUID.Data4[2],\
-                                    EAX_NULL_GUID.Data4[3],EAX_NULL_GUID.Data4[4],EAX_NULL_GUID.Data4[5],\
-                                    EAX_NULL_GUID.Data4[6],EAX_NULL_GUID.Data4[7] },                     \
-								{ EAX_NULL_GUID.Data1, EAX_NULL_GUID.Data2, EAX_NULL_GUID.Data3,         \
-                                    EAX_NULL_GUID.Data4[0],EAX_NULL_GUID.Data4[1],EAX_NULL_GUID.Data4[2],\
-                                    EAX_NULL_GUID.Data4[3],EAX_NULL_GUID.Data4[4],EAX_NULL_GUID.Data4[5],\
-                                    EAX_NULL_GUID.Data4[6],EAX_NULL_GUID.Data4[7] }  }
-
-
-////////////////////////////////////////////////////////////////////////////
-
-
-
-
-////////////////////////////////////////////////////////////////////////////
-// Reverb Effect
-
-// EAX REVERB {0CF95C8F-A3CC-4849-B0B6-832ECC1822DF}
-DEFINE_GUID(EAX_REVERB_EFFECT, 
-    0xcf95c8f, 
-    0xa3cc, 
-    0x4849, 
-    0xb0, 0xb6, 0x83, 0x2e, 0xcc, 0x18, 0x22, 0xdf);
-
-// Reverb effect properties
-typedef enum
-{
-    EAXREVERB_NONE,
-    EAXREVERB_ALLPARAMETERS,
-    EAXREVERB_ENVIRONMENT,
-    EAXREVERB_ENVIRONMENTSIZE,
-    EAXREVERB_ENVIRONMENTDIFFUSION,
-    EAXREVERB_ROOM,
-    EAXREVERB_ROOMHF,
-    EAXREVERB_ROOMLF,
-    EAXREVERB_DECAYTIME,
-    EAXREVERB_DECAYHFRATIO,
-    EAXREVERB_DECAYLFRATIO,
-    EAXREVERB_REFLECTIONS,
-    EAXREVERB_REFLECTIONSDELAY,
-    EAXREVERB_REFLECTIONSPAN,
-    EAXREVERB_REVERB,
-    EAXREVERB_REVERBDELAY,
-    EAXREVERB_REVERBPAN,
-    EAXREVERB_ECHOTIME,
-    EAXREVERB_ECHODEPTH,
-    EAXREVERB_MODULATIONTIME,
-    EAXREVERB_MODULATIONDEPTH,
-    EAXREVERB_AIRABSORPTIONHF,
-    EAXREVERB_HFREFERENCE,
-    EAXREVERB_LFREFERENCE,
-    EAXREVERB_ROOMROLLOFFFACTOR,
-    EAXREVERB_FLAGS,
-} EAXREVERB_PROPERTY;
-
-// OR these flags with property id
-#define EAXREVERB_IMMEDIATE 0x00000000 // changes take effect immediately
-#define EAXREVERB_DEFERRED  0x80000000 // changes take effect later
-#define EAXREVERB_COMMITDEFERREDSETTINGS (EAXREVERB_NONE | \
-                                          EAXREVERB_IMMEDIATE)
-
-// used by EAXREVERB_ENVIRONMENT
-enum
-{
-    EAX_ENVIRONMENT_GENERIC,
-    EAX_ENVIRONMENT_PADDEDCELL,
-    EAX_ENVIRONMENT_ROOM,
-    EAX_ENVIRONMENT_BATHROOM,
-    EAX_ENVIRONMENT_LIVINGROOM,
-    EAX_ENVIRONMENT_STONEROOM,
-    EAX_ENVIRONMENT_AUDITORIUM,
-    EAX_ENVIRONMENT_CONCERTHALL,
-    EAX_ENVIRONMENT_CAVE,
-    EAX_ENVIRONMENT_ARENA,
-    EAX_ENVIRONMENT_HANGAR,
-    EAX_ENVIRONMENT_CARPETEDHALLWAY,
-    EAX_ENVIRONMENT_HALLWAY,
-    EAX_ENVIRONMENT_STONECORRIDOR,
-    EAX_ENVIRONMENT_ALLEY,
-    EAX_ENVIRONMENT_FOREST,
-    EAX_ENVIRONMENT_CITY,
-    EAX_ENVIRONMENT_MOUNTAINS,
-    EAX_ENVIRONMENT_QUARRY,
-    EAX_ENVIRONMENT_PLAIN,
-    EAX_ENVIRONMENT_PARKINGLOT,
-    EAX_ENVIRONMENT_SEWERPIPE,
-    EAX_ENVIRONMENT_UNDERWATER,
-    EAX_ENVIRONMENT_DRUGGED,
-    EAX_ENVIRONMENT_DIZZY,
-    EAX_ENVIRONMENT_PSYCHOTIC,
-
-    EAX_ENVIRONMENT_UNDEFINED,
-
-    EAX_ENVIRONMENT_COUNT
-};
-
-// Used by EAXREVERB_FLAGS
-//
-// Note: The number and order of flags may change in future EAX versions.
-//       It is recommended to use the flag defines as follows:
-//              myFlags = EAXREVERBFLAGS_DECAYTIMESCALE | EAXREVERBFLAGS_REVERBSCALE;
-//       instead of:
-//              myFlags = 0x00000009;
-//
-// These flags determine what properties are affected by environment size.
-#define EAXREVERBFLAGS_DECAYTIMESCALE        0x00000001 // reverberation decay time
-#define EAXREVERBFLAGS_REFLECTIONSSCALE      0x00000002 // reflection level
-#define EAXREVERBFLAGS_REFLECTIONSDELAYSCALE 0x00000004 // initial reflection delay time
-#define EAXREVERBFLAGS_REVERBSCALE           0x00000008 // reflections level
-#define EAXREVERBFLAGS_REVERBDELAYSCALE      0x00000010 // late reverberation delay time
-#define EAXREVERBFLAGS_ECHOTIMESCALE         0x00000040 // echo time
-#define EAXREVERBFLAGS_MODULATIONTIMESCALE   0x00000080 // modulation time
-// This flag limits high-frequency decay time according to air absorption.
-#define EAXREVERBFLAGS_DECAYHFLIMIT          0x00000020
-#define EAXREVERBFLAGS_RESERVED              0xFFFFFF00 // reserved future use
-
-// Use this structure for EAXREVERB_ALLPARAMETERS
-// - all levels are hundredths of decibels
-// - all times and delays are in seconds
-//
-// NOTE: This structure may change in future EAX versions.
-//       It is recommended to initialize fields by name:
-//              myReverb.lRoom = -1000;
-//              myReverb.lRoomHF = -100;
-//              ...
-//              myReverb.dwFlags = myFlags /* see EAXREVERBFLAGS below */ ;
-//       instead of:
-//              myReverb = { -1000, -100, ... , 0x00000009 };
-//       If you want to save and load presets in binary form, you 
-//       should define your own structure to insure future compatibility.
-//
-#ifndef EAXREVERBPROPERTIES_DEFINED
-#define EAXREVERBPROPERTIES_DEFINED
-typedef struct _EAXREVERBPROPERTIES
-{
-    unsigned long ulEnvironment;   // sets all reverb properties
-    float flEnvironmentSize;       // environment size in meters
-    float flEnvironmentDiffusion;  // environment diffusion
-    long lRoom;                    // room effect level (at mid frequencies)
-    long lRoomHF;                  // relative room effect level at high frequencies
-    long lRoomLF;                  // relative room effect level at low frequencies  
-    float flDecayTime;             // reverberation decay time at mid frequencies
-    float flDecayHFRatio;          // high-frequency to mid-frequency decay time ratio
-    float flDecayLFRatio;          // low-frequency to mid-frequency decay time ratio   
-    long lReflections;             // early reflections level relative to room effect
-    float flReflectionsDelay;      // initial reflection delay time
-    EAXVECTOR vReflectionsPan;     // early reflections panning vector
-    long lReverb;                  // late reverberation level relative to room effect
-    float flReverbDelay;           // late reverberation delay time relative to initial reflection
-    EAXVECTOR vReverbPan;          // late reverberation panning vector
-    float flEchoTime;              // echo time
-    float flEchoDepth;             // echo depth
-    float flModulationTime;        // modulation time
-    float flModulationDepth;       // modulation depth
-    float flAirAbsorptionHF;       // change in level per meter at high frequencies
-    float flHFReference;           // reference high frequency
-    float flLFReference;           // reference low frequency 
-    float flRoomRolloffFactor;     // like DS3D flRolloffFactor but for room effect
-    unsigned long ulFlags;         // modifies the behavior of properties
-} EAXREVERBPROPERTIES, *LPEAXREVERBPROPERTIES;
-#endif
-
-// Property ranges and defaults:
-#define EAXREVERB_MINENVIRONMENT                0
-#define EAXREVERB_MAXENVIRONMENT               (EAX_ENVIRONMENT_COUNT-1)
-#define EAXREVERB_DEFAULTENVIRONMENT            EAX_ENVIRONMENT_GENERIC
-
-#define EAXREVERB_MINENVIRONMENTSIZE            1.0f
-#define EAXREVERB_MAXENVIRONMENTSIZE            100.0f
-#define EAXREVERB_DEFAULTENVIRONMENTSIZE        7.5f
-
-#define EAXREVERB_MINENVIRONMENTDIFFUSION       0.0f
-#define EAXREVERB_MAXENVIRONMENTDIFFUSION       1.0f
-#define EAXREVERB_DEFAULTENVIRONMENTDIFFUSION   1.0f
-
-#define EAXREVERB_MINROOM                       (-10000)
-#define EAXREVERB_MAXROOM                       0
-#define EAXREVERB_DEFAULTROOM                   (-1000)
-
-#define EAXREVERB_MINROOMHF                     (-10000)
-#define EAXREVERB_MAXROOMHF                     0
-#define EAXREVERB_DEFAULTROOMHF                 (-100)
-
-#define EAXREVERB_MINROOMLF                     (-10000)
-#define EAXREVERB_MAXROOMLF                     0
-#define EAXREVERB_DEFAULTROOMLF                 0
-
-#define EAXREVERB_MINDECAYTIME                  0.1f
-#define EAXREVERB_MAXDECAYTIME                  20.0f
-#define EAXREVERB_DEFAULTDECAYTIME              1.49f
-
-#define EAXREVERB_MINDECAYHFRATIO               0.1f
-#define EAXREVERB_MAXDECAYHFRATIO               2.0f
-#define EAXREVERB_DEFAULTDECAYHFRATIO           0.83f
-
-#define EAXREVERB_MINDECAYLFRATIO               0.1f
-#define EAXREVERB_MAXDECAYLFRATIO               2.0f
-#define EAXREVERB_DEFAULTDECAYLFRATIO           1.00f
-
-#define EAXREVERB_MINREFLECTIONS                (-10000)
-#define EAXREVERB_MAXREFLECTIONS                1000
-#define EAXREVERB_DEFAULTREFLECTIONS            (-2602)
-
-#define EAXREVERB_MINREFLECTIONSDELAY           0.0f
-#define EAXREVERB_MAXREFLECTIONSDELAY           0.3f
-#define EAXREVERB_DEFAULTREFLECTIONSDELAY       0.007f
-
-#define EAXREVERB_DEFAULTREFLECTIONSPAN         {0.0f, 0.0f, 0.0f}
-
-#define EAXREVERB_MINREVERB                     (-10000)
-#define EAXREVERB_MAXREVERB                     2000
-#define EAXREVERB_DEFAULTREVERB                 200
-
-#define EAXREVERB_MINREVERBDELAY                0.0f
-#define EAXREVERB_MAXREVERBDELAY                0.1f
-#define EAXREVERB_DEFAULTREVERBDELAY            0.011f
-
-#define EAXREVERB_DEFAULTREVERBPAN              {0.0f, 0.0f, 0.0f}
-
-#define EAXREVERB_MINECHOTIME                   0.075f
-#define EAXREVERB_MAXECHOTIME                      0.25f
-#define EAXREVERB_DEFAULTECHOTIME               0.25f
-
-#define EAXREVERB_MINECHODEPTH                  0.0f
-#define EAXREVERB_MAXECHODEPTH                  1.0f
-#define EAXREVERB_DEFAULTECHODEPTH              0.0f
-
-#define EAXREVERB_MINMODULATIONTIME             0.04f
-#define EAXREVERB_MAXMODULATIONTIME             4.0f
-#define EAXREVERB_DEFAULTMODULATIONTIME         0.25f
-
-#define EAXREVERB_MINMODULATIONDEPTH            0.0f
-#define EAXREVERB_MAXMODULATIONDEPTH            1.0f
-#define EAXREVERB_DEFAULTMODULATIONDEPTH        0.0f
-
-#define EAXREVERB_MINAIRABSORPTIONHF            (-100.0f)
-#define EAXREVERB_MAXAIRABSORPTIONHF            0.0f
-#define EAXREVERB_DEFAULTAIRABSORPTIONHF        (-5.0f)
-
-#define EAXREVERB_MINHFREFERENCE                1000.0f
-#define EAXREVERB_MAXHFREFERENCE                20000.0f
-#define EAXREVERB_DEFAULTHFREFERENCE            5000.0f
-
-#define EAXREVERB_MINLFREFERENCE                20.0f
-#define EAXREVERB_MAXLFREFERENCE                1000.0f
-#define EAXREVERB_DEFAULTLFREFERENCE            250.0f
-
-#define EAXREVERB_MINROOMROLLOFFFACTOR          0.0f
-#define EAXREVERB_MAXROOMROLLOFFFACTOR          10.0f
-#define EAXREVERB_DEFAULTROOMROLLOFFFACTOR      0.0f
-
-#define EAXREVERB_DEFAULTFLAGS                  (EAXREVERBFLAGS_DECAYTIMESCALE |        \
-                                                 EAXREVERBFLAGS_REFLECTIONSSCALE |      \
-                                                 EAXREVERBFLAGS_REFLECTIONSDELAYSCALE | \
-                                                 EAXREVERBFLAGS_REVERBSCALE |           \
-                                                 EAXREVERBFLAGS_REVERBDELAYSCALE |      \
-                                                 EAXREVERBFLAGS_DECAYHFLIMIT)
-////////////////////////////////////////////////////////////////////////////
-
-
-
-
-////////////////////////////////////////////////////////////////////////////
-
-//          New Effect Types
-
-////////////////////////////////////////////////////////////////////////////
-
-
-////////////////////////////////////////////////////////////////////////////
-// AGC Compressor Effect
-
-// EAX AGC COMPRESSOR {BFB7A01E-7825-4039-927F-3AABDA0C560}
-
-DEFINE_GUID(EAX_AGCCOMPRESSOR_EFFECT,
-    0xbfb7a01e,
-    0x7825,
-    0x4039,
-    0x92, 0x7f, 0x3, 0xaa, 0xbd, 0xa0, 0xc5, 0x60);
-
-// AGC Compressor properties
-typedef enum
-{
-    EAXAGCCOMPRESSOR_NONE,
-    EAXAGCCOMPRESSOR_ALLPARAMETERS,
-    EAXAGCCOMPRESSOR_ONOFF
-} EAXAGCCOMPRESSOR_PROPERTY;
-
-// OR these flags with property id
-#define EAXAGCCOMPRESSOR_IMMEDIATE 0x00000000 // changes take effect immediately
-#define EAXAGCCOMPRESSOR_DEFERRED  0x80000000 // changes take effect later
-#define EAXAGCCOMPRESSOR_COMMITDEFERREDSETTINGS (EAXAGCCOMPRESSOR_NONE | \
-                                                 EAXAGCCOMPRESSOR_IMMEDIATE)
-
-// Use this structure for EAXAGCCOMPRESSOR_ALLPARAMETERS
-#ifndef EAXAGCCOMPRESSORPROPERTIES_DEFINED
-#define EAXAGCCOMPRESSORPROPERTIES_DEFINED
-typedef struct _EAXAGCCOMPRESSORPROPERTIES
-{
-    unsigned long ulOnOff;   // Switch Compressor on or off
-} EAXAGCCOMPRESSORPROPERTIES, *LPEAXAGCCOMPRESSORPROPERTIES;
-#endif
-
-// Property ranges and defaults:
-
-#define EAXAGCCOMPRESSOR_MINONOFF           0
-#define EAXAGCCOMPRESSOR_MAXONOFF           1
-#define EAXAGCCOMPRESSOR_DEFAULTONOFF       1
-
-////////////////////////////////////////////////////////////////////////////
-
-
-////////////////////////////////////////////////////////////////////////////
-// Autowah Effect
-
-// EAX AUTOWAH {EC3130C0-AC7A-11D2-88DD-A024D13CE1}
-DEFINE_GUID(EAX_AUTOWAH_EFFECT, 
-    0xec3130c0,
-    0xac7a,
-    0x11d2,
-    0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1);
-
-// Autowah properties
-typedef enum
-{
-    EAXAUTOWAH_NONE,
-    EAXAUTOWAH_ALLPARAMETERS,
-    EAXAUTOWAH_ATTACKTIME,
-    EAXAUTOWAH_RELEASETIME,
-    EAXAUTOWAH_RESONANCE,
-    EAXAUTOWAH_PEAKLEVEL
-} EAXAUTOWAH_PROPERTY;
-
-// OR these flags with property id
-#define EAXAUTOWAH_IMMEDIATE 0x00000000 // changes take effect immediately
-#define EAXAUTOWAH_DEFERRED  0x80000000 // changes take effect later
-#define EAXAUTOWAH_COMMITDEFERREDSETTINGS (EAXAUTOWAH_NONE | \
-                                           EAXAUTOWAH_IMMEDIATE)
-
-// Use this structure for EAXAUTOWAH_ALLPARAMETERS
-#ifndef EAXAUTOWAHPROPERTIES_DEFINED
-#define EAXAUTOWAHPROPERTIES_DEFINED
-typedef struct _EAXAUTOWAHPROPERTIES
-{
-    float   flAttackTime;                // Attack time (seconds)
-    float   flReleaseTime;          // Release time (seconds)
-    long    lResonance;             // Resonance (mB)
-    long    lPeakLevel;             // Peak level (mB)
-} EAXAUTOWAHPROPERTIES, *LPEAXAUTOWAHPROPERTIES;
-#endif
-
-// Property ranges and defaults:
-
-#define EAXAUTOWAH_MINATTACKTIME            0.0001f 
-#define EAXAUTOWAH_MAXATTACKTIME            1.0f
-#define EAXAUTOWAH_DEFAULTATTACKTIME        0.06f
-
-#define EAXAUTOWAH_MINRELEASETIME           0.0001f
-#define EAXAUTOWAH_MAXRELEASETIME           1.0f
-#define EAXAUTOWAH_DEFAULTRELEASETIME       0.06f
-
-#define EAXAUTOWAH_MINRESONANCE             600     
-#define EAXAUTOWAH_MAXRESONANCE             6000
-#define EAXAUTOWAH_DEFAULTRESONANCE         6000
-
-#define EAXAUTOWAH_MINPEAKLEVEL             (-9000)
-#define EAXAUTOWAH_MAXPEAKLEVEL             9000
-#define EAXAUTOWAH_DEFAULTPEAKLEVEL         2100
-
-////////////////////////////////////////////////////////////////////////////
-
-
-////////////////////////////////////////////////////////////////////////////
-// Chorus Effect
-
-// EAX CHORUS {DE6D6FE0-AC79-11D2-88DD-A024D13CE1}
-
-DEFINE_GUID(EAX_CHORUS_EFFECT,
-    0xde6d6fe0,
-    0xac79,
-    0x11d2,
-    0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1);
-
-
-// Chorus properties
-typedef enum
-{
-    EAXCHORUS_NONE,
-    EAXCHORUS_ALLPARAMETERS,
-    EAXCHORUS_WAVEFORM,
-    EAXCHORUS_PHASE,
-    EAXCHORUS_RATE,
-    EAXCHORUS_DEPTH,
-    EAXCHORUS_FEEDBACK,
-    EAXCHORUS_DELAY
-} EAXCHORUS_PROPERTY;
-
-// OR these flags with property id
-#define EAXCHORUS_IMMEDIATE 0x00000000 // changes take effect immediately
-#define EAXCHORUS_DEFERRED  0x80000000 // changes take effect later
-#define EAXCHORUS_COMMITDEFERREDSETTINGS (EAXCHORUS_NONE | \
-                                          EAXCHORUS_IMMEDIATE)
-
-// used by EAXCHORUS_WAVEFORM
-enum
-{
-    EAX_CHORUS_SINUSOID,
-    EAX_CHORUS_TRIANGLE
-};
-
-// Use this structure for EAXCHORUS_ALLPARAMETERS
-#ifndef EAXCHORUSPROPERTIES_DEFINED
-#define EAXCHORUSPROPERTIES_DEFINED
-typedef struct _EAXCHORUSPROPERTIES
-{
-    unsigned long   ulWaveform;      // Waveform selector - see enum above
-    long            lPhase;         // Phase (Degrees)
-    float           flRate;         // Rate (Hz)
-    float           flDepth;        // Depth (0 to 1)
-    float           flFeedback;     // Feedback (-1 to 1)
-    float           flDelay;        // Delay (seconds)
-} EAXCHORUSPROPERTIES, *LPEAXCHORUSPROPERTIES;
-#endif
-
-// Property ranges and defaults:
-
-#define EAXCHORUS_MINWAVEFORM               0
-#define EAXCHORUS_MAXWAVEFORM               1
-#define EAXCHORUS_DEFAULTWAVEFORM           1
-
-#define EAXCHORUS_MINPHASE              (-180)
-#define EAXCHORUS_MAXPHASE              180
-#define EAXCHORUS_DEFAULTPHASE          90
-
-#define EAXCHORUS_MINRATE               0.0f
-#define EAXCHORUS_MAXRATE               10.0f
-#define EAXCHORUS_DEFAULTRATE           1.1f
-
-#define EAXCHORUS_MINDEPTH              0.0f
-#define EAXCHORUS_MAXDEPTH              1.0f
-#define EAXCHORUS_DEFAULTDEPTH          0.1f
-
-#define EAXCHORUS_MINFEEDBACK           (-1.0f)
-#define EAXCHORUS_MAXFEEDBACK           1.0f
-#define EAXCHORUS_DEFAULTFEEDBACK       0.25f
-
-#define EAXCHORUS_MINDELAY              0.0002f
-#define EAXCHORUS_MAXDELAY              0.016f
-#define EAXCHORUS_DEFAULTDELAY          0.016f
-
-////////////////////////////////////////////////////////////////////////////
-
-
-////////////////////////////////////////////////////////////////////////////
-// Distortion Effect
-
-// EAX DISTORTION {975A4CE0-AC7E-11D2-88DD-A024D13CE1}
-
-DEFINE_GUID(EAX_DISTORTION_EFFECT,
-    0x975a4ce0,
-    0xac7e,
-    0x11d2,
-    0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1);
-
-// Distortion properties
-typedef enum
-{
-    EAXDISTORTION_NONE,
-    EAXDISTORTION_ALLPARAMETERS,
-    EAXDISTORTION_EDGE,
-    EAXDISTORTION_GAIN,
-    EAXDISTORTION_LOWPASSCUTOFF,
-    EAXDISTORTION_EQCENTER,
-    EAXDISTORTION_EQBANDWIDTH
-} EAXDISTORTION_PROPERTY;
-
-// OR these flags with property id
-#define EAXDISTORTION_IMMEDIATE 0x00000000 // changes take effect immediately
-#define EAXDISTORTION_DEFERRED  0x80000000 // changes take effect later
-#define EAXDISTORTION_COMMITDEFERREDSETTINGS (EAXDISTORTION_NONE | \
-                                              EAXDISTORTION_IMMEDIATE)
-
-// Use this structure for EAXDISTORTION_ALLPARAMETERS
-#ifndef EAXDISTORTIONPROPERTIES_DEFINED
-#define EAXDISTORTIONPROPERTIES_DEFINED
-typedef struct _EAXDISTORTIONPROPERTIES
-{
-    float   flEdge;             // Controls the shape of the distortion (0 to 1)
-    long    lGain;              // Controls the post distortion gain (mB)
-    float   flLowPassCutOff;    // Controls the cut-off of the filter pre-distortion (Hz)
-    float   flEQCenter;         // Controls the center frequency of the EQ post-distortion (Hz)
-    float   flEQBandwidth;      // Controls the bandwidth of the EQ post-distortion (Hz)
-} EAXDISTORTIONPROPERTIES, *LPEAXDISTORTIONPROPERTIES;
-#endif
-
-// Property ranges and defaults:
-
-#define EAXDISTORTION_MINEDGE               0.0f
-#define EAXDISTORTION_MAXEDGE               1.0f
-#define EAXDISTORTION_DEFAULTEDGE           0.2f
-
-#define EAXDISTORTION_MINGAIN               (-6000)
-#define EAXDISTORTION_MAXGAIN               0
-#define EAXDISTORTION_DEFAULTGAIN           (-2600)
-
-#define EAXDISTORTION_MINLOWPASSCUTOFF      80.0f
-#define EAXDISTORTION_MAXLOWPASSCUTOFF      24000.0f
-#define EAXDISTORTION_DEFAULTLOWPASSCUTOFF  8000.0f
-
-#define EAXDISTORTION_MINEQCENTER           80.0f
-#define EAXDISTORTION_MAXEQCENTER           24000.0f
-#define EAXDISTORTION_DEFAULTEQCENTER       3600.0f
-
-#define EAXDISTORTION_MINEQBANDWIDTH        80.0f
-#define EAXDISTORTION_MAXEQBANDWIDTH        24000.0f
-#define EAXDISTORTION_DEFAULTEQBANDWIDTH    3600.0f
-
-////////////////////////////////////////////////////////////////////////////
-
-
-////////////////////////////////////////////////////////////////////////////
-// Echo Effect
-
-// EAX ECHO {E9F1BC0-AC82-11D2-88DD-A024D13CE1}
-
-DEFINE_GUID(EAX_ECHO_EFFECT,
-    0xe9f1bc0,
-    0xac82,
-    0x11d2,
-    0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1);
-
-// Echo properties
-typedef enum
-{
-    EAXECHO_NONE,
-    EAXECHO_ALLPARAMETERS,
-    EAXECHO_DELAY,
-    EAXECHO_LRDELAY,
-    EAXECHO_DAMPING,
-    EAXECHO_FEEDBACK,
-    EAXECHO_SPREAD
-} EAXECHO_PROPERTY;
-
-// OR these flags with property id
-#define EAXECHO_IMMEDIATE 0x00000000 // changes take effect immediately
-#define EAXECHO_DEFERRED  0x80000000 // changes take effect later
-#define EAXECHO_COMMITDEFERREDSETTINGS (EAXECHO_NONE | \
-                                        EAXECHO_IMMEDIATE)
-
-// Use this structure for EAXECHO_ALLPARAMETERS
-#ifndef EAXECHOPROPERTIES_DEFINED
-#define EAXECHOPROPERTIES_DEFINED
-typedef struct _EAXECHOPROPERTIES
-{
-    float   flDelay;            // Controls the initial delay time (seconds)
-    float   flLRDelay;          // Controls the delay time between the first and second taps (seconds)
-    float   flDamping;          // Controls a low-pass filter that dampens the echoes (0 to 1)
-    float   flFeedback;         // Controls the duration of echo repetition (0 to 1)
-    float   flSpread;           // Controls the left-right spread of the echoes
-} EAXECHOPROPERTIES, *LPEAXECHOPROPERTIES;
-#endif
-
-// Property ranges and defaults:
-                    
-#define EAXECHO_MINDAMPING          0.0f
-#define EAXECHO_MAXDAMPING          0.99f
-#define EAXECHO_DEFAULTDAMPING      0.5f
-
-#define EAXECHO_MINDELAY            0.002f
-#define EAXECHO_MAXDELAY            0.207f
-#define EAXECHO_DEFAULTDELAY        0.1f
-
-#define EAXECHO_MINLRDELAY          0.0f
-#define EAXECHO_MAXLRDELAY          0.404f
-#define EAXECHO_DEFAULTLRDELAY      0.1f
-
-#define EAXECHO_MINFEEDBACK         0.0f
-#define EAXECHO_MAXFEEDBACK         1.0f
-#define EAXECHO_DEFAULTFEEDBACK     0.5f
-
-#define EAXECHO_MINSPREAD           (-1.0f)
-#define EAXECHO_MAXSPREAD             1.0f
-#define EAXECHO_DEFAULTSPREAD       (-1.0f)
-
-////////////////////////////////////////////////////////////////////////////
-
-
-////////////////////////////////////////////////////////////////////////////
-// Equalizer Effect
-
-// EAX EQUALIZER {65F94CE0-9793-11D3-939D-C0F02DD6F0}
-
-DEFINE_GUID(EAX_EQUALIZER_EFFECT,
-    0x65f94ce0,
-    0x9793,
-    0x11d3,
-    0x93, 0x9d, 0x0, 0xc0, 0xf0, 0x2d, 0xd6, 0xf0);
-
-
-// Equalizer properties
-typedef enum
-{
-    EAXEQUALIZER_NONE,
-    EAXEQUALIZER_ALLPARAMETERS,
-    EAXEQUALIZER_LOWGAIN,
-    EAXEQUALIZER_LOWCUTOFF,
-    EAXEQUALIZER_MID1GAIN,
-    EAXEQUALIZER_MID1CENTER,
-    EAXEQUALIZER_MID1WIDTH,
-    EAXEQUALIZER_MID2GAIN,
-    EAXEQUALIZER_MID2CENTER,
-    EAXEQUALIZER_MID2WIDTH,
-    EAXEQUALIZER_HIGHGAIN,
-    EAXEQUALIZER_HIGHCUTOFF
-} EAXEQUALIZER_PROPERTY;
-
-// OR these flags with property id
-#define EAXEQUALIZER_IMMEDIATE 0x00000000 // changes take effect immediately
-#define EAXEQUALIZER_DEFERRED  0x80000000 // changes take effect later
-#define EAXEQUALIZER_COMMITDEFERREDSETTINGS (EAXEQUALIZER_NONE | \
-                                             EAXEQUALIZER_IMMEDIATE)
-
-// Use this structure for EAXEQUALIZER_ALLPARAMETERS
-#ifndef EAXEQUALIZERPROPERTIES_DEFINED
-#define EAXEQUALIZERPROPERTIES_DEFINED
-typedef struct _EAXEQUALIZERPROPERTIES
-{
-    long    lLowGain;           // (mB)
-    float   flLowCutOff;        // (Hz)
-    long    lMid1Gain;          // (mB)
-    float   flMid1Center;       // (Hz)
-    float   flMid1Width;        // (octaves)
-    long    lMid2Gain;          // (mB)
-    float   flMid2Center;       // (Hz)
-    float   flMid2Width;        // (octaves)
-    long    lHighGain;          // (mB)
-    float   flHighCutOff;       // (Hz)
-} EAXEQUALIZERPROPERTIES, *LPEAXEQUALIZERPROPERTIES;
-#endif
-
-// Property ranges and defaults:
-
-#define EAXEQUALIZER_MINLOWGAIN         (-1800)
-#define EAXEQUALIZER_MAXLOWGAIN         1800
-#define EAXEQUALIZER_DEFAULTLOWGAIN     0
-
-#define EAXEQUALIZER_MINLOWCUTOFF       50.0f
-#define EAXEQUALIZER_MAXLOWCUTOFF       800.0f
-#define EAXEQUALIZER_DEFAULTLOWCUTOFF   200.0f
-
-#define EAXEQUALIZER_MINMID1GAIN        (-1800)
-#define EAXEQUALIZER_MAXMID1GAIN        1800
-#define EAXEQUALIZER_DEFAULTMID1GAIN    0
-
-#define EAXEQUALIZER_MINMID1CENTER      200.0f
-#define EAXEQUALIZER_MAXMID1CENTER      3000.0f
-#define EAXEQUALIZER_DEFAULTMID1CENTER  500.0f
-
-#define EAXEQUALIZER_MINMID1WIDTH       0.01f
-#define EAXEQUALIZER_MAXMID1WIDTH       1.0f
-#define EAXEQUALIZER_DEFAULTMID1WIDTH   1.0f
-
-#define EAXEQUALIZER_MINMID2GAIN        (-1800)
-#define EAXEQUALIZER_MAXMID2GAIN        1800
-#define EAXEQUALIZER_DEFAULTMID2GAIN    0
-
-#define EAXEQUALIZER_MINMID2CENTER      1000.0f
-#define EAXEQUALIZER_MAXMID2CENTER      8000.0f
-#define EAXEQUALIZER_DEFAULTMID2CENTER  3000.0f
-
-#define EAXEQUALIZER_MINMID2WIDTH       0.01f
-#define EAXEQUALIZER_MAXMID2WIDTH       1.0f
-#define EAXEQUALIZER_DEFAULTMID2WIDTH   1.0f
-
-#define EAXEQUALIZER_MINHIGHGAIN        (-1800)
-#define EAXEQUALIZER_MAXHIGHGAIN        1800
-#define EAXEQUALIZER_DEFAULTHIGHGAIN    0
-
-#define EAXEQUALIZER_MINHIGHCUTOFF      4000.0f
-#define EAXEQUALIZER_MAXHIGHCUTOFF      16000.0f
-#define EAXEQUALIZER_DEFAULTHIGHCUTOFF  6000.0f
-
-////////////////////////////////////////////////////////////////////////////
-
-
-////////////////////////////////////////////////////////////////////////////
-// Flanger Effect
-
-// EAX FLANGER {A70007C0-7D2-11D3-9B1E-A024D13CE1}
-
-DEFINE_GUID(EAX_FLANGER_EFFECT,
-    0xa70007c0,
-    0x7d2,
-    0x11d3,
-    0x9b, 0x1e, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1);
-
-// Flanger properties
-typedef enum
-{
-    EAXFLANGER_NONE,
-    EAXFLANGER_ALLPARAMETERS,
-    EAXFLANGER_WAVEFORM,
-    EAXFLANGER_PHASE,
-    EAXFLANGER_RATE,
-    EAXFLANGER_DEPTH,
-    EAXFLANGER_FEEDBACK,
-    EAXFLANGER_DELAY
-} EAXFLANGER_PROPERTY;
-
-// OR these flags with property id
-#define EAXFLANGER_IMMEDIATE 0x00000000 // changes take effect immediately
-#define EAXFLANGER_DEFERRED  0x80000000 // changes take effect later
-#define EAXFLANGER_COMMITDEFERREDSETTINGS (EAXFLANGER_NONE | \
-                                           EAXFLANGER_IMMEDIATE)
-
-// used by EAXFLANGER_WAVEFORM
-enum
-{
-    EAX_FLANGER_SINUSOID,
-    EAX_FLANGER_TRIANGLE
-};
-
-// Use this structure for EAXFLANGER_ALLPARAMETERS
-#ifndef EAXFLANGERPROPERTIES_DEFINED
-#define EAXFLANGERPROPERTIES_DEFINED
-typedef struct _EAXFLANGERPROPERTIES
-{
-    unsigned long   ulWaveform;  // Waveform selector - see enum above
-    long            lPhase;     // Phase (Degrees)
-    float           flRate;     // Rate (Hz)
-    float           flDepth;    // Depth (0 to 1)
-    float           flFeedback; // Feedback (0 to 1)
-    float           flDelay;    // Delay (seconds)
-} EAXFLANGERPROPERTIES, *LPEAXFLANGERPROPERTIES;
-#endif
-
-// Property ranges and defaults:
-
-#define EAXFLANGER_MINWAVEFORM              0
-#define EAXFLANGER_MAXWAVEFORM              1
-#define EAXFLANGER_DEFAULTWAVEFORM          1
-
-#define EAXFLANGER_MINPHASE             (-180)
-#define EAXFLANGER_MAXPHASE             180
-#define EAXFLANGER_DEFAULTPHASE         0
-
-#define EAXFLANGER_MINRATE              0.0f
-#define EAXFLANGER_MAXRATE              10.0f
-#define EAXFLANGER_DEFAULTRATE          0.27f
-
-#define EAXFLANGER_MINDEPTH             0.0f
-#define EAXFLANGER_MAXDEPTH             1.0f
-#define EAXFLANGER_DEFAULTDEPTH         1.0f
-
-#define EAXFLANGER_MINFEEDBACK          (-1.0f)
-#define EAXFLANGER_MAXFEEDBACK          1.0f
-#define EAXFLANGER_DEFAULTFEEDBACK      (-0.5f)
-
-#define EAXFLANGER_MINDELAY             0.0002f
-#define EAXFLANGER_MAXDELAY             0.004f
-#define EAXFLANGER_DEFAULTDELAY         0.002f
-
-////////////////////////////////////////////////////////////////////////////
-
-
-////////////////////////////////////////////////////////////////////////////
-// Frequency Shifter Effect
-
-// EAX FREQUENCY SHIFTER {DC3E1880-9212-11D3-939D-C0F02DD6F0}
-
-DEFINE_GUID(EAX_FREQUENCYSHIFTER_EFFECT,
-    0xdc3e1880,
-    0x9212,
-    0x11d3,
-    0x93, 0x9d, 0x0, 0xc0, 0xf0, 0x2d, 0xd6, 0xf0);
-
-// Frequency Shifter properties
-typedef enum
-{
-    EAXFREQUENCYSHIFTER_NONE,
-    EAXFREQUENCYSHIFTER_ALLPARAMETERS,
-    EAXFREQUENCYSHIFTER_FREQUENCY,
-    EAXFREQUENCYSHIFTER_LEFTDIRECTION,
-    EAXFREQUENCYSHIFTER_RIGHTDIRECTION
-} EAXFREQUENCYSHIFTER_PROPERTY;
-
-// OR these flags with property id
-#define EAXFREQUENCYSHIFTER_IMMEDIATE 0x00000000 // changes take effect immediately
-#define EAXFREQUENCYSHIFTER_DEFERRED  0x80000000 // changes take effect later
-#define EAXFREQUENCYSHIFTER_COMMITDEFERREDSETTINGS (EAXFREQUENCYSHIFTER_NONE | \
-                                                    EAXFREQUENCYSHIFTER_IMMEDIATE)
-
-// used by EAXFREQUENCYSHIFTER_LEFTDIRECTION and EAXFREQUENCYSHIFTER_RIGHTDIRECTION 
-enum
-{
-    EAX_FREQUENCYSHIFTER_DOWN,
-    EAX_FREQUENCYSHIFTER_UP,
-    EAX_FREQUENCYSHIFTER_OFF
-};
-
-// Use this structure for EAXFREQUENCYSHIFTER_ALLPARAMETERS
-#ifndef EAXFREQUENCYSHIFTERPROPERTIES_DEFINED
-#define EAXFREQUENCYSHIFTERPROPERTIES_DEFINED
-typedef struct _EAXFREQUENCYSHIFTERPROPERTIES
-{
-    float           flFrequency;        // (Hz)
-    unsigned long   ulLeftDirection;     // see enum above
-    unsigned long   ulRightDirection;    // see enum above
-} EAXFREQUENCYSHIFTERPROPERTIES, *LPEAXFREQUENCYSHIFTERPROPERTIES;
-#endif
-
-// Property ranges and defaults:
-
-#define EAXFREQUENCYSHIFTER_MINFREQUENCY            0.0f
-#define EAXFREQUENCYSHIFTER_MAXFREQUENCY            24000.0f
-#define EAXFREQUENCYSHIFTER_DEFAULTFREQUENCY        0.0f
-
-#define EAXFREQUENCYSHIFTER_MINLEFTDIRECTION        0
-#define EAXFREQUENCYSHIFTER_MAXLEFTDIRECTION        2
-#define EAXFREQUENCYSHIFTER_DEFAULTLEFTDIRECTION    0
-
-#define EAXFREQUENCYSHIFTER_MINRIGHTDIRECTION       0
-#define EAXFREQUENCYSHIFTER_MAXRIGHTDIRECTION       2
-#define EAXFREQUENCYSHIFTER_DEFAULTRIGHTDIRECTION   0
-
-////////////////////////////////////////////////////////////////////////////
-
-
-////////////////////////////////////////////////////////////////////////////
-// Vocal Morpher Effect
-
-// EAX VOCAL MORPHER {E41CF10C-3383-11D2-88DD-A024D13CE1}
-
-DEFINE_GUID(EAX_VOCALMORPHER_EFFECT, 
-    0xe41cf10c,
-    0x3383,
-    0x11d2,
-    0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1);
-
-// Vocal Morpher properties
-typedef enum
-{
-    EAXVOCALMORPHER_NONE,
-    EAXVOCALMORPHER_ALLPARAMETERS,
-    EAXVOCALMORPHER_PHONEMEA,
-    EAXVOCALMORPHER_PHONEMEACOARSETUNING,
-    EAXVOCALMORPHER_PHONEMEB,
-    EAXVOCALMORPHER_PHONEMEBCOARSETUNING,
-    EAXVOCALMORPHER_WAVEFORM,
-    EAXVOCALMORPHER_RATE
-} EAXVOCALMORPHER_PROPERTY;
-
-// OR these flags with property id
-#define EAXVOCALMORPHER_IMMEDIATE 0x00000000 // changes take effect immediately
-#define EAXVOCALMORPHER_DEFERRED  0x80000000 // changes take effect later
-#define EAXVOCALMORPHER_COMMITDEFERREDSETTINGS (EAXVOCALMORPHER_NONE | \
-                                                EAXVOCALMORPHER_IMMEDIATE)
-
-// used by EAXVOCALMORPHER_PHONEMEA and EAXVOCALMORPHER_PHONEMEB
-enum
-{
-    A, E, I, O, U, AA, AE, AH, AO, EH, ER, IH, IY, UH, UW, B, D, F, G,
-    J, K, L, M, N, P, R, S, T, V, Z
-};
-
-// used by EAXVOCALMORPHER_WAVEFORM
-enum
-{
-    EAX_VOCALMORPHER_SINUSOID,
-    EAX_VOCALMORPHER_TRIANGLE,
-    EAX_VOCALMORPHER_SAWTOOTH
-};
-
-// Use this structure for EAXVOCALMORPHER_ALLPARAMETERS
-#ifndef EAXVOCALMORPHERPROPERTIES_DEFINED
-#define EAXVOCALMORPHERPROPERTIES_DEFINED
-typedef struct _EAXVOCALMORPHERPROPERTIES
-{
-    unsigned long   ulPhonemeA;              // see enum above
-    long            lPhonemeACoarseTuning;  // (semitones)
-    unsigned long   ulPhonemeB;              // see enum above
-    long            lPhonemeBCoarseTuning;  // (semitones)
-    unsigned long   ulWaveform;              // Waveform selector - see enum above
-    float           flRate;                 // (Hz)
-} EAXVOCALMORPHERPROPERTIES, *LPEAXVOCALMORPHERPROPERTIES;
-#endif
-
-// Property ranges and defaults:
-
-#define EAXVOCALMORPHER_MINPHONEMEA                 0
-#define EAXVOCALMORPHER_MAXPHONEMEA                 29
-#define EAXVOCALMORPHER_DEFAULTPHONEMEA             0
-
-#define EAXVOCALMORPHER_MINPHONEMEACOARSETUNING     (-24)
-#define EAXVOCALMORPHER_MAXPHONEMEACOARSETUNING     24
-#define EAXVOCALMORPHER_DEFAULTPHONEMEACOARSETUNING 0
-
-#define EAXVOCALMORPHER_MINPHONEMEB                 0
-#define EAXVOCALMORPHER_MAXPHONEMEB                 29
-#define EAXVOCALMORPHER_DEFAULTPHONEMEB             10
-
-#define EAXVOCALMORPHER_MINPHONEMEBCOARSETUNING     (-24)
-#define EAXVOCALMORPHER_MAXPHONEMEBCOARSETUNING     24
-#define EAXVOCALMORPHER_DEFAULTPHONEMEBCOARSETUNING 0
-
-#define EAXVOCALMORPHER_MINWAVEFORM                 0
-#define EAXVOCALMORPHER_MAXWAVEFORM                 2
-#define EAXVOCALMORPHER_DEFAULTWAVEFORM             0
-
-#define EAXVOCALMORPHER_MINRATE                     0.0f
-#define EAXVOCALMORPHER_MAXRATE                     10.0f
-#define EAXVOCALMORPHER_DEFAULTRATE                 1.41f
-
-////////////////////////////////////////////////////////////////////////////
-
-
-////////////////////////////////////////////////////////////////////////////
-// Pitch Shifter Effect
-
-// EAX PITCH SHIFTER {E7905100-AFB2-11D2-88DD-A024D13CE1}
-
-DEFINE_GUID(EAX_PITCHSHIFTER_EFFECT,
-    0xe7905100,
-    0xafb2,
-    0x11d2,
-    0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1);
-
-// Pitch Shifter properties
-typedef enum
-{
-    EAXPITCHSHIFTER_NONE,
-    EAXPITCHSHIFTER_ALLPARAMETERS,
-    EAXPITCHSHIFTER_COARSETUNE,
-    EAXPITCHSHIFTER_FINETUNE
-} EAXPITCHSHIFTER_PROPERTY;
-
-// OR these flags with property id
-#define EAXPITCHSHIFTER_IMMEDIATE 0x00000000 // changes take effect immediately
-#define EAXPITCHSHIFTER_DEFERRED  0x80000000 // changes take effect later
-#define EAXPITCHSHIFTER_COMMITDEFERREDSETTINGS (EAXPITCHSHIFTER_NONE | \
-                                                EAXPITCHSHIFTER_IMMEDIATE)
-
-// Use this structure for EAXPITCHSHIFTER_ALLPARAMETERS
-#ifndef EAXPITCHSHIFTERPROPERTIES_DEFINED
-#define EAXPITCHSHIFTERPROPERTIES_DEFINED
-typedef struct _EAXPITCHSHIFTERPROPERTIES
-{
-    long    lCoarseTune;    // Amount of pitch shift (semitones)
-    long    lFineTune;      // Amount of pitch shift (cents)
-} EAXPITCHSHIFTERPROPERTIES, *LPEAXPITCHSHIFTERPROPERTIES;
-#endif
-
-// Property ranges and defaults:
-
-#define EAXPITCHSHIFTER_MINCOARSETUNE       (-12)
-#define EAXPITCHSHIFTER_MAXCOARSETUNE       12
-#define EAXPITCHSHIFTER_DEFAULTCOARSETUNE   12
-
-#define EAXPITCHSHIFTER_MINFINETUNE         (-50)
-#define EAXPITCHSHIFTER_MAXFINETUNE         50
-#define EAXPITCHSHIFTER_DEFAULTFINETUNE     0
-
-////////////////////////////////////////////////////////////////////////////
-
-
-////////////////////////////////////////////////////////////////////////////
-// Ring Modulator Effect
-
-// EAX RING MODULATOR {B89FE60-AFB5-11D2-88DD-A024D13CE1}
-
-DEFINE_GUID(EAX_RINGMODULATOR_EFFECT,
-    0xb89fe60,
-    0xafb5,
-    0x11d2,
-    0x88, 0xdd, 0x0, 0xa0, 0x24, 0xd1, 0x3c, 0xe1);
-
-// Ring Modulator properties
-typedef enum
-{
-    EAXRINGMODULATOR_NONE,
-    EAXRINGMODULATOR_ALLPARAMETERS,
-    EAXRINGMODULATOR_FREQUENCY,
-    EAXRINGMODULATOR_HIGHPASSCUTOFF,
-    EAXRINGMODULATOR_WAVEFORM
-} EAXRINGMODULATOR_PROPERTY;
-
-// OR these flags with property id
-#define EAXRINGMODULATOR_IMMEDIATE 0x00000000 // changes take effect immediately
-#define EAXRINGMODULATOR_DEFERRED  0x80000000 // changes take effect later
-#define EAXRINGMODULATOR_COMMITDEFERREDSETTINGS (EAXRINGMODULATOR_NONE | \
-                                                 EAXRINGMODULATOR_IMMEDIATE)
-
-// used by EAXRINGMODULATOR_WAVEFORM
-enum
-{
-    EAX_RINGMODULATOR_SINUSOID,
-    EAX_RINGMODULATOR_SAWTOOTH,
-    EAX_RINGMODULATOR_SQUARE
-};
-
-// Use this structure for EAXRINGMODULATOR_ALLPARAMETERS
-#ifndef EAXRINGMODULATORPROPERTIES_DEFINED
-#define EAXRINGMODULATORPROPERTIES_DEFINED
-typedef struct _EAXRINGMODULATORPROPERTIES
-{
-    float           flFrequency;        // Frequency of modulation (Hz)
-    float           flHighPassCutOff;   // Cut-off frequency of high-pass filter (Hz)
-    unsigned long   ulWaveform;          // Waveform selector - see enum above
-} EAXRINGMODULATORPROPERTIES, *LPEAXRINGMODULATORPROPERTIES;
-#endif
-
-// Property ranges and defaults:
-
-#define EAXRINGMODULATOR_MINFREQUENCY           0.0f
-#define EAXRINGMODULATOR_MAXFREQUENCY           8000.0f
-#define EAXRINGMODULATOR_DEFAULTFREQUENCY       440.0f
-
-#define EAXRINGMODULATOR_MINHIGHPASSCUTOFF      0.0f
-#define EAXRINGMODULATOR_MAXHIGHPASSCUTOFF      24000.0f
-#define EAXRINGMODULATOR_DEFAULTHIGHPASSCUTOFF  800.0f
-
-#define EAXRINGMODULATOR_MINWAVEFORM            0
-#define EAXRINGMODULATOR_MAXWAVEFORM            2
-#define EAXRINGMODULATOR_DEFAULTWAVEFORM        0
-
-////////////////////////////////////////////////////////////////////////////
-
-#pragma pack(pop)
-
-#ifdef __cplusplus
-}
-#endif // __cplusplus
-
-#endif
diff --git a/neo/openal/include/eaxac3.h b/neo/openal/include/eaxac3.h
deleted file mode 100644
index 450224e7..00000000
--- a/neo/openal/include/eaxac3.h
+++ /dev/null
@@ -1,232 +0,0 @@
-/************************************************************************************************
-/
-/ EAX-AC3 Open AL Extension Header file
-/
-/ Description : The EAX-AC3 extension to Open AL provides a way to playback Dolby Digital AC3
-/				files on systems equipped with a SB Live! card.  The packaged AC3 data is output
-/				via the MMSYSTEM Wave device.
-/				If a SB Live! 5.1 card is installed then the AC3 data will be decoded by the
-/				audio card.
-/				If a legacy SB Live! card is installed then the AC3 data will be sent directly
-/				to the S/PDIF Out.
-/				The API supports multiple EAX-AC3 devices, and multiple AC3 streams. However
-/				the current implementation provides one EAX-AC3 device capable of playing
-/				one AC3 Stream at a time.
-/
-/ Programmer  : Daniel Peacock		Creative Labs, Inc	February 2001
-/
-/************************************************************************************************/
-
-#ifndef _EAXAC3_H_
-#define _EAXAC3_H_
-
-// Do not define the symbol EAXAC3_EXPORTS in any projects that use the EAX-AC3 Open AL Extension
-#ifdef EAXAC3_EXPORTS
-#define EAXAC3_API __declspec(dllexport)
-#else
-#define EAXAC3_API __declspec(dllimport)
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef _HRESULT_DEFINED
-#define _HRESULT_DEFINED
-typedef signed long HRESULT;
-#endif
-
-enum POSFORMAT { MILLISECONDS, BYTES, AC3FRAMES };
-
-enum SOURCE { AC3FILE, MEMORY };
-
-// Success Codes
-#define EAXAC3_OK										0
-#define EAXAC3_ALREADYPLAYING							1
-#define EAXAC3_EOF										2
-
-// Error Codes
-#define EAXAC3ERR_UNABLETOOPENEAXAC3DEVICE				 -1
-#define EAXAC3ERR_WAVEOUTPREPAREHEADERFAILURE			 -2
-#define EAXAC3ERR_OUTOFMEMORY							 -3
-#define	EAXAC3ERR_FILENOTFOUND							 -4
-#define EAXAC3ERR_AC3FILETOBIG							 -5
-#define EAXAC3ERR_AC3FRAMENOTFOUND						 -6
-#define EAXAC3ERR_AC3NOTAT48KHZ							 -7
-#define EAXAC3ERR_INVALIDAC3FRAME						 -8
-#define EAXAC3ERR_AC3FILENOTOPEN						 -9
-#define EAXAC3ERR_BUFFERNOTMULTIPLEOFAC3FRAMESIZE		-10
-#define EAXAC3ERR_WAVEOUTERROR							-11
-#define EAXAC3ERR_FAILEDTOCREATEEVENT					-12
-#define EAXAC3ERR_EAXAC3DEVICENOTOPEN					-13
-#define EAXAC3ERR_AC3STREAMALREADYOPEN					-14
-#define EAXAC3ERR_POSITIONOUTOFRANGE					-15
-#define EAXAC3ERR_NOTATSTARTOFAC3FRAME					-16
-#define EAXAC3ERR_AC3STREAMNOTOPEN						-17
-#define EAXAC3ERR_SETPOSITIONONLYWORKSONAC3FILES		-18
-#define EAXAC3ERR_WRITEDATAONLYWORKSWITHMEMORYSTREAMS	-19
-#define EAXAC3ERR_INVALIDPARAMETER						-20
-#define EAXAC3ERR_NOTENOUGHAC3DATAINAC3DATABUFFER		-21
-#define EAXAC3ERR_NOTENOUGHDATA							-22
-#define EAXAC3ERR_EAXAC3DEVICEALREADYOPEN				-23
-#define EAXAC3ERR_EAXAC3DEVICENOTFOUND					-24
-#define EAXAC3ERR_UNSUPPORTED							-25
-#define EAXAC3ERR_FAILEDTOCREATEFNTABLE					-26
-
-#define DEFAULTEAXAC3DEVICE	0
-
-#define ENTIREBUFFER	0
-#define FROMWRITECURSOR	1
-
-#define LOOPING		1
-
-#define ENDOFDATA	1
-
-typedef unsigned int EAXAC3HANDLE;
-
-typedef unsigned int AC3STREAM;
-
-// Callback function
-typedef void (__stdcall *LPAC3CALLBACK)(AC3STREAM AC3Stream, int msg);
-
-// Callback messages
-#define EAXAC3NEEDMOREDATA	0
-#define EAXAC3REACHEDEND	1
-
-typedef struct
-{
-	unsigned int nNumOfAC3Frames;
-	unsigned int nAC3FrameSize;
-	unsigned int nSizeOfFile;
-	unsigned int nDuration;
-	unsigned int nFrequency;
-} AC3FILEINFO, *LPAC3FILEINFO;
-
-#define UNKNOWN			1
-#define SPDIFPASSTHRU	2
-#define FULLDECODE		4
-
-typedef struct
-{
-	char szDeviceName[256];
-	unsigned int uFlags;
-	unsigned int uStreams;
-	unsigned int uReserved;
-} EAXAC3DEVICEINFO, *LPEAXAC3DEVICEINFO;
-
-// Function typedefs
-
-typedef int		(*LPEAXAC3QUERYNUMBEROFDEVICES)		(void);
-typedef HRESULT (*LPEAXAC3QUERYFILE)				(char *, LPAC3FILEINFO, int);
-typedef HRESULT (*LPEAXAC3QUERYMEMORY)				(char *, int, LPAC3FILEINFO, int);
-typedef int		(*LPEAXAC3QUERYNOOFFRAMESREQFORPLAYBACK)	(AC3STREAM);
-typedef HRESULT	(*LPEAXAC3OPENPLAYBACKDEVICE)		(EAXAC3HANDLE);
-typedef HRESULT	(*LPEAXAC3CLOSEPLAYBACKDEVICE)		(EAXAC3HANDLE);
-typedef HRESULT	(*LPEAXAC3QUERYDEVICECAPS)			(EAXAC3HANDLE, LPEAXAC3DEVICEINFO, int);
-typedef HRESULT	(*LPEAXAC3GETPOSITION)				(AC3STREAM, enum POSFORMAT, int *);
-typedef HRESULT (*LPEAXAC3SETFILEPOSITION)			(AC3STREAM, enum POSFORMAT, int);
-typedef HRESULT (*LPEAXAC3OPENSTREAM)				(EAXAC3HANDLE, AC3STREAM *, LPAC3CALLBACK, char *, enum SOURCE);
-typedef HRESULT (*LPEAXAC3CLOSESTREAM)				(AC3STREAM);
-typedef HRESULT (*LPEAXAC3PREPLAYSTREAM)			(AC3STREAM);
-typedef HRESULT (*LPEAXAC3PLAYSTREAM)				(AC3STREAM, int);
-typedef HRESULT (*LPEAXAC3STOPSTREAM)				(AC3STREAM);
-typedef HRESULT	(*LPEAXAC3PAUSESTREAM)				(AC3STREAM);
-typedef HRESULT	(*LPEAXAC3RESUMESTREAM)				(AC3STREAM);
-typedef HRESULT (*LPEAXAC3LOCKBUFFER)				(AC3STREAM, unsigned long, void **, unsigned long *, void **,
-														unsigned long *, unsigned long);
-typedef HRESULT (*LPEAXAC3UNLOCKBUFFER)				(AC3STREAM, void *, unsigned long, void *, unsigned long, int);
-typedef HRESULT	(*LPEAXAC3SETPLAYBACKMODE)			(EAXAC3HANDLE, unsigned int);
-typedef char *	(*LPEAXAC3GETERRORSTRING)			(HRESULT, char *, int);
-typedef HRESULT (*LPEAXAC3GETLASTERROR)				(HRESULT *);
-
-// Function table declaration
-typedef struct 
-{
-	LPEAXAC3QUERYNUMBEROFDEVICES					EAXAC3QueryNumberOfDevices;
-	LPEAXAC3QUERYFILE								EAXAC3QueryFile;
-	LPEAXAC3QUERYMEMORY								EAXAC3QueryMemory;
-	LPEAXAC3QUERYNOOFFRAMESREQFORPLAYBACK			EAXAC3QueryNoOfFramesReqForPlayback;
-	LPEAXAC3OPENPLAYBACKDEVICE						EAXAC3OpenPlaybackDevice;
-	LPEAXAC3CLOSEPLAYBACKDEVICE						EAXAC3ClosePlaybackDevice;
-	LPEAXAC3QUERYDEVICECAPS							EAXAC3QueryDeviceCaps;
-	LPEAXAC3GETPOSITION								EAXAC3GetPosition;
-	LPEAXAC3SETFILEPOSITION							EAXAC3SetFilePosition;
-	LPEAXAC3OPENSTREAM								EAXAC3OpenStream;
-	LPEAXAC3CLOSESTREAM								EAXAC3CloseStream;
-	LPEAXAC3PREPLAYSTREAM							EAXAC3PrePlayStream;
-	LPEAXAC3PLAYSTREAM								EAXAC3PlayStream;
-	LPEAXAC3STOPSTREAM								EAXAC3StopStream;
-	LPEAXAC3PAUSESTREAM								EAXAC3PauseStream;
-	LPEAXAC3RESUMESTREAM							EAXAC3ResumeStream;
-	LPEAXAC3LOCKBUFFER								EAXAC3LockBuffer;
-	LPEAXAC3UNLOCKBUFFER							EAXAC3UnLockBuffer;
-	LPEAXAC3SETPLAYBACKMODE							EAXAC3SetPlaybackMode;
-	LPEAXAC3GETERRORSTRING							EAXAC3GetErrorString;
-	LPEAXAC3GETLASTERROR							EAXAC3GetLastError;
-} EAXAC3FNTABLE, *LPEAXAC3FNTABLE;
-
-
-#ifndef OPENAL
-typedef EAXAC3_API HRESULT (*LPEAXAC3GETFUNCTIONTABLE)		(LPEAXAC3FNTABLE);
-#else
-typedef ALboolean (*LPALEAXAC3GETFUNCTIONTABLE) (LPEAXAC3FNTABLE);
-#endif
-
-// Functions exposed in the DLL
-
-EAXAC3_API HRESULT EAXAC3GetFunctionTable(LPEAXAC3FNTABLE lpEAXAC3FnTable);
-
-EAXAC3_API int	   EAXAC3QueryNumberOfDevices();
-
-EAXAC3_API HRESULT EAXAC3QueryFile(char *szAC3Filename, LPAC3FILEINFO lpAC3Caps, int nSizeOfAC3FileInfoStruct);
-
-EAXAC3_API HRESULT EAXAC3QueryMemory(char *lpBuffer, int nSizeOfBuffer, LPAC3FILEINFO lpAC3FileInfo,
-									 int nSizeOfAC3FileInfoStruct);
-
-EAXAC3_API int     EAXAC3QueryNoOfFramesReqForPlayback(AC3STREAM AC3Stream);
-
-EAXAC3_API HRESULT EAXAC3OpenPlaybackDevice(EAXAC3HANDLE EAXAC3Handle);
-
-EAXAC3_API HRESULT EAXAC3ClosePlaybackDevice(EAXAC3HANDLE EAXAC3Handle);
-
-EAXAC3_API HRESULT EAXAC3QueryDeviceCaps(EAXAC3HANDLE EAXAC3Handle, LPEAXAC3DEVICEINFO lpEAXAC3DeviceInfo,
-										 int nSizeOfAC3DeviceInfoStruct);
-
-EAXAC3_API HRESULT EAXAC3GetPosition(AC3STREAM AC3Stream, enum POSFORMAT posFormat, int *lpAmount);
-
-EAXAC3_API HRESULT EAXAC3SetFilePosition(AC3STREAM AC3Stream, enum POSFORMAT posFormat, int nAmount);
-
-EAXAC3_API HRESULT EAXAC3OpenStream(EAXAC3HANDLE EAXAC3Handle, AC3STREAM *lpAC3Stream,
-									LPAC3CALLBACK pAC3CallbackFn, char *szAC3Filename, enum SOURCE src);
-
-EAXAC3_API HRESULT EAXAC3CloseStream(AC3STREAM AC3Stream);
-
-EAXAC3_API HRESULT EAXAC3PrePlayStream(AC3STREAM AC3Stream);
-
-EAXAC3_API HRESULT EAXAC3PlayStream(AC3STREAM AC3Stream, int nLooping);
-
-EAXAC3_API HRESULT EAXAC3StopStream(AC3STREAM AC3Stream);
-
-EAXAC3_API HRESULT EAXAC3PauseStream(AC3STREAM AC3Stream);
-
-EAXAC3_API HRESULT EAXAC3ResumeStream(AC3STREAM AC3Stream);
-
-EAXAC3_API HRESULT EAXAC3LockBuffer(AC3STREAM AC3Stream, unsigned long ulBytes, void **ppvPointer1,
-									unsigned long *pdwBytes1, void **ppvPointer2, unsigned long *pdwBytes2,
-									unsigned long ulFlags);
-
-EAXAC3_API HRESULT EAXAC3UnLockBuffer(AC3STREAM AC3Stream, void *pvPointer1, unsigned long ulSize1,
-									  void *pvPointer2, unsigned long ulSize2, int nFinished);
-
-EAXAC3_API HRESULT EAXAC3SetPlaybackMode(EAXAC3HANDLE EAXAC3Handle, unsigned int ulPlayMode);
-
-EAXAC3_API char *  EAXAC3GetErrorString(HRESULT hr, char *szErrorString, int nSizeOfErrorString);
-
-EAXAC3_API HRESULT EAXAC3GetLastError(HRESULT *hr);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/neo/openal/include/eaxman.h b/neo/openal/include/eaxman.h
deleted file mode 100644
index b54ea1d8..00000000
--- a/neo/openal/include/eaxman.h
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
-*/
-#ifndef __EAXMANH
-#define __EAXMANH
-
-#define COM_NO_WINDOWS_H
-#include <objbase.h>
-#include "eax3.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif // __cplusplus
-
-//#define CLSID_EAXMANAGER CLSID_EAX20_Manager
-//#define IID_IEaxManager IID_EAX20_Manager
-#define EM_MAX_NAME 32
-
-#define EMFLAG_IDDEFAULT (-1)
-#define EMFLAG_IDNONE (-2)
-#define EMFLAG_LOCKPOSITION 1
-#define EMFLAG_LOADFROMMEMORY 2
-#define EMFLAG_NODIFFRACTION 4
-
-typedef struct _EMPOINT {
- float fX;
- float fY;
- float fZ;
-} EMPOINT;
-typedef EMPOINT FAR *LPEMPOINT;
-
-typedef struct _LISTENERATTRIBUTES {
- float fDistanceFactor;
- float fRolloffFactor;
- float fDopplerFactor;
-} LISTENERATTRIBUTES;
-typedef LISTENERATTRIBUTES FAR *LPLISTENERATTRIBUTES;
-
-typedef struct _SOURCEATTRIBUTES {
- EAXBUFFERPROPERTIES eaxAttributes;
- unsigned long       ulInsideConeAngle;
- unsigned long       ulOutsideConeAngle;
- long                lConeOutsideVolume;
- float               fConeXdir;
- float               fConeYdir;
- float               fConeZdir;
- float               fMinDistance;
- float               fMaxDistance;
- long                lDupCount;
- long                lPriority;
-} SOURCEATTRIBUTES; 
-typedef SOURCEATTRIBUTES FAR *LPSOURCEATTRIBUTES;
-
-typedef struct _MATERIALATTRIBUTES {
- long  lLevel;
- float fLFRatio;
- float fRoomRatio;
- DWORD dwFlags;
-} MATERIALATTRIBUTES;
-typedef MATERIALATTRIBUTES FAR *LPMATERIALATTRIBUTES;
-
-#define EMMATERIAL_OBSTRUCTS 1
-#define EMMATERIAL_OCCLUDES 3
-
-typedef struct _DIFFRACTIONBOX {
- long    lSubspaceID;
- EMPOINT empMin;
- EMPOINT empMax;
-} DIFFRACTIONBOX;
-typedef DIFFRACTIONBOX FAR *LPDIFFRACTIONBOX;
-
-// {7CE4D6E6-562F-11d3-8812-005004062F83}
-DEFINE_GUID(CLSID_EAXMANAGER, 0x60b721a1, 0xf7c8, 0x11d2, 0xa0, 0x2e, 0x0, 0x50, 0x4, 0x6, 0x18, 0xb8);
-
-#ifdef __cplusplus
-struct IEaxManager;
-#endif // __cplusplus
-
-typedef struct IEaxManager *LPEAXMANAGER;
-
-// {7CE4D6E8-562F-11d3-8812-005004062F83}
-DEFINE_GUID(IID_IEaxManager, 0x60b721a2, 0xf7c8, 0x11d2, 0xa0, 0x2e, 0x0, 0x50, 0x4, 0x6, 0x18, 0xb8);
-
-#undef INTERFACE
-#define INTERFACE IEaxManager
-
-extern HRESULT __stdcall EaxManagerCreate(LPEAXMANAGER*);
-typedef HRESULT (__stdcall *LPEAXMANAGERCREATE)(LPEAXMANAGER*);
-
-DECLARE_INTERFACE_(IEaxManager, IUnknown)
-{
- // IUnknown methods
- STDMETHOD(QueryInterface)       (THIS_ REFIID, LPVOID *) PURE;
- STDMETHOD_(ULONG,AddRef)        (THIS) PURE;
- STDMETHOD_(ULONG,Release)       (THIS) PURE;
-
- STDMETHOD(GetDataSetSize) (THIS_ unsigned long*, DWORD) PURE;
- STDMETHOD(LoadDataSet) (THIS_ char*, DWORD) PURE;
- STDMETHOD(FreeDataSet) (THIS_ DWORD) PURE;
- STDMETHOD(GetListenerAttributes) (THIS_ LPLISTENERATTRIBUTES) PURE;
- STDMETHOD(GetSourceID) (THIS_ char*, long*) PURE;
- STDMETHOD(GetSourceAttributes) (THIS_ long, LPSOURCEATTRIBUTES) PURE;
- STDMETHOD(GetSourceNumInstances) (THIS_ long, long*) PURE;
- STDMETHOD(GetSourceInstancePos) (THIS_ long, long, LPEMPOINT) PURE;
- STDMETHOD(GetEnvironmentID) (THIS_ char*, long*) PURE;
- STDMETHOD(GetEnvironmentAttributes) (THIS_ long, LPEAXLISTENERPROPERTIES) PURE;
- STDMETHOD(GetMaterialID) (THIS_ char*, long*) PURE;
- STDMETHOD(GetMaterialAttributes) (THIS_ long, LPMATERIALATTRIBUTES) PURE;
- STDMETHOD(GetGeometrySetID) (THIS_ char*, long*) PURE;
- STDMETHOD(GetListenerDynamicAttributes) (THIS_ long, LPEMPOINT, long*, DWORD) PURE;
- STDMETHOD(GetSourceDynamicAttributes) (THIS_ long, LPEMPOINT, long*, float*, long*, float*, float*, LPEMPOINT, DWORD) PURE;
-// STDMETHOD(GetSubSpaceID) (THIS_ long, LPEMPOINT, long *) PURE;
- STDMETHOD(GetEnvironmentName) (THIS_ long, char *szString, long lStrlen) PURE;
-};
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-#define IEaxManager_QueryInterface(p,a,b)                           (p)->lpVtbl->QueryInterface(p,a,b)
-#define IEaxManager_AddRef(p)                                       (p)->lpVtbl->AddRef(p)
-#define IEaxManager_Release(p)                                      (p)->lpVtbl->Release(p)
-#define IEaxManager_GetDataSetSize(p,a,b)                           (p)->lpVtbl->GetDataSetSize(p,a,b)
-#define IEaxManager_LoadDataSet(p,a,b)                              (p)->lpVtbl->LoadDataSet(p,a,b)
-#define IEaxManager_FreeDataSet(p,a)                                (p)->lpVtbl->FreeDataSet(p,a)
-#define IEaxManager_GetListenerAttributes(p,a)                      (p)->lpVtbl->GetListenerAttributes(p,a)
-#define IEaxManager_GetSourceID(p,a,b)                              (p)->lpVtbl->GetSourceID(p,a,b)
-#define IEaxManager_GetSourceAttributes(p,a,b)                      (p)->lpVtbl->GetSourceAttributes(p,a,b)
-#define IEaxManager_GetSourceNumInstances(p,a,b)                    (p)->lpVtbl->GetSourceNumInstances(p,a,b)
-#define IEaxManager_GetSourceInstancePos(p,a,b,c)                   (p)->lpVtbl->GetSourceInstancePos(p,a,b,c)
-#define IEaxManager_GetEnvironmentID(p,a,b)                         (p)->lpVtbl->GetEnvironmentID(p,a,b)
-#define IEaxManager_GetEnvironmentAttributes(p,a,b)                 (p)->lpVtbl->GetEnvironmentAttributes(p,a,b)
-#define IEaxManager_GetMaterialID(p,a,b)                            (p)->lpVtbl->GetMaterialID(p,a,b)
-#define IEaxManager_GetMaterialAttributes(p,a,b)                    (p)->lpVtbl->GetMaterialAttributes(p,a,b)
-#define IEaxManager_GetGeometrySetID(p,a,b)                         (p)->lpVtbl->GetGeometrySetID(p,a,b)
-#define IEaxManager_GetListenerDynamicAttributes(p,a,b,c,d)         (p)->lpVtbl->GetListenerDynamicAttributes(p,a,b,c,d)
-#define IEaxManager_GetSourceDynamicAttributes(p,a,b,c,d,e,f,g,h,i) (p)->lpVtbl->GetSourceDynamicAttributes(p,a,b,c,d,e,f,g,h,i)
-//#define IEaxManager_GetSubSpaceID(p,a,b,c)							(p)->lpVtbl->GetSubSpaceID(p,a,b,c)
-#define IEaxManager_GetEnvironmentName(p,a,b,c)						(p)->lpVtbl->GetEnvironmentName(p,a,b,c)
-#else
-#define IEaxManager_QueryInterface(p,a,b)                           (p)->QueryInterface(a,b)
-#define IEaxManager_AddRef(p)                                       (p)->AddRef()
-#define IEaxManager_Release(p)                                      (p)->Release()
-#define IEaxManager_GetDataSetSize(p,a,b)                           (p)->GetDataSetSize(a,b)
-#define IEaxManager_LoadDataSet(p,a,b)                              (p)->LoadDataSet(a,b)
-#define IEaxManager_FreeDataSet(p,a)                                (p)->FreeDataSet(a)
-#define IEaxManager_GetListenerAttributes(p,a)                      (p)->GetListenerAttributes(a)
-#define IEaxManager_GetSourceID(p,a,b)                              (p)->GetSourceID(a,b)
-#define IEaxManager_GetSourceAttributes(p,a,b)                      (p)->GetSourceAttributes(a,b)
-#define IEaxManager_GetSourceNumInstances(p,a,b)                    (p)->GetSourceNumInstances(a,b)
-#define IEaxManager_GetSourceInstancePos(p,a,b,c)                   (p)->GetSourceInstancePos(a,b,c)
-#define IEaxManager_GetEnvironmentID(p,a,b)                         (p)->GetEnvironmentID(a,b)
-#define IEaxManager_GetEnvironmentAttributes(p,a,b)                 (p)->GetEnvironmentAttributes(a,b)
-#define IEaxManager_GetMaterialID(p,a,b)                            (p)->GetMaterialID(a,b)
-#define IEaxManager_GetMaterialAttributes(p,a,b)                    (p)->GetMaterialAttributes(a,b)
-#define IEaxManager_GetGeometrySetID(p,a,b)                         (p)->GetGeometrySetID(a,b)
-#define IEaxManager_GetListenerDynamicAttributes(p,a,b,c,d)         (p)->GetListenerDynamicAttributes(a,b,c,d)
-#define IEaxManager_GetSourceDynamicAttributes(p,a,b,c,d,e,f,g,h,i) (p)->GetSourceDynamicAttributes(a,b,c,d,e,f,g,h,i)
-//#define IEaxManager_GetSubSpaceID(p,a,b,c)							(p)->GetSubSpaceID(a,b,c)
-#define IEaxManager_GetEnvironmentName(p,a,b,c)						(p)->GetEnvironmentName(a,b,c)
-#endif
-
-#define EM_OK 0
-#define EM_INVALIDID        MAKE_HRESULT(1, FACILITY_ITF, 1)
-#define EM_IDNOTFOUND       MAKE_HRESULT(1, FACILITY_ITF, 2)
-#define EM_FILENOTFOUND     MAKE_HRESULT(1, FACILITY_ITF, 3)
-#define EM_FILEINVALID      MAKE_HRESULT(1, FACILITY_ITF, 4)
-#define EM_VERSIONINVALID   MAKE_HRESULT(1, FACILITY_ITF, 5)
-#define EM_INSTANCENOTFOUND MAKE_HRESULT(1, FACILITY_ITF, 6)
-
-#ifdef __cplusplus
-};
-#endif // __cplusplus
-
-#endif
diff --git a/neo/openal/lib/eaxguid.lib b/neo/openal/lib/eaxguid.lib
deleted file mode 100644
index 83618ae5..00000000
Binary files a/neo/openal/lib/eaxguid.lib and /dev/null differ
diff --git a/neo/openal/lib/openal32.lib b/neo/openal/lib/openal32.lib
deleted file mode 100644
index 0ec190db..00000000
Binary files a/neo/openal/lib/openal32.lib and /dev/null differ
diff --git a/neo/openal/osx/OpenAL.framework/Headers b/neo/openal/osx/OpenAL.framework/Headers
deleted file mode 100644
index a177d2a6..00000000
--- a/neo/openal/osx/OpenAL.framework/Headers
+++ /dev/null
@@ -1 +0,0 @@
-Versions/Current/Headers
\ No newline at end of file
diff --git a/neo/openal/osx/OpenAL.framework/OpenAL b/neo/openal/osx/OpenAL.framework/OpenAL
deleted file mode 100644
index 7a4d340e..00000000
--- a/neo/openal/osx/OpenAL.framework/OpenAL
+++ /dev/null
@@ -1 +0,0 @@
-Versions/Current/OpenAL
\ No newline at end of file
diff --git a/neo/openal/osx/OpenAL.framework/Resources b/neo/openal/osx/OpenAL.framework/Resources
deleted file mode 100644
index 953ee36f..00000000
--- a/neo/openal/osx/OpenAL.framework/Resources
+++ /dev/null
@@ -1 +0,0 @@
-Versions/Current/Resources
\ No newline at end of file
diff --git a/neo/openal/osx/OpenAL.framework/Versions/A/Headers/al.h b/neo/openal/osx/OpenAL.framework/Versions/A/Headers/al.h
deleted file mode 100644
index 8759876a..00000000
--- a/neo/openal/osx/OpenAL.framework/Versions/A/Headers/al.h
+++ /dev/null
@@ -1,498 +0,0 @@
-#ifndef _AL_H_
-#define _AL_H_
-
-/**
- * OpenAL cross platform audio library
- * Copyright (C) 1999-2000 by authors.
- * 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., 59 Temple Place - Suite 330,
- *  Boston, MA  02111-1307, USA.
- * Or go to http://www.gnu.org/copyleft/lgpl.html
- */
-
-#include "altypes.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifdef _WIN32
- #ifdef _LIB
-  #define ALAPI __declspec(dllexport)
- #else
-  #define ALAPI __declspec(dllimport)
- #endif
- #define ALAPIENTRY __cdecl
- #define AL_CALLBACK
-#else
- #ifdef TARGET_OS_MAC
-  #if TARGET_OS_MAC
-   #pragma export on
-  #endif
- #endif
- #define ALAPI
- #define ALAPIENTRY 
- #define AL_CALLBACK
-#endif
-
-#define OPENAL
-
-#ifndef AL_NO_PROTOTYPES
-
-/**
- * OpenAL Maintenance Functions
- * Initialization and exiting.
- * State Management and Query.
- * Error Handling.
- * Extension Support.
- */
-
-/** State management. */
-ALAPI ALvoid	ALAPIENTRY alEnable( ALenum capability );
-ALAPI ALvoid	ALAPIENTRY alDisable( ALenum capability ); 
-ALAPI ALboolean ALAPIENTRY alIsEnabled( ALenum capability ); 
-
-/** Application preferences for driver performance choices. */
-ALAPI ALvoid	ALAPIENTRY alHint( ALenum target, ALenum mode );
-
-/** State retrieval. */
-ALAPI ALboolean ALAPIENTRY alGetBoolean( ALenum param );
-ALAPI ALint		ALAPIENTRY alGetInteger( ALenum param );
-ALAPI ALfloat	ALAPIENTRY alGetFloat( ALenum param );
-ALAPI ALdouble	ALAPIENTRY alGetDouble( ALenum param );
-ALAPI ALvoid	ALAPIENTRY alGetBooleanv( ALenum param, ALboolean* data );
-ALAPI ALvoid	ALAPIENTRY alGetIntegerv( ALenum param, ALint* data );
-ALAPI ALvoid	ALAPIENTRY alGetFloatv( ALenum param, ALfloat* data );
-ALAPI ALvoid	ALAPIENTRY alGetDoublev( ALenum param, ALdouble* data );
-ALAPI ALubyte*	ALAPIENTRY alGetString( ALenum param );
-
-ALAPI ALvoid	ALAPIENTRY alSetInteger( ALenum pname, ALint value );
-ALAPI ALvoid	ALAPIENTRY alSetDouble( ALenum pname, ALdouble value );
-
-/**
- * Error support.
- * Obtain the most recent error generated in the AL state machine.
- */
-ALAPI ALenum	ALAPIENTRY alGetError();
-
-
-/** 
- * Extension support.
- * Obtain the address of a function (usually an extension)
- *  with the name fname. All addresses are context-independent. 
- */
-ALAPI ALboolean ALAPIENTRY alIsExtensionPresent( ALubyte* fname );
-
-
-/** 
- * Extension support.
- * Obtain the address of a function (usually an extension)
- *  with the name fname. All addresses are context-independent. 
- */
-ALAPI ALvoid*	ALAPIENTRY alGetProcAddress( ALubyte* fname );
-
-
-/**
- * Extension support.
- * Obtain the integer value of an enumeration (usually an extension) with the name ename. 
- */
-ALAPI ALenum	ALAPIENTRY alGetEnumValue( ALubyte* ename );
-
-
-
-
-/**
- * LISTENER
- * Listener is the sample position for a given context.
- * The multi-channel (usually stereo) output stream generated
- *  by the mixer is parametrized by this Listener object:
- *  its position and velocity relative to Sources, within
- *  occluder and reflector geometry.
- */
-
-
-
-/**
- *
- * Listener Environment:  default 0.
- */
-ALAPI ALvoid	ALAPIENTRY alListeneri( ALenum param, ALint value );
-
-
-/**
- *
- * Listener Gain:  default 1.0f.
- */
-ALAPI ALvoid	ALAPIENTRY alListenerf( ALenum param, ALfloat value );
-
-
-/**  
- *
- * Listener Position.
- * Listener Velocity.
- */
-ALAPI ALvoid	ALAPIENTRY alListener3f( ALenum param, ALfloat v1, ALfloat v2, ALfloat v3 ); 
-
-
-/**
- *
- * Listener Position:        ALfloat[3]
- * Listener Velocity:        ALfloat[3]
- * Listener Orientation:     ALfloat[6]  (forward and up vector).
- */
-ALAPI ALvoid	ALAPIENTRY alListenerfv( ALenum param, ALfloat* values ); 
-
-ALAPI ALvoid	ALAPIENTRY alGetListeneri( ALenum param, ALint* value );
-ALAPI ALvoid	ALAPIENTRY alGetListenerf( ALenum param, ALfloat* value );
-ALAPI ALvoid	ALAPIENTRY alGetListener3f( ALenum param, ALfloat* v1, ALfloat* v2, ALfloat* v3 ); 
-ALAPI ALvoid	ALAPIENTRY alGetListenerfv( ALenum param, ALfloat* values ); 
-
-
-/**
- * SOURCE
- * Source objects are by default localized. Sources
- *  take the PCM data provided in the specified Buffer,
- *  apply Source-specific modifications, and then
- *  submit them to be mixed according to spatial 
- *  arrangement etc.
- */
-
-
-
-/** Create Source objects. */
-ALAPI ALvoid	ALAPIENTRY alGenSources( ALsizei n, ALuint* sources ); 
-
-/** Delete Source objects. */
-ALAPI ALvoid	ALAPIENTRY alDeleteSources( ALsizei n, ALuint* sources );
-
-/** Verify a handle is a valid Source. */ 
-ALAPI ALboolean ALAPIENTRY alIsSource( ALuint id ); 
-
-/** Set an integer parameter for a Source object. */
-ALAPI ALvoid	ALAPIENTRY alSourcei( ALuint source, ALenum param, ALint value ); 
-ALAPI ALvoid	ALAPIENTRY alSourcef( ALuint source, ALenum param, ALfloat value ); 
-ALAPI ALvoid	ALAPIENTRY alSource3f( ALuint source, ALenum param, ALfloat v1, ALfloat v2, ALfloat v3 );
-ALAPI ALvoid	ALAPIENTRY alSourcefv( ALuint source, ALenum param, ALfloat* values ); 
-
-/** Get an integer parameter for a Source object. */
-ALAPI ALvoid	ALAPIENTRY alGetSourcei( ALuint source,  ALenum param, ALint* value );
-ALAPI ALvoid	ALAPIENTRY alGetSourcef( ALuint source,  ALenum param, ALfloat* value );
-ALAPI ALvoid	ALAPIENTRY alGetSource3f( ALuint source,  ALenum param, ALfloat* v1, ALfloat* v2, ALfloat* v3 );
-ALAPI ALvoid	ALAPIENTRY alGetSourcefv( ALuint source, ALenum param, ALfloat* values );
-
-ALAPI ALvoid	ALAPIENTRY alSourcePlayv( ALsizei n, ALuint *sources );
-ALAPI ALvoid	ALAPIENTRY alSourcePausev( ALsizei n, ALuint *sources );
-ALAPI ALvoid	ALAPIENTRY alSourceStopv( ALsizei n, ALuint *sources );
-ALAPI ALvoid	ALAPIENTRY alSourceRewindv(ALsizei n,ALuint *sources);
-
-/** Activate a source, start replay. */
-ALAPI ALvoid	ALAPIENTRY alSourcePlay( ALuint source );
-
-/**
- * Pause a source, 
- *  temporarily remove it from the mixer list.
- */
-ALAPI ALvoid	ALAPIENTRY alSourcePause( ALuint source );
-
-/**
- * Stop a source,
- *  temporarily remove it from the mixer list,
- *  and reset its internal state to pre-Play.
- * To remove a Source completely, it has to be
- *  deleted following Stop, or before Play.
- */
-ALAPI ALvoid	ALAPIENTRY alSourceStop( ALuint source );
-
-/**
- * Rewinds a source, 
- *  temporarily remove it from the mixer list,
- *  and reset its internal state to pre-Play.
- */
-ALAPI ALvoid	ALAPIENTRY alSourceRewind( ALuint source );
-
-
-
-/**
- * BUFFER
- * Buffer objects are storage space for sample data.
- * Buffers are referred to by Sources. There can be more than
- *  one Source using the same Buffer data. If Buffers have
- *  to be duplicated on a per-Source basis, the driver has to
- *  take care of allocation, copying, and deallocation as well
- *  as propagating buffer data changes.
- */
-
-
-
-
-/** Buffer object generation. */
-ALAPI ALvoid 	ALAPIENTRY alGenBuffers( ALsizei n, ALuint* buffers );
-ALAPI ALvoid	ALAPIENTRY alDeleteBuffers( ALsizei n, ALuint* buffers );
-ALAPI ALboolean ALAPIENTRY alIsBuffer( ALuint buffer );
-
-/**
- * Specify the data to be filled into a buffer.
- */
-ALAPI ALvoid	ALAPIENTRY alBufferData( ALuint   buffer,
-										 ALenum   format,
-										 ALvoid*  data,
-										 ALsizei  size,
-										 ALsizei  freq );
-
-
-ALAPI ALvoid	ALAPIENTRY alGetBufferi( ALuint buffer, ALenum param, ALint*   value );
-ALAPI ALvoid	ALAPIENTRY alGetBufferf( ALuint buffer, ALenum param, ALfloat* value );
-
-
-
-
-/**
- * Queue stuff
- */
-
-ALAPI ALvoid	ALAPIENTRY alSourceQueueBuffers( ALuint source, ALsizei n, ALuint* buffers );
-ALAPI ALvoid	ALAPIENTRY alSourceUnqueueBuffers( ALuint source, ALsizei n, ALuint* buffers );
-
-/**
- * Knobs and dials
- */
-ALAPI ALvoid	ALAPIENTRY alDistanceModel( ALenum value );
-ALAPI ALvoid	ALAPIENTRY alDopplerFactor( ALfloat value );
-ALAPI ALvoid	ALAPIENTRY alDopplerVelocity( ALfloat value );
-
-#else /* AL_NO_PROTOTYPES */
-
-/**
- * OpenAL Maintenance Functions
- * Initialization and exiting.
- * State Management and Query.
- * Error Handling.
- * Extension Support.
- */
-
-/** State management. */
-ALAPI ALvoid	ALAPIENTRY (*alEnable)( ALenum capability );
-ALAPI ALvoid	ALAPIENTRY (*alDisable)( ALenum capability ); 
-ALAPI ALboolean ALAPIENTRY (*alIsEnabled)( ALenum capability ); 
-
-/** Application preferences for driver performance choices. */
-ALAPI ALvoid	ALAPIENTRY (*alHint)( ALenum target, ALenum mode );
-
-/** State retrieval. */
-ALAPI ALboolean ALAPIENTRY (*alGetBoolean)( ALenum param );
-ALAPI ALint		ALAPIENTRY (*alGetInteger)( ALenum param );
-ALAPI ALfloat	ALAPIENTRY (*alGetFloat)( ALenum param );
-ALAPI ALdouble	ALAPIENTRY (*alGetDouble)( ALenum param );
-ALAPI ALvoid	ALAPIENTRY (*alGetBooleanv)( ALenum param, ALboolean* data );
-ALAPI ALvoid	ALAPIENTRY (*alGetIntegerv)( ALenum param, ALint* data );
-ALAPI ALvoid	ALAPIENTRY (*alGetFloatv)( ALenum param, ALfloat* data );
-ALAPI ALvoid	ALAPIENTRY (*alGetDoublev)( ALenum param, ALdouble* data );
-ALAPI ALubyte*	ALAPIENTRY (*alGetString)( ALenum param );
-
-ALAPI ALvoid	ALAPIENTRY (*alSetInteger)( ALenum pname, ALint value );
-ALAPI ALvoid	ALAPIENTRY (*alSetDouble)( ALenum pname, ALdouble value );
-
-/**
- * Error support.
- * Obtain the most recent error generated in the AL state machine.
- */
-ALAPI ALenum	ALAPIENTRY (*alGetError)( ALvoid );
-
-
-/** 
- * Extension support.
- * Obtain the address of a function (usually an extension)
- *  with the name fname. All addresses are context-independent. 
- */
-ALAPI ALboolean ALAPIENTRY (*alIsExtensionPresent)( ALubyte* fname );
-
-
-/** 
- * Extension support.
- * Obtain the address of a function (usually an extension)
- *  with the name fname. All addresses are context-independent. 
- */
-ALAPI ALvoid*	ALAPIENTRY (*alGetProcAddress)( ALubyte* fname );
-
-
-/**
- * Extension support.
- * Obtain the integer value of an enumeration (usually an extension) with the name ename. 
- */
-ALAPI ALenum	ALAPIENTRY (*alGetEnumValue)( ALubyte* ename );
-
-
-
-
-/**
- * LISTENER
- * Listener is the sample position for a given context.
- * The multi-channel (usually stereo) output stream generated
- *  by the mixer is parametrized by this Listener object:
- *  its position and velocity relative to Sources, within
- *  occluder and reflector geometry.
- */
-
-
-
-/**
- *
- * Listener Environment:  default 0.
- */
-ALAPI ALvoid	ALAPIENTRY (*alListeneri)( ALenum param, ALint value );
-
-
-/**
- *
- * Listener Gain:  default 1.0f.
- */
-ALAPI ALvoid	ALAPIENTRY (*alListenerf)( ALenum param, ALfloat value );
-
-
-/**  
- *
- * Listener Position.
- * Listener Velocity.
- */
-ALAPI ALvoid	ALAPIENTRY (*alListener3f)( ALenum param, ALfloat v1, ALfloat v2, ALfloat v3 ); 
-
-
-/**
- *
- * Listener Position:        ALfloat[3]
- * Listener Velocity:        ALfloat[3]
- * Listener Orientation:     ALfloat[6]  (forward and up vector).
- */
-ALAPI ALvoid	ALAPIENTRY (*alListenerfv)( ALenum param, ALfloat* values ); 
-
-ALAPI ALvoid	ALAPIENTRY (*alGetListeneri)( ALenum param, ALint* value );
-ALAPI ALvoid	ALAPIENTRY (*alGetListenerf)( ALenum param, ALfloat* value );
-ALAPI ALvoid	ALAPIENTRY (*alGetListener3f)( ALenum param, ALfloat* v1, ALfloat* v2, ALfloat* v3 ); 
-ALAPI ALvoid	ALAPIENTRY (*alGetListenerfv)( ALenum param, ALfloat* values ); 
-
-
-/**
- * SOURCE
- * Source objects are by default localized. Sources
- *  take the PCM data provided in the specified Buffer,
- *  apply Source-specific modifications, and then
- *  submit them to be mixed according to spatial 
- *  arrangement etc.
- */
-
-
-
-/** Create Source objects. */
-ALAPI ALvoid	ALAPIENTRY (*alGenSources)( ALsizei n, ALuint* sources ); 
-
-/** Delete Source objects. */
-ALAPI ALvoid	ALAPIENTRY (*alDeleteSources)( ALsizei n, ALuint* sources );
-
-/** Verify a handle is a valid Source. */ 
-ALAPI ALboolean ALAPIENTRY (*alIsSource)( ALuint id ); 
-
-/** Set an integer parameter for a Source object. */
-ALAPI ALvoid	ALAPIENTRY (*alSourcei)( ALuint source, ALenum param, ALint value ); 
-ALAPI ALvoid	ALAPIENTRY (*alSourcef)( ALuint source, ALenum param, ALfloat value ); 
-ALAPI ALvoid	ALAPIENTRY (*alSource3f)( ALuint source, ALenum param, ALfloat v1, ALfloat v2, ALfloat v3 );
-ALAPI ALvoid	ALAPIENTRY (*alSourcefv)( ALuint source, ALenum param, ALfloat* values ); 
-
-/** Get an integer parameter for a Source object. */
-ALAPI ALvoid	ALAPIENTRY (*alGetSourcei)( ALuint source,  ALenum param, ALint* value );
-ALAPI ALvoid	ALAPIENTRY (*alGetSourcef)( ALuint source,  ALenum param, ALfloat* value );
-ALAPI ALvoid	ALAPIENTRY (*alGetSourcefv)( ALuint source, ALenum param, ALfloat* values );
-
-ALAPI ALvoid	ALAPIENTRY (*alSourcePlayv)( ALsizei n, ALuint *sources );
-ALAPI ALvoid	ALAPIENTRY (*alSourceStopv)( ALsizei n, ALuint *sources );
-
-/** Activate a source, start replay. */
-ALAPI ALvoid	ALAPIENTRY (*alSourcePlay)( ALuint source );
-
-/**
- * Pause a source, 
- *  temporarily remove it from the mixer list.
- */
-ALAPI ALvoid	ALAPIENTRY (*alSourcePause)( ALuint source );
-
-/**
- * Stop a source,
- *  temporarily remove it from the mixer list,
- *  and reset its internal state to pre-Play.
- * To remove a Source completely, it has to be
- *  deleted following Stop, or before Play.
- */
-ALAPI ALvoid	ALAPIENTRY (*alSourceStop)( ALuint source );
-
-
-
-/**
- * BUFFER
- * Buffer objects are storage space for sample data.
- * Buffers are referred to by Sources. There can be more than
- *  one Source using the same Buffer data. If Buffers have
- *  to be duplicated on a per-Source basis, the driver has to
- *  take care of allocation, copying, and deallocation as well
- *  as propagating buffer data changes.
- */
-
-
-
-
-/** Buffer object generation. */
-ALAPI ALvoid 	ALAPIENTRY (*alGenBuffers)( ALsizei n, ALuint* buffers );
-ALAPI ALvoid	ALAPIENTRY (*alDeleteBuffers)( ALsizei n, ALuint* buffers );
-ALAPI ALboolean ALAPIENTRY (*alIsBuffer)( ALuint buffer );
-
-/**
- * Specify the data to be filled into a buffer.
- */
-ALAPI ALvoid	ALAPIENTRY (*alBufferData)( ALuint   buffer,
-											ALenum   format,
-											ALvoid*  data,
-											ALsizei  size,
-											ALsizei  freq );
-
-ALAPI ALvoid	ALAPIENTRY (*alGetBufferi)( ALuint buffer, ALenum param, ALint*   value );
-ALAPI ALvoid	ALAPIENTRY (*alGetBufferf)( ALuint buffer, ALenum param, ALfloat* value );
-
-
-
-
-/**
- * Queue stuff
- */
-ALAPI ALvoid	ALAPIENTRY (*alSourceQueueBuffers)( ALuint source, ALsizei n, ALuint* buffers );
-ALAPI ALvoid	ALAPIENTRY (*alSourceUnqueueBuffers)( ALuint source, ALsizei n, ALuint* buffers );
-
-/**
- * Knobs and dials
- */
-ALAPI ALvoid	ALAPIENTRY (*alDistanceModel)( ALenum value );
-ALAPI ALvoid	ALAPIENTRY (*alDopplerFactor)( ALfloat value );
-ALAPI ALvoid	ALAPIENTRY (*alDopplerVelocity)( ALfloat value );
-
-
-#endif /* AL_NO_PROTOTYPES */
-
-#ifdef TARGET_OS_MAC
- #if TARGET_OS_MAC
-  #pragma export off
- #endif
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/neo/openal/osx/OpenAL.framework/Versions/A/Headers/alc.h b/neo/openal/osx/OpenAL.framework/Versions/A/Headers/alc.h
deleted file mode 100644
index 641e2fd8..00000000
--- a/neo/openal/osx/OpenAL.framework/Versions/A/Headers/alc.h
+++ /dev/null
@@ -1,88 +0,0 @@
-#ifndef _ALC_H_
-#define _ALC_H_
-
-#include "altypes.h"
-#include "alctypes.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifdef _WIN32
- #ifdef _LIB
-  #define ALCAPI __declspec(dllexport)
- #else
-  #define ALCAPI __declspec(dllimport)
-  typedef ALCvoid ALCdevice;
-  typedef ALCvoid ALCcontext;
- #endif
- #define ALCAPIENTRY __cdecl
-#else
- #ifdef TARGET_OS_MAC
-  #if TARGET_OS_MAC
-   #pragma export on
-  #endif
- #endif
- #define ALCAPI 
- #define ALCAPIENTRY 
- typedef ALCvoid ALCdevice;
-  typedef ALCvoid ALCcontext;
-#endif
-
-#ifndef ALC_NO_PROTOTYPES
-
-ALCAPI ALCubyte*  ALCAPIENTRY alcGetString(ALCdevice *device,ALCenum param);
-ALCAPI ALCvoid    ALCAPIENTRY alcGetIntegerv(ALCdevice *device,ALCenum param,ALCsizei size,ALCint *data);
-
-ALCAPI ALCdevice* ALCAPIENTRY alcOpenDevice(ALCubyte *deviceName);
-ALCAPI ALCvoid    ALCAPIENTRY alcCloseDevice(ALCdevice *device);
-
-ALCAPI ALCcontext*ALCAPIENTRY alcCreateContext(ALCdevice *device,ALCint *attrList);
-ALCAPI ALCboolean ALCAPIENTRY alcMakeContextCurrent(ALCcontext *context);
-ALCAPI ALCvoid	  ALCAPIENTRY alcProcessContext(ALCcontext *context);
-ALCAPI ALCcontext*ALCAPIENTRY alcGetCurrentContext();
-ALCAPI ALCdevice* ALCAPIENTRY alcGetContextsDevice(ALCcontext *context);
-ALCAPI ALCvoid	  ALCAPIENTRY alcSuspendContext(ALCcontext *context);
-ALCAPI ALCvoid    ALCAPIENTRY alcDestroyContext(ALCcontext *context);
-
-ALCAPI ALCenum	  ALCAPIENTRY alcGetError(ALCdevice *device);
-
-ALCAPI ALCboolean ALCAPIENTRY alcIsExtensionPresent(ALCdevice *device,ALCubyte *extName);
-ALCAPI ALCvoid *  ALCAPIENTRY alcGetProcAddress(ALCdevice *device,ALCubyte *funcName);
-ALCAPI ALCenum	  ALCAPIENTRY alcGetEnumValue(ALCdevice *device,ALCubyte *enumName);
-				
-#else /* AL_NO_PROTOTYPES */
-
-ALCAPI ALCubyte*  ALCAPIENTRY (*alcGetString)(ALCdevice *device,ALCenum param);
-ALCAPI ALCvoid    ALCAPIENTRY (*alcGetIntegerv)(ALCdevice * device,ALCenum param,ALCsizei size,ALCint *data);
-
-ALCAPI ALCdevice* ALCAPIENTRY (*alcOpenDevice)(ALubyte *deviceName);
-ALCAPI ALCvoid    ALCAPIENTRY (*alcCloseDevice)(ALCdevice *device);
-
-ALCAPI ALCcontext*ALCAPIENTRY (*alcCreateContext)(ALCdevice *device,ALCint *attrList);
-ALCAPI ALCboolean ALCAPIENTRY (*alcMakeContextCurrent)(ALCcontext *context);
-ALCAPI ALCvoid	  ALCAPIENTRY (*alcProcessContext)(ALCcontext *context);
-ALCAPI ALCcontext*ALCAPIENTRY (*alcGetCurrentContext)(ALCvoid);
-ALCAPI ALCdevice* ALCAPIENTRY (*alcGetContextsDevice)(ALCcontext *context);
-ALCAPI ALCvoid	  ALCAPIENTRY (*alcSuspendContext)(ALCcontext *context);
-ALCAPI ALCvoid    ALCAPIENTRY (*alcDestroyContext)(ALCcontext *context);
-
-ALCAPI ALCenum	  ALCAPIENTRY (*alcGetError)(ALCdevice *device);
-
-ALCAPI ALCboolean ALCAPIENTRY (*alcIsExtensionPresent)(ALCdevice *device,ALCubyte *extName);
-ALCAPI ALCvoid *  ALCAPIENTRY (*alcGetProcAddress)(ALCdevice *device,ALCubyte *funcName);
-ALCAPI ALCenum	  ALCAPIENTRY (*alcGetEnumValue)(ALCdevice *device,ALCubyte *enumName);
-
-#endif /* AL_NO_PROTOTYPES */
-
-#ifdef TARGET_OS_MAC
- #if TARGET_OS_MAC
-  #pragma export off
- #endif
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/neo/openal/osx/OpenAL.framework/Versions/A/Headers/alctypes.h b/neo/openal/osx/OpenAL.framework/Versions/A/Headers/alctypes.h
deleted file mode 100644
index 90364609..00000000
--- a/neo/openal/osx/OpenAL.framework/Versions/A/Headers/alctypes.h
+++ /dev/null
@@ -1,165 +0,0 @@
-#ifndef _ALCTYPES_H_
-#define _ALCTYPES_H_
-
-/**
- * OpenAL cross platform audio library
- * Copyright (C) 1999-2000 by authors.
- * Portions Copyright (C) 2004 by Apple Computer Inc.
- * 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.1 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., 59 Temple Place - Suite 330,
- *  Boston, MA  02111-1307, USA.
- * Or go to http://www.gnu.org/copyleft/lgpl.html
- */
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** ALC boolean type. */
-typedef char ALCboolean;
-
-/** ALC 8bit signed byte. */
-typedef char ALCbyte;
-
-/** ALC 8bit unsigned byte. */
-typedef unsigned char ALCubyte;
-
-/** ALC 16bit signed short integer type. */
-typedef short ALCshort;
-
-/** ALC 16bit unsigned short integer type. */
-typedef unsigned short ALCushort;
-
-/** ALC 32bit unsigned integer type. */
-typedef unsigned ALCuint;
-
-/** ALC 32bit signed integer type. */
-typedef int ALCint;
-
-/** ALC 32bit floating point type. */
-typedef float ALCfloat;
-
-/** ALC 64bit double point type. */
-typedef double ALCdouble;
-
-/** ALC 32bit type. */
-typedef unsigned int ALCsizei;
-
-/** ALC void type */
-typedef void ALCvoid;
-
-/** ALC enumerations. */
-typedef int ALCenum;
-
-/* Bad value. */
-#define ALC_INVALID                              (-1)
-
-/* Boolean False. */
-#define ALC_FALSE                                0
-
-/* Boolean True. */
-#define ALC_TRUE                                 1
-
-/** Errors: No Error. */
-#define ALC_NO_ERROR                             ALC_FALSE
-
-#define ALC_MAJOR_VERSION                        0x1000
-#define ALC_MINOR_VERSION                        0x1001
-#define ALC_ATTRIBUTES_SIZE                      0x1002
-#define ALC_ALL_ATTRIBUTES                       0x1003
-
-#define ALC_DEFAULT_DEVICE_SPECIFIER             0x1004
-#define ALC_DEVICE_SPECIFIER                     0x1005
-#define ALC_EXTENSIONS                           0x1006
-
-#define ALC_FREQUENCY							 0x1007
-#define	ALC_REFRESH								 0x1008
-#define ALC_SYNC								 0x1009
-
-/** 
- * The device argument does not name a valid dvice.
- */
-#define ALC_INVALID_DEVICE                       0xA001
-
-/** 
- * The context argument does not name a valid context.
- */
-#define ALC_INVALID_CONTEXT                      0xA002  
-
-/**
- * A function was called at inappropriate time,
- *  or in an inappropriate way, causing an illegal state.
- * This can be an incompatible ALenum, object ID,
- *  and/or function.
- */
-#define ALC_INVALID_ENUM						 0xA003
-
-/** 
- * Illegal value passed as an argument to an AL call.
- * Applies to parameter values, but not to enumerations.
- */
-#define ALC_INVALID_VALUE                        0xA004
-
-/**
- * A function could not be completed,
- * because there is not enough memory available.
- */
-#define ALC_OUT_OF_MEMORY                        0xA005
-
-
-//*********************************************************************************
-// OSX Specific Properties
-//*********************************************************************************
-
-/**
- * Convert Data When Loading.  Default false, currently applies only to monophonic sounds
- */
-#define ALC_CONVERT_DATA_UPON_LOADING         		0xF001
-
-/**
- * Render Quality.  
- */
-#define ALC_SPATIAL_RENDERING_QUALITY               0xF002
-	#define ALC_SPATIAL_RENDERING_QUALITY_HIGH      'rqhi'
-	#define ALC_SPATIAL_RENDERING_QUALITY_LOW       'rdlo'
-
-/**
- * Mixer Output Rate.
- */
-#define ALC_MIXER_OUTPUT_RATE		         		0xF003
-
-/**
- *  Maximum Mixer Busses.
- *  Set this before opening a new OAL device to indicate how many busses on the mixer
- *  are desired. Get returns either the current devices bus count value, or the value
- *  that will be used to open a device
- */
-#define ALC_MIXER_MAXIMUM_BUSSES                    0xF004
-
-/**
- * Render Channels.  
- * Allows a user to force OpenAL to render to stereo, regardless of the audio hardware being used
- */
-#define ALC_RENDER_CHANNEL_COUNT                    0xF005
-	#define ALC_RENDER_CHANNEL_COUNT_STEREO         'rcst'
-	#define ALC_RENDER_CHANNEL_COUNT_MULTICHANNEL   'rcmc'
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/neo/openal/osx/OpenAL.framework/Versions/A/Headers/altypes.h b/neo/openal/osx/OpenAL.framework/Versions/A/Headers/altypes.h
deleted file mode 100644
index 6e96d334..00000000
--- a/neo/openal/osx/OpenAL.framework/Versions/A/Headers/altypes.h
+++ /dev/null
@@ -1,326 +0,0 @@
-#ifndef _ALTYPES_H_
-#define _ALTYPES_H_
-
-/**
- * OpenAL cross platform audio library
- * Copyright (C) 1999-2000 by authors.
- * 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., 59 Temple Place - Suite 330,
- *  Boston, MA  02111-1307, USA.
- * Or go to http://www.gnu.org/copyleft/lgpl.html
- */
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** OpenAL boolean type. */
-typedef char ALboolean;
-
-/** OpenAL 8bit signed byte. */
-typedef char ALbyte;
-
-/** OpenAL 8bit unsigned byte. */
-typedef unsigned char ALubyte;
-
-/** OpenAL 16bit signed short integer type. */
-typedef short ALshort;
-
-/** OpenAL 16bit unsigned short integer type. */
-typedef unsigned short ALushort;
-
-/** OpenAL 32bit unsigned integer type. */
-typedef unsigned ALuint;
-
-/** OpenAL 32bit signed integer type. */
-typedef int ALint;
-
-/** OpenAL 32bit floating point type. */
-typedef float ALfloat;
-
-/** OpenAL 64bit double point type. */
-typedef double ALdouble;
-
-/** OpenAL 32bit type. */
-typedef unsigned int ALsizei;
-
-/** OpenAL void type */
-typedef void ALvoid;
-
-/** OpenAL enumerations. */
-typedef int ALenum;
-
-/* Bad value. */
-#define AL_INVALID                               (-1)
-
-/* Disable value. */
-#define AL_NONE									 0
-
-/* Boolean False. */
-#define AL_FALSE                                 0
-
-/* Boolean True. */
-#define AL_TRUE                                  1
-
-/**
-  * Indicate the type of AL_SOURCE.
-  * Sources can be spatialized 
-  */
-#define AL_SOURCE_TYPE                           0x200
-
-/** Indicate source has absolute coordinates. */
-#define AL_SOURCE_ABSOLUTE                       0x201
-
-/** Indicate Source has listener relative coordinates. */
-#define AL_SOURCE_RELATIVE                       0x202
-
-/**
- * Directional source, inner cone angle, in degrees.
- * Range:    [0-360] 
- * Default:  360
- */
-#define AL_CONE_INNER_ANGLE                      0x1001
-
-/**
- * Directional source, outer cone angle, in degrees.
- * Range:    [0-360] 
- * Default:  360
- */
-#define AL_CONE_OUTER_ANGLE                      0x1002
-
-/**
- * Specify the pitch to be applied, either at source,
- *  or on mixer results, at listener.
- * Range:	 [0.5-2.0]
- * Default:  1.0
- */
-#define AL_PITCH                                 0x1003
-
-/** 
- * Specify the current location in three dimensional space.
- * OpenAL, like OpenGL, uses a right handed coordinate system,
- *  where in a frontal default view X (thumb) points right, 
- *  Y points up (index finger), and Z points towards the
- *  viewer/camera (middle finger). 
- * To switch from a left handed coordinate system, flip the
- *  sign on the Z coordinate.
- * Listener position is always in the world coordinate system.
- */ 
-#define AL_POSITION                              0x1004
-  
-/** Specify the current direction as forward vector. */
-#define AL_DIRECTION                             0x1005
-  
-/** Specify the current velocity in three dimensional space. */
-#define AL_VELOCITY                              0x1006
-
-/**
- * Indicate whether source has to loop infinite.
- * Type: ALboolean
- * Range:    [AL_TRUE, AL_FALSE]
- * Default:  AL_FALSE
- */
-#define AL_LOOPING                               0x1007
-
-/**
- * Indicate the buffer to provide sound samples. 
- * Type: ALuint.
- * Range: any valid Buffer id.
- */
-#define AL_BUFFER                                0x1009
-
-/**
- * Indicate the gain (volume amplification) applied. 
- * Type:     ALfloat.
- * Range:    ]0.0-  ]
- * A value of 1.0 means un-attenuated/unchanged.
- * Each division by 2 equals an attenuation of -6dB.
- * Each multiplicaton with 2 equals an amplification of +6dB.
- * A value of 0.0 is meaningless with respect to a logarithmic
- *  scale; it is interpreted as zero volume - the channel
- *  is effectively disabled.
- */
-#define AL_GAIN                                  0x100A
-
-/**
- * Indicate minimum source attenuation.
- * Type:     ALfloat
- * Range:	 [0.0 - 1.0]
- */
-#define AL_MIN_GAIN                              0x100D
-
-/**
- * Indicate maximum source attenuation.
- * Type:	 ALfloat
- * Range:	 [0.0 - 1.0]
- */
-#define AL_MAX_GAIN                              0x100E
-
-/** 
- * Specify the current orientation.
- * Type:	 ALfv6 (at/up)
- * Range:	 N/A
- */
-#define AL_ORIENTATION                           0x100F
-
-/* byte offset into source (in canon format).  -1 if source
- * is not playing.  Don't set this, get this.
- *
- * Type:     ALfloat
- * Range:    [0.0 - ]
- * Default:  1.0
- */
-#define AL_REFERENCE_DISTANCE                    0x1020
-
- /**
- * Indicate the rolloff factor for the source.
- * Type: ALfloat
- * Range:    [0.0 - ]
- * Default:  1.0
- */
-#define AL_ROLLOFF_FACTOR                        0x1021
-
-/**
- * Indicate the gain (volume amplification) applied. 
- * Type:     ALfloat.
- * Range:    ]0.0-  ]
- * A value of 1.0 means un-attenuated/unchanged.
- * Each division by 2 equals an attenuation of -6dB.
- * Each multiplicaton with 2 equals an amplification of +6dB.
- * A value of 0.0 is meaningless with respect to a logarithmic
- *  scale; it is interpreted as zero volume - the channel
- *  is effectively disabled.
- */
-#define AL_CONE_OUTER_GAIN                       0x1022
-
-/** 
- * Specify the maximum distance.
- * Type:	 ALfloat
- * Range:	 [0.0 - ]
- */
-#define AL_MAX_DISTANCE                          0x1023
-
-/**
- * Source state information
- */
-#define AL_SOURCE_STATE                          0x1010
-#define AL_INITIAL                               0x1011
-#define AL_PLAYING                               0x1012
-#define AL_PAUSED                                0x1013
-#define AL_STOPPED                               0x1014
-
-/**
- * Buffer Queue params
- */
-#define AL_BUFFERS_QUEUED                        0x1015
-#define AL_BUFFERS_PROCESSED                     0x1016
-
-/** Sound buffers: format specifier. */
-#define AL_FORMAT_MONO8                          0x1100
-#define AL_FORMAT_MONO16                         0x1101
-#define AL_FORMAT_STEREO8                        0x1102
-#define AL_FORMAT_STEREO16                       0x1103
-
-/** 
- * Sound buffers: frequency, in units of Hertz [Hz].
- * This is the number of samples per second. Half of the
- *  sample frequency marks the maximum significant
- *  frequency component.
- */
-#define AL_FREQUENCY                             0x2001
-#define AL_BITS                                  0x2002
-#define AL_CHANNELS                              0x2003
-#define AL_SIZE                                  0x2004
-#define AL_DATA                                  0x2005
-
-/**
- * Buffer state.
- *
- * Not supported for public use (yet).
- */
-#define AL_UNUSED                                0x2010
-#define AL_PENDING                               0x2011
-#define AL_PROCESSED                             0x2012
-
-/** Errors: No Error. */
-#define AL_NO_ERROR                              AL_FALSE
-
-/** 
- * Illegal name passed as an argument to an AL call.
- */
-#define AL_INVALID_NAME                          0xA001
-
-/** 
- * Illegal enum passed as an argument to an AL call.
- */
-#define AL_INVALID_ENUM                          0xA002  
-/** 
- * Illegal value passed as an argument to an AL call.
- * Applies to parameter values, but not to enumerations.
- */
-#define AL_INVALID_VALUE                         0xA003
-  
-/**
- * A function was called at inappropriate time,
- *  or in an inappropriate way, causing an illegal state.
- * This can be an incompatible ALenum, object ID,
- *  and/or function.
- */
-#define AL_INVALID_OPERATION                     0xA004
-
-/**
- * A function could not be completed,
- * because there is not enough memory available.
- */
-#define AL_OUT_OF_MEMORY                         0xA005
-
-/** Context strings: Vendor Name. */
-#define AL_VENDOR                                0xB001
-#define AL_VERSION                               0xB002
-#define AL_RENDERER                              0xB003
-#define AL_EXTENSIONS                            0xB004
-
-/** Global tweakage. */
-
-/**
- * Doppler scale.  Default 1.0
- */
-#define AL_DOPPLER_FACTOR                        0xC000
- 
-/**
- * Doppler velocity.  Default 1.0
- */
-#define AL_DOPPLER_VELOCITY                      0xC001
-
-/**
- * Distance model.  Default AL_INVERSE_DISTANCE_CLAMPED
- */
-#define AL_DISTANCE_MODEL                        0xD000
-
-/** Distance models. */
-
-#define AL_INVERSE_DISTANCE                      0xD001
-#define AL_INVERSE_DISTANCE_CLAMPED              0xD002
- 
- /**
- * enables
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/neo/openal/osx/OpenAL.framework/Versions/A/Headers/alut.h b/neo/openal/osx/OpenAL.framework/Versions/A/Headers/alut.h
deleted file mode 100644
index 0b1baea4..00000000
--- a/neo/openal/osx/OpenAL.framework/Versions/A/Headers/alut.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * OpenAL cross platform audio library
- * Copyright (C) 1999-2000 by authors.
- * 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., 59 Temple Place - Suite 330,
- *  Boston, MA  02111-1307, USA.
- * Or go to http://www.gnu.org/copyleft/lgpl.html
- */
- 
-#ifndef _ALUT_H_
-#define _ALUT_H_
-
-#define ALUTAPI
-#define ALUTAPIENTRY
-
-#include "al.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-   
-#ifdef TARGET_OS_MAC
-   #if TARGET_OS_MAC
-       #pragma export on
-   #endif
-#endif
-
-ALUTAPI ALvoid	ALUTAPIENTRY alutInit(ALint *argc,ALbyte **argv);
-ALUTAPI ALvoid	ALUTAPIENTRY alutExit(ALvoid);
-ALUTAPI ALvoid	ALUTAPIENTRY alutLoadWAVFile(ALbyte *file,ALenum *format,ALvoid **data,ALsizei *size,ALsizei *freq);
-ALUTAPI ALvoid  ALUTAPIENTRY alutLoadWAVMemory(ALbyte *memory,ALenum *format,ALvoid **data,ALsizei *size,ALsizei *freq);
-ALUTAPI ALvoid  ALUTAPIENTRY alutUnloadWAV(ALenum format,ALvoid *data,ALsizei size,ALsizei freq);
-
-#ifdef TARGET_OS_MAC
-   #if TARGET_OS_MAC
-      #pragma export off
-   #endif
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/neo/openal/osx/OpenAL.framework/Versions/A/OpenAL b/neo/openal/osx/OpenAL.framework/Versions/A/OpenAL
deleted file mode 100644
index b03b04f1..00000000
Binary files a/neo/openal/osx/OpenAL.framework/Versions/A/OpenAL and /dev/null differ
diff --git a/neo/openal/osx/OpenAL.framework/Versions/A/Resources/English.lproj/InfoPlist.strings b/neo/openal/osx/OpenAL.framework/Versions/A/Resources/English.lproj/InfoPlist.strings
deleted file mode 100644
index fa858023..00000000
Binary files a/neo/openal/osx/OpenAL.framework/Versions/A/Resources/English.lproj/InfoPlist.strings and /dev/null differ
diff --git a/neo/openal/osx/OpenAL.framework/Versions/A/Resources/Info.plist b/neo/openal/osx/OpenAL.framework/Versions/A/Resources/Info.plist
deleted file mode 100644
index a811c8bf..00000000
--- a/neo/openal/osx/OpenAL.framework/Versions/A/Resources/Info.plist
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDevelopmentRegion</key>
-	<string>English</string>
-	<key>CFBundleExecutable</key>
-	<string>OpenAL</string>
-	<key>CFBundleGetInfoString</key>
-	<string>OpenAL</string>
-	<key>CFBundleInfoDictionaryVersion</key>
-	<string>6.0</string>
-	<key>CFBundleName</key>
-	<string>OpenAL</string>
-	<key>CFBundlePackageType</key>
-	<string>FMWK</string>
-	<key>CFBundleShortVersionString</key>
-	<string>OpenAL</string>
-	<key>CFBundleSignature</key>
-	<string>????</string>
-	<key>CFBundleVersion</key>
-	<string>1.0.1d1</string>
-	<key>CSResourcesFileMapped</key>
-	<true/>
-</dict>
-</plist>
diff --git a/neo/openal/osx/OpenAL.framework/Versions/A/Resources/READ_ME b/neo/openal/osx/OpenAL.framework/Versions/A/Resources/READ_ME
deleted file mode 100644
index 378b7817..00000000
--- a/neo/openal/osx/OpenAL.framework/Versions/A/Resources/READ_ME
+++ /dev/null
@@ -1,86 +0,0 @@
-
-February 13th, 2004 - Apple Computer Inc.
-updated: March 15th, 2004 - Apple Computer Inc.
-
-----------------------------------------------------------------------------------------------------------------------
-READ ME: OPEN AL - OSX IMPLEMENTATION USING THE 3DMIXER AUDIOUNIT
-----------------------------------------------------------------------------------------------------------------------
-
-This Read Me should accompany the 3DMixer implementation of OpenAL (Open Audio Library). 
-
-CoreAUdio SDK Requirements
------------------------
-Building this implementation of OpenAL for Mac OSX requires the latest CoreAudio SDK (version 1.3.1), due to it use 
-of new CoreAudio Public Utility classes.
-
-CoreAudio Version requirements
------------------------
-There are Recommended and Minimum CoreAudio framework and component pieces for running this implementation 
-of OpenAL for Mac OSX:
-
-    Recommended:
-    ------------
-    OSX: version 10.2.6 AND
-    QuickTime: version 6.5.1
-    AudioToolbox.framework (version 1.3.2)
-    AudioUnit.framework (version 1.3.2)
-    CoreAudio.component (version 1.3.2 - this version contains the 2.0 version of the 3DMixer AudioUnit)
-    
-    Minimum:
-    ------------
-    OSX: version 10.2 (Jaguar) AND
-    QuickTime: version 6.4
-    AudioToolbox.framework (version 1.2xxxxx)
-    AudioUnit.framework (version 1.2xxxxx)
-    CoreAudio.component (version 1.2xxxxxx - this version contains the 1.3 version of the 3DMixer AudioUnit)
-
-----------------------------------------------------------------------------------------------------------------------
-OpenAL Extensions:
-----------------------------------------------------------------------------------------------------------------------
-
-This implementation has the following OpenAL extensions. These constants can be found in the included "alctypes.h" header.
-
-***** ALC_CONVERT_DATA_UPON_LOADING
-This extension allows the caller to tell OpenAL to preconvert to the native CoreAudio format, the audio data passed to the 
-library with the alBufferData() call. Preconverting the audio data, reduces CPU usage by removing an audio data conversion 
-(per source) at render timem at the expense of a larger memory footprint.
-
-This feature is toggled on/off by using the alDisable() & alEnable() APIs. This setting will be applied to all subsequent 
-calls to alBufferData().
-
-***** ALC_SPATIAL_RENDERING_QUALITY
-This extension allows the application to specify the quality of spatial rendering to better suit the resources of the CPU.
-At this time, the quality settings are only applied when rendering to stereo hw. All multichannel rendering uses the same 
-spatilaization setting on the 3DMixer. Use the alSetInteger() & alGetInteger() APIs to specify and retrieve this setting.
-This implmentation provides 2 setting constants:    ALC_SPATIAL_RENDERING_QUALITY_HIGH  (HRTF)
-                                                    ALC_SPATIAL_RENDERING_QUALITY_LOW   (EqualPowerPanning)
-                                                    
-note: This implementation applies the setting to all the OAL Sources of an OAL Context. However, spatial settings can be applied to
-each input bus of the 3DMixer, so it is possible to have this setting on a per OAL Source basis, allowing the developer to give
-quality priorities to the various sounds used in an application.
-
-note: Currently, all stereo sounds are 'passed thru' with no spatial rendering applied. This has the best output quality for rendering
-what are typically background sound tracks. However, the 3DMixer has the ability to render a stereo source to a spatial coordinate
-if this was desired and support to do so would be trivial.
-
-***** ALC_MIXER_OUTPUT_RATE
-This extension allows the developer to let the AudioGraph be efficient about sample rate conversion. If for example, all sounds
-being played have a sample rate of 44k, but the output hardware is set to 48k, then it is best for the 3DMixer to leave the
-the audio data (Mixer Outputut Rate)  at 44k, letting the output AU rate convert the streams after they have been mixed. By default, 
-this is set to 44k which is very common sample rate for sound hw.
-
-***** ALC_MIXER_MAXIMUM_BUSSES
-This extension allows the developer to optimize the 3DMixer by setting it available input bus count. This allows the 3DMixer to be as
-efficient as possible in resource allocations. By default, the 3DMixer currently defaults to 64 busses (note: the 1.3 version of the
-3DMixer does not respect this setting, so always confirm the bus count with a get call, after setting the bus count and creating a new device). 
-Use: set the bus count before making a call to alOpenDevice(). This will cause the library to set the mixer to you desired bus count.
-as it creates the AUGraph. Use the alSetInteger() & alGetInteger() APIs to specify and retrieve this setting.
-
-***** ALC_RENDER_CHANNEL_COUNT
-Because the audio system has no way to know if a user has actually connected a speaker to an output of the audio hardware, it may be desired
-to allow the user to clamp all rendering to stereo. Use the alSetInteger() & alGetInteger() APIs to specify and retrieve this setting.
-This implmentation provides 2 setting constants:    ALC_RENDER_CHANNEL_COUNT_STEREO         (clamp the 3DMixer output rendering to stereo, regardless of the hw capabilities)
-                                                    ALC_RENDER_CHANNEL_COUNT_MULTICHANNEL   (try and render to the maximum speakers possible by interrogating the device) 
-
-----------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------
diff --git a/neo/openal/osx/OpenAL.framework/Versions/A/Resources/pbdevelopment.plist b/neo/openal/osx/OpenAL.framework/Versions/A/Resources/pbdevelopment.plist
deleted file mode 100644
index 151e2d61..00000000
--- a/neo/openal/osx/OpenAL.framework/Versions/A/Resources/pbdevelopment.plist
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>PBXProjectSourcePath</key>
-	<string>/Users/mmarks/Development/OpenAL/openal/macosx/al_osx.xcode</string>
-</dict>
-</plist>
diff --git a/neo/openal/osx/OpenAL.framework/Versions/Current b/neo/openal/osx/OpenAL.framework/Versions/Current
deleted file mode 100644
index 8c7e5a66..00000000
--- a/neo/openal/osx/OpenAL.framework/Versions/Current
+++ /dev/null
@@ -1 +0,0 @@
-A
\ No newline at end of file
diff --git a/neo/sound/efxlib.h b/neo/sound/efxlib.h
index 97de084c..a6331a84 100644
--- a/neo/sound/efxlib.h
+++ b/neo/sound/efxlib.h
@@ -5,7 +5,7 @@
 #define __EFXLIBH
 
 #if ID_OPENAL_EAX
-#include "../openal/include/eax4.h"
+#include <eax4.h>
 #endif
 
 
diff --git a/neo/sound/snd_local.h b/neo/sound/snd_local.h
index a2a45543..f6a85736 100644
--- a/neo/sound/snd_local.h
+++ b/neo/sound/snd_local.h
@@ -31,8 +31,8 @@ If you have questions concerning this license or the applicable additional terms
 
 // you need the OpenAL headers for build, even if AL is not enabled - http://www.openal.org/
 #ifdef _WIN32
-#include "../openal/include/al.h"
-#include "../openal/include/alc.h"
+#include <al.h>
+#include <alc.h>
 #include "../sys/win32/idal.h"
 // broken OpenAL SDK ?
 #define ID_ALCHAR (ALubyte *)
diff --git a/neo/sys/win32/eax.h b/neo/sys/win32/eax.h
deleted file mode 100644
index d857cc01..00000000
--- a/neo/sys/win32/eax.h
+++ /dev/null
@@ -1,533 +0,0 @@
-/******************************************************************
-*
-*  EAX.H - Environmental Audio Extensions version 3.0
-*          for OpenAL and DirectSound3D
-*  Updated May 22, 2001 by Jean-Marc Jot, Sam Dicker (version 1.0).
-*
-*******************************************************************
-*/
-
-#ifndef EAX_H_INCLUDED
-#define EAX_H_INCLUDED
-
-#ifdef __cplusplus
-extern "C" {
-#endif // __cplusplus
-
-#ifndef OPENAL
-	#include <dsound.h>
-
-	/*
-	 * EAX Wrapper Interface (using Direct X 7) {4FF53B81-1CE0-11d3-AAB8-00A0C95949D5}
-	 */
-	DEFINE_GUID(CLSID_EAXDirectSound,
-		0x4ff53b81,
-		0x1ce0,
-		0x11d3,
-		0xaa, 0xb8, 0x0, 0xa0, 0xc9, 0x59, 0x49, 0xd5);
-
-   /*
-	* EAX Wrapper Interface (using Direct X 8) {CA503B60-B176-11d4-A094-D0C0BF3A560C}
-	*/
-	DEFINE_GUID(CLSID_EAXDirectSound8,
-		0xca503b60,
-		0xb176,
-		0x11d4,
-		0xa0, 0x94, 0xd0, 0xc0, 0xbf, 0x3a, 0x56, 0xc);
-
-
-
-#ifdef DIRECTSOUND_VERSION
-#if DIRECTSOUND_VERSION == 0x0800
-	__declspec(dllimport) HRESULT WINAPI EAXDirectSoundCreate8(GUID*, LPDIRECTSOUND8*, IUnknown FAR *);
-	typedef HRESULT (FAR PASCAL *LPEAXDIRECTSOUNDCREATE8)(GUID*, LPDIRECTSOUND*, IUnknown FAR*);
-#endif
-#endif
-
-	__declspec(dllimport) HRESULT WINAPI EAXDirectSoundCreate(GUID*, LPDIRECTSOUND*, IUnknown FAR *);
-	typedef HRESULT (FAR PASCAL *LPEAXDIRECTSOUNDCREATE)(GUID*, LPDIRECTSOUND*, IUnknown FAR*);
-
-#else // OPENAL
-	#include "..\Sdk\OpenAL\Include\al.h"
-
-	#ifndef GUID_DEFINED
-		#define GUID_DEFINED
-		typedef struct _GUID
-		{
-			unsigned long Data1;
-			unsigned short Data2;
-			unsigned short Data3;
-			unsigned char Data4[8];
-		} GUID;
-	#endif // !GUID_DEFINED
-
-	#ifndef DEFINE_GUID
-		#ifndef INITGUID
-			#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
-					extern const GUID FAR name
-		#else
-			#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
-					extern const GUID name = { l, w1, w2, { b1, b2,  b3,  b4,  b5,  b6,  b7,  b8 } }
-		#endif // INITGUID
-	#endif // DEFINE_GUID
-
-
-	/*
-	 * EAX OpenAL Extension
-	 */
-	typedef ALenum (*EAXSet)(const GUID*, ALuint, ALuint, ALvoid*, ALuint);
-	typedef ALenum (*EAXGet)(const GUID*, ALuint, ALuint, ALvoid*, ALuint);
-#endif
-
-#pragma pack(push, 4)
-
-/*
- * EAX 3.0 listener property set {A8FA6880-B476-11d3-BDB9-00C0F02DDF87}
- */
-DEFINE_GUID(DSPROPSETID_EAX30_ListenerProperties,
-	0xa8fa6882,
-	0xb476,
-	0x11d3,
-	0xbd, 0xb9, 0x00, 0xc0, 0xf0, 0x2d, 0xdf, 0x87);
-
-// For compatibility with future EAX versions:
-#define DSPROPSETID_EAX_ListenerProperties DSPROPSETID_EAX30_ListenerProperties
-
-typedef enum
-{
-	DSPROPERTY_EAXLISTENER_NONE,
-	DSPROPERTY_EAXLISTENER_ALLPARAMETERS,
-	DSPROPERTY_EAXLISTENER_ENVIRONMENT,
-	DSPROPERTY_EAXLISTENER_ENVIRONMENTSIZE,
-	DSPROPERTY_EAXLISTENER_ENVIRONMENTDIFFUSION,
-	DSPROPERTY_EAXLISTENER_ROOM,
-	DSPROPERTY_EAXLISTENER_ROOMHF,
-	DSPROPERTY_EAXLISTENER_ROOMLF,
-	DSPROPERTY_EAXLISTENER_DECAYTIME,
-	DSPROPERTY_EAXLISTENER_DECAYHFRATIO,
-	DSPROPERTY_EAXLISTENER_DECAYLFRATIO,
-	DSPROPERTY_EAXLISTENER_REFLECTIONS,
-	DSPROPERTY_EAXLISTENER_REFLECTIONSDELAY,
-	DSPROPERTY_EAXLISTENER_REFLECTIONSPAN,
-	DSPROPERTY_EAXLISTENER_REVERB,
-	DSPROPERTY_EAXLISTENER_REVERBDELAY,
-	DSPROPERTY_EAXLISTENER_REVERBPAN,
-	DSPROPERTY_EAXLISTENER_ECHOTIME,
-	DSPROPERTY_EAXLISTENER_ECHODEPTH,
-	DSPROPERTY_EAXLISTENER_MODULATIONTIME,
-	DSPROPERTY_EAXLISTENER_MODULATIONDEPTH,
-	DSPROPERTY_EAXLISTENER_AIRABSORPTIONHF,
-	DSPROPERTY_EAXLISTENER_HFREFERENCE,
-	DSPROPERTY_EAXLISTENER_LFREFERENCE,
-	DSPROPERTY_EAXLISTENER_ROOMROLLOFFFACTOR,
-	DSPROPERTY_EAXLISTENER_FLAGS
-} DSPROPERTY_EAX_LISTENERPROPERTY;
-
-// OR these flags with property id
-#define DSPROPERTY_EAXLISTENER_IMMEDIATE 0x00000000 // changes take effect immediately
-#define DSPROPERTY_EAXLISTENER_DEFERRED  0x80000000 // changes take effect later
-#define DSPROPERTY_EAXLISTENER_COMMITDEFERREDSETTINGS (DSPROPERTY_EAXLISTENER_NONE | \
-													   DSPROPERTY_EAXLISTENER_IMMEDIATE)
-
-typedef struct _EAXVECTOR {
-	float x;
-	float y;
-	float z;
-} EAXVECTOR;
-
-// Use this structure for DSPROPERTY_EAXLISTENER_ALLPARAMETERS
-// - all levels are hundredths of decibels
-// - all times and delays are in seconds
-//
-// NOTE: This structure may change in future EAX versions.
-//       It is recommended to initialize fields by name:
-//              myListener.lRoom = -1000;
-//              myListener.lRoomHF = -100;
-//              ...
-//              myListener.dwFlags = myFlags /* see EAXLISTENERFLAGS below */ ;
-//       instead of:
-//              myListener = { -1000, -100, ... , 0x00000009 };
-//       If you want to save and load presets in binary form, you
-//       should define your own structure to insure future compatibility.
-//
-typedef struct _EAXLISTENERPROPERTIES
-{
-	unsigned long ulEnvironment;   // sets all listener properties
-	float flEnvironmentSize;       // environment size in meters
-	float flEnvironmentDiffusion;  // environment diffusion
-	long lRoom;                    // room effect level (at mid frequencies)
-	long lRoomHF;                  // relative room effect level at high frequencies
-	long lRoomLF;                  // relative room effect level at low frequencies
-	float flDecayTime;             // reverberation decay time at mid frequencies
-	float flDecayHFRatio;          // high-frequency to mid-frequency decay time ratio
-	float flDecayLFRatio;          // low-frequency to mid-frequency decay time ratio
-	long lReflections;             // early reflections level relative to room effect
-	float flReflectionsDelay;      // initial reflection delay time
-	EAXVECTOR vReflectionsPan;     // early reflections panning vector
-	long lReverb;                  // late reverberation level relative to room effect
-	float flReverbDelay;           // late reverberation delay time relative to initial reflection
-	EAXVECTOR vReverbPan;          // late reverberation panning vector
-	float flEchoTime;              // echo time
-	float flEchoDepth;             // echo depth
-	float flModulationTime;        // modulation time
-	float flModulationDepth;       // modulation depth
-	float flAirAbsorptionHF;       // change in level per meter at high frequencies
-	float flHFReference;           // reference high frequency
-	float flLFReference;           // reference low frequency
-	float flRoomRolloffFactor;     // like DS3D flRolloffFactor but for room effect
-	unsigned long ulFlags;         // modifies the behavior of properties
-} EAXLISTENERPROPERTIES, *LPEAXLISTENERPROPERTIES;
-
-// used by DSPROPERTY_EAXLISTENER_ENVIRONMENT
-enum
-{
-	EAX_ENVIRONMENT_GENERIC,
-	EAX_ENVIRONMENT_PADDEDCELL,
-	EAX_ENVIRONMENT_ROOM,
-	EAX_ENVIRONMENT_BATHROOM,
-	EAX_ENVIRONMENT_LIVINGROOM,
-	EAX_ENVIRONMENT_STONEROOM,
-	EAX_ENVIRONMENT_AUDITORIUM,
-	EAX_ENVIRONMENT_CONCERTHALL,
-	EAX_ENVIRONMENT_CAVE,
-	EAX_ENVIRONMENT_ARENA,
-	EAX_ENVIRONMENT_HANGAR,
-	EAX_ENVIRONMENT_CARPETEDHALLWAY,
-	EAX_ENVIRONMENT_HALLWAY,
-	EAX_ENVIRONMENT_STONECORRIDOR,
-	EAX_ENVIRONMENT_ALLEY,
-	EAX_ENVIRONMENT_FOREST,
-	EAX_ENVIRONMENT_CITY,
-	EAX_ENVIRONMENT_MOUNTAINS,
-	EAX_ENVIRONMENT_QUARRY,
-	EAX_ENVIRONMENT_PLAIN,
-	EAX_ENVIRONMENT_PARKINGLOT,
-	EAX_ENVIRONMENT_SEWERPIPE,
-	EAX_ENVIRONMENT_UNDERWATER,
-	EAX_ENVIRONMENT_DRUGGED,
-	EAX_ENVIRONMENT_DIZZY,
-	EAX_ENVIRONMENT_PSYCHOTIC,
-
-	EAX_ENVIRONMENT_UNDEFINED,
-
-	EAX_ENVIRONMENT_COUNT
-};
-
-// Used by DSPROPERTY_EAXLISTENER_FLAGS
-//
-// Note: The number and order of flags may change in future EAX versions.
-//       It is recommended to use the flag defines as follows:
-//              myFlags = EAXLISTENERFLAGS_DECAYTIMESCALE | EAXLISTENERFLAGS_REVERBSCALE;
-//       instead of:
-//              myFlags = 0x00000009;
-//
-// These flags determine what properties are affected by environment size.
-#define EAXLISTENERFLAGS_DECAYTIMESCALE        0x00000001 // reverberation decay time
-#define EAXLISTENERFLAGS_REFLECTIONSSCALE      0x00000002 // reflection level
-#define EAXLISTENERFLAGS_REFLECTIONSDELAYSCALE 0x00000004 // initial reflection delay time
-#define EAXLISTENERFLAGS_REVERBSCALE           0x00000008 // reflections level
-#define EAXLISTENERFLAGS_REVERBDELAYSCALE      0x00000010 // late reverberation delay time
-#define EAXLISTENERFLAGS_ECHOTIMESCALE         0x00000040 // echo time
-#define EAXLISTENERFLAGS_MODULATIONTIMESCALE   0x00000080 // modulation time
-
-// This flag limits high-frequency decay time according to air absorption.
-#define EAXLISTENERFLAGS_DECAYHFLIMIT          0x00000020
-
-#define EAXLISTENERFLAGS_RESERVED              0xFFFFFF00 // reserved future use
-
-// Property ranges and defaults:
-
-#define EAXLISTENER_MINENVIRONMENT                0
-#define EAXLISTENER_MAXENVIRONMENT                (EAX_ENVIRONMENT_COUNT-1)
-#define EAXLISTENER_DEFAULTENVIRONMENT            EAX_ENVIRONMENT_GENERIC
-
-#define EAXLISTENER_MINENVIRONMENTSIZE            1.0f
-#define EAXLISTENER_MAXENVIRONMENTSIZE            100.0f
-#define EAXLISTENER_DEFAULTENVIRONMENTSIZE        7.5f
-
-#define EAXLISTENER_MINENVIRONMENTDIFFUSION       0.0f
-#define EAXLISTENER_MAXENVIRONMENTDIFFUSION       1.0f
-#define EAXLISTENER_DEFAULTENVIRONMENTDIFFUSION   1.0f
-
-#define EAXLISTENER_MINROOM                       (-10000)
-#define EAXLISTENER_MAXROOM                       0
-#define EAXLISTENER_DEFAULTROOM                   (-1000)
-
-#define EAXLISTENER_MINROOMHF                     (-10000)
-#define EAXLISTENER_MAXROOMHF                     0
-#define EAXLISTENER_DEFAULTROOMHF                 (-100)
-
-#define EAXLISTENER_MINROOMLF                     (-10000)
-#define EAXLISTENER_MAXROOMLF                     0
-#define EAXLISTENER_DEFAULTROOMLF                 0
-
-#define EAXLISTENER_MINDECAYTIME                  0.1f
-#define EAXLISTENER_MAXDECAYTIME                  20.0f
-#define EAXLISTENER_DEFAULTDECAYTIME              1.49f
-
-#define EAXLISTENER_MINDECAYHFRATIO               0.1f
-#define EAXLISTENER_MAXDECAYHFRATIO               2.0f
-#define EAXLISTENER_DEFAULTDECAYHFRATIO           0.83f
-
-#define EAXLISTENER_MINDECAYLFRATIO               0.1f
-#define EAXLISTENER_MAXDECAYLFRATIO               2.0f
-#define EAXLISTENER_DEFAULTDECAYLFRATIO           1.00f
-
-#define EAXLISTENER_MINREFLECTIONS                (-10000)
-#define EAXLISTENER_MAXREFLECTIONS                1000
-#define EAXLISTENER_DEFAULTREFLECTIONS            (-2602)
-
-#define EAXLISTENER_MINREFLECTIONSDELAY           0.0f
-#define EAXLISTENER_MAXREFLECTIONSDELAY           0.3f
-#define EAXLISTENER_DEFAULTREFLECTIONSDELAY       0.007f
-
-#define EAXLISTENER_MINREVERB                     (-10000)
-#define EAXLISTENER_MAXREVERB                     2000
-#define EAXLISTENER_DEFAULTREVERB                 200
-
-#define EAXLISTENER_MINREVERBDELAY                0.0f
-#define EAXLISTENER_MAXREVERBDELAY                0.1f
-#define EAXLISTENER_DEFAULTREVERBDELAY            0.011f
-
-#define EAXLISTENER_MINECHOTIME                   0.075f
-#define EAXLISTENER_MAXECHOTIME	                  0.25f
-#define EAXLISTENER_DEFAULTECHOTIME               0.25f
-
-#define EAXLISTENER_MINECHODEPTH                  0.0f
-#define EAXLISTENER_MAXECHODEPTH                  1.0f
-#define EAXLISTENER_DEFAULTECHODEPTH              0.0f
-
-#define EAXLISTENER_MINMODULATIONTIME             0.04f
-#define EAXLISTENER_MAXMODULATIONTIME             4.0f
-#define EAXLISTENER_DEFAULTMODULATIONTIME         0.25f
-
-#define EAXLISTENER_MINMODULATIONDEPTH            0.0f
-#define EAXLISTENER_MAXMODULATIONDEPTH            1.0f
-#define EAXLISTENER_DEFAULTMODULATIONDEPTH        0.0f
-
-#define EAXLISTENER_MINAIRABSORPTIONHF            (-100.0f)
-#define EAXLISTENER_MAXAIRABSORPTIONHF            0.0f
-#define EAXLISTENER_DEFAULTAIRABSORPTIONHF        (-5.0f)
-
-#define EAXLISTENER_MINHFREFERENCE                1000.0f
-#define EAXLISTENER_MAXHFREFERENCE                20000.0f
-#define EAXLISTENER_DEFAULTHFREFERENCE            5000.0f
-
-#define EAXLISTENER_MINLFREFERENCE                20.0f
-#define EAXLISTENER_MAXLFREFERENCE                1000.0f
-#define EAXLISTENER_DEFAULTLFREFERENCE            250.0f
-
-#define EAXLISTENER_MINROOMROLLOFFFACTOR          0.0f
-#define EAXLISTENER_MAXROOMROLLOFFFACTOR          10.0f
-#define EAXLISTENER_DEFAULTROOMROLLOFFFACTOR      0.0f
-
-#define EAXLISTENER_DEFAULTFLAGS                  (EAXLISTENERFLAGS_DECAYTIMESCALE |        \
-												   EAXLISTENERFLAGS_REFLECTIONSSCALE |      \
-												   EAXLISTENERFLAGS_REFLECTIONSDELAYSCALE | \
-												   EAXLISTENERFLAGS_REVERBSCALE |           \
-												   EAXLISTENERFLAGS_REVERBDELAYSCALE |      \
-												   EAXLISTENERFLAGS_DECAYHFLIMIT)
-
-
-
-/*
-* EAX 3.0 buffer property set {A8FA6881-B476-11d3-BDB9-00C0F02DDF87}
-*/
-DEFINE_GUID(DSPROPSETID_EAX30_BufferProperties,
-	0xa8fa6881,
-	0xb476,
-	0x11d3,
-	0xbd, 0xb9, 0x0, 0xc0, 0xf0, 0x2d, 0xdf, 0x87);
-
-// For compatibility with future EAX versions:
-#define DSPROPSETID_EAX_BufferProperties DSPROPSETID_EAX30_BufferProperties
-#define DSPROPSETID_EAX_SourceProperties DSPROPSETID_EAX30_BufferProperties
-
-typedef enum
-{
-	DSPROPERTY_EAXBUFFER_NONE,
-	DSPROPERTY_EAXBUFFER_ALLPARAMETERS,
-	DSPROPERTY_EAXBUFFER_OBSTRUCTIONPARAMETERS,
-	DSPROPERTY_EAXBUFFER_OCCLUSIONPARAMETERS,
-	DSPROPERTY_EAXBUFFER_EXCLUSIONPARAMETERS,
-	DSPROPERTY_EAXBUFFER_DIRECT,
-	DSPROPERTY_EAXBUFFER_DIRECTHF,
-	DSPROPERTY_EAXBUFFER_ROOM,
-	DSPROPERTY_EAXBUFFER_ROOMHF,
-	DSPROPERTY_EAXBUFFER_OBSTRUCTION,
-	DSPROPERTY_EAXBUFFER_OBSTRUCTIONLFRATIO,
-	DSPROPERTY_EAXBUFFER_OCCLUSION,
-	DSPROPERTY_EAXBUFFER_OCCLUSIONLFRATIO,
-	DSPROPERTY_EAXBUFFER_OCCLUSIONROOMRATIO,
-	DSPROPERTY_EAXBUFFER_OCCLUSIONDIRECTRATIO,
-	DSPROPERTY_EAXBUFFER_EXCLUSION,
-	DSPROPERTY_EAXBUFFER_EXCLUSIONLFRATIO,
-	DSPROPERTY_EAXBUFFER_OUTSIDEVOLUMEHF,
-	DSPROPERTY_EAXBUFFER_DOPPLERFACTOR,
-	DSPROPERTY_EAXBUFFER_ROLLOFFFACTOR,
-	DSPROPERTY_EAXBUFFER_ROOMROLLOFFFACTOR,
-	DSPROPERTY_EAXBUFFER_AIRABSORPTIONFACTOR,
-	DSPROPERTY_EAXBUFFER_FLAGS
-} DSPROPERTY_EAX_BUFFERPROPERTY;
-
-// OR these flags with property id
-#define DSPROPERTY_EAXBUFFER_IMMEDIATE 0x00000000 // changes take effect immediately
-#define DSPROPERTY_EAXBUFFER_DEFERRED  0x80000000 // changes take effect later
-#define DSPROPERTY_EAXBUFFER_COMMITDEFERREDSETTINGS (DSPROPERTY_EAXBUFFER_NONE | \
-													 DSPROPERTY_EAXBUFFER_IMMEDIATE)
-
-// Use this structure for DSPROPERTY_EAXBUFFER_ALLPARAMETERS
-// - all levels are hundredths of decibels
-// - all delays are in seconds
-//
-// NOTE: This structure may change in future EAX versions.
-//       It is recommended to initialize fields by name:
-//              myBuffer.lDirect = 0;
-//              myBuffer.lDirectHF = -200;
-//              ...
-//              myBuffer.dwFlags = myFlags /* see EAXBUFFERFLAGS below */ ;
-//       instead of:
-//              myBuffer = { 0, -200, ... , 0x00000003 };
-//
-typedef struct _EAXBUFFERPROPERTIES
-{
-	long lDirect;                 // direct path level (at low and mid frequencies)
-	long lDirectHF;               // relative direct path level at high frequencies
-	long lRoom;                   // room effect level (at low and mid frequencies)
-	long lRoomHF;                 // relative room effect level at high frequencies
-	long lObstruction;            // main obstruction control (attenuation at high frequencies)
-	float flObstructionLFRatio;   // obstruction low-frequency level re. main control
-	long lOcclusion;              // main occlusion control (attenuation at high frequencies)
-	float flOcclusionLFRatio;     // occlusion low-frequency level re. main control
-	float flOcclusionRoomRatio;   // relative occlusion control for room effect
-	float flOcclusionDirectRatio; // relative occlusion control for direct path
-	long lExclusion;              // main exlusion control (attenuation at high frequencies)
-	float flExclusionLFRatio;     // exclusion low-frequency level re. main control
-	long lOutsideVolumeHF;        // outside sound cone level at high frequencies
-	float flDopplerFactor;        // like DS3D flDopplerFactor but per source
-	float flRolloffFactor;        // like DS3D flRolloffFactor but per source
-	float flRoomRolloffFactor;    // like DS3D flRolloffFactor but for room effect
-	float flAirAbsorptionFactor;  // multiplies DSPROPERTY_EAXLISTENER_AIRABSORPTIONHF
-	unsigned long ulFlags;        // modifies the behavior of properties
-} EAXBUFFERPROPERTIES, *LPEAXBUFFERPROPERTIES;
-
-// Use this structure for DSPROPERTY_EAXBUFFER_OBSTRUCTION,
-typedef struct _EAXOBSTRUCTIONPROPERTIES
-{
-	long lObstruction;
-	float flObstructionLFRatio;
-} EAXOBSTRUCTIONPROPERTIES, *LPEAXOBSTRUCTIONPROPERTIES;
-
-// Use this structure for DSPROPERTY_EAXBUFFER_OCCLUSION
-typedef struct _EAXOCCLUSIONPROPERTIES
-{
-	long lOcclusion;
-	float flOcclusionLFRatio;
-	float flOcclusionRoomRatio;
-	float flOcclusionDirectRatio;
-} EAXOCCLUSIONPROPERTIES, *LPEAXOCCLUSIONPROPERTIES;
-
-// Use this structure for DSPROPERTY_EAXBUFFER_EXCLUSION
-typedef struct _EAXEXCLUSIONPROPERTIES
-{
-	long lExclusion;
-	float flExclusionLFRatio;
-} EAXEXCLUSIONPROPERTIES, *LPEAXEXCLUSIONPROPERTIES;
-
-// Used by DSPROPERTY_EAXBUFFER_FLAGS
-//    TRUE:    value is computed automatically - property is an offset
-//    FALSE:   value is used directly
-//
-// Note: The number and order of flags may change in future EAX versions.
-//       To insure future compatibility, use flag defines as follows:
-//              myFlags = EAXBUFFERFLAGS_DIRECTHFAUTO | EAXBUFFERFLAGS_ROOMAUTO;
-//       instead of:
-//              myFlags = 0x00000003;
-//
-#define EAXBUFFERFLAGS_DIRECTHFAUTO          0x00000001 // affects DSPROPERTY_EAXBUFFER_DIRECTHF
-#define EAXBUFFERFLAGS_ROOMAUTO              0x00000002 // affects DSPROPERTY_EAXBUFFER_ROOM
-#define EAXBUFFERFLAGS_ROOMHFAUTO            0x00000004 // affects DSPROPERTY_EAXBUFFER_ROOMHF
-
-#define EAXBUFFERFLAGS_RESERVED              0xFFFFFFF8 // reserved future use
-
-// Property ranges and defaults:
-
-#define EAXBUFFER_MINDIRECT                    (-10000)
-#define EAXBUFFER_MAXDIRECT                    1000
-#define EAXBUFFER_DEFAULTDIRECT                0
-
-#define EAXBUFFER_MINDIRECTHF                  (-10000)
-#define EAXBUFFER_MAXDIRECTHF                  0
-#define EAXBUFFER_DEFAULTDIRECTHF              0
-
-#define EAXBUFFER_MINROOM                      (-10000)
-#define EAXBUFFER_MAXROOM                      1000
-#define EAXBUFFER_DEFAULTROOM                  0
-
-#define EAXBUFFER_MINROOMHF                    (-10000)
-#define EAXBUFFER_MAXROOMHF                    0
-#define EAXBUFFER_DEFAULTROOMHF                0
-
-#define EAXBUFFER_MINOBSTRUCTION               (-10000)
-#define EAXBUFFER_MAXOBSTRUCTION               0
-#define EAXBUFFER_DEFAULTOBSTRUCTION           0
-
-#define EAXBUFFER_MINOBSTRUCTIONLFRATIO        0.0f
-#define EAXBUFFER_MAXOBSTRUCTIONLFRATIO        1.0f
-#define EAXBUFFER_DEFAULTOBSTRUCTIONLFRATIO    0.0f
-
-#define EAXBUFFER_MINOCCLUSION                 (-10000)
-#define EAXBUFFER_MAXOCCLUSION                 0
-#define EAXBUFFER_DEFAULTOCCLUSION             0
-
-#define EAXBUFFER_MINOCCLUSIONLFRATIO          0.0f
-#define EAXBUFFER_MAXOCCLUSIONLFRATIO          1.0f
-#define EAXBUFFER_DEFAULTOCCLUSIONLFRATIO      0.25f
-
-#define EAXBUFFER_MINOCCLUSIONROOMRATIO        0.0f
-#define EAXBUFFER_MAXOCCLUSIONROOMRATIO        10.0f
-#define EAXBUFFER_DEFAULTOCCLUSIONROOMRATIO    1.5f
-
-#define EAXBUFFER_MINOCCLUSIONDIRECTRATIO      0.0f
-#define EAXBUFFER_MAXOCCLUSIONDIRECTRATIO      10.0f
-#define EAXBUFFER_DEFAULTOCCLUSIONDIRECTRATIO  1.0f
-
-#define EAXBUFFER_MINEXCLUSION                 (-10000)
-#define EAXBUFFER_MAXEXCLUSION                 0
-#define EAXBUFFER_DEFAULTEXCLUSION             0
-
-#define EAXBUFFER_MINEXCLUSIONLFRATIO          0.0f
-#define EAXBUFFER_MAXEXCLUSIONLFRATIO          1.0f
-#define EAXBUFFER_DEFAULTEXCLUSIONLFRATIO      1.0f
-
-#define EAXBUFFER_MINOUTSIDEVOLUMEHF           (-10000)
-#define EAXBUFFER_MAXOUTSIDEVOLUMEHF           0
-#define EAXBUFFER_DEFAULTOUTSIDEVOLUMEHF       0
-
-#define EAXBUFFER_MINDOPPLERFACTOR             0.0f
-#define EAXBUFFER_MAXDOPPLERFACTOR             10.f
-#define EAXBUFFER_DEFAULTDOPPLERFACTOR         0.0f
-
-#define EAXBUFFER_MINROLLOFFFACTOR             0.0f
-#define EAXBUFFER_MAXROLLOFFFACTOR             10.f
-#define EAXBUFFER_DEFAULTROLLOFFFACTOR         0.0f
-
-#define EAXBUFFER_MINROOMROLLOFFFACTOR         0.0f
-#define EAXBUFFER_MAXROOMROLLOFFFACTOR         10.f
-#define EAXBUFFER_DEFAULTROOMROLLOFFFACTOR     0.0f
-
-#define EAXBUFFER_MINAIRABSORPTIONFACTOR       0.0f
-#define EAXBUFFER_MAXAIRABSORPTIONFACTOR       10.0f
-#define EAXBUFFER_DEFAULTAIRABSORPTIONFACTOR   1.0f
-
-#define EAXBUFFER_DEFAULTFLAGS                 (EAXBUFFERFLAGS_DIRECTHFAUTO |       \
-												EAXBUFFERFLAGS_ROOMAUTO |           \
-												EAXBUFFERFLAGS_ROOMHFAUTO )
-
-#pragma pack(pop)
-
-#ifdef __cplusplus
-}
-#endif // __cplusplus
-
-#endif
diff --git a/neo/sys/win32/eaxguid.lib b/neo/sys/win32/eaxguid.lib
deleted file mode 100644
index 5247dd7e..00000000
Binary files a/neo/sys/win32/eaxguid.lib and /dev/null differ