diff --git a/doc/Makefile.am b/doc/Makefile.am
index ec55eb35f..09ef0c2c0 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -5,7 +5,8 @@ SUBDIRS= man
DOX=\
bind.dox config.dox connect.dox cshifts.dox dirconf.dox faq.dox \
filesystem.dox mapformat.dox property-list.dox qtv.dox quakeforge.dox \
- qw-cap-spec.dox qw-download-spec.dox surround-sound.dox timestamps.dox
+ qw-cap-spec.dox qw-download-spec.dox sound.dox specifications.dox \
+ surround-sound.dox timestamps.dox
EXTRA_DIST= qf.ico \
\
diff --git a/doc/config.dox b/doc/config.dox
index 9a4a2eef5..ead8940f6 100644
--- a/doc/config.dox
+++ b/doc/config.dox
@@ -7,6 +7,7 @@
\li \subpage cvars
\li \subpage filesystem
\li \subpage dirconf
+\li \subpage sound
\li \subpage tracklist
\li \subpage key_binding
\li \subpage cshift_cvars
@@ -117,7 +118,7 @@ Reset the specified cvar to its default (engine specified) value.
resetall
Reset all cvars to their default (engine specified values).
-\section cvar_rom Read-only cvars.
+\section cvar_rom Read-only cvars
Many cvars in \QF are read-only because changing them at runtime would
either have little meaning or be difficult to implement. However, there
is a way to change even a read-only cvars: using the \c set
diff --git a/doc/quakeforge.dox b/doc/quakeforge.dox
index e21a7fd27..bf3da2584 100644
--- a/doc/quakeforge.dox
+++ b/doc/quakeforge.dox
@@ -12,4 +12,5 @@ of players we can.
\li \subpage build-install
\li \subpage faq
\li \subpage run_config
+\li \subpage specs
*/
diff --git a/doc/sound.dox b/doc/sound.dox
new file mode 100644
index 000000000..30dc44d0c
--- /dev/null
+++ b/doc/sound.dox
@@ -0,0 +1,85 @@
+//unfortunately, have to wrap the docs in a C comment for doxygen
+// vim:tw=74:formatoptions-=l
+/**
+\page sound \QF Sound System
+The \QF sound system is designed to work with many sound systems. The
+sound systems \QF supports are:
+
+ - Linux
- ALSA, OSS, SDL
+ - Other UNIX-like
- OSS, SDL
+ - Windows
- DirectX, Win32, SDL
+
+There are others (SUN, SGI, MME), but their status is unkown. SUN sound
+support will build (on OpenBSD), but whether it works is unknown.
+
+In the above list, the first sound system listed for each OS is the
+default. To use one of the other supported drivers, set the \c snd_output
+cvar to the appropriate name as shown below (all systems are shown).
+
+
+
+ System | ALSA | OSS | DirectX |
+ Win32 | SUN | SGI | MME | SDL |
+
+
+ Driver | alsa | oss | dx |
+ win | sun | sgi | mme | sdl |
+
+
+
+As \c snd_output is read-only, see \ref cvar_rom for how to set it.
+
+In addition to the above, \QF also supports JACK audio. \QF's JACK support
+should work on any system that supports JACK. However, as JACK support
+uses a different architecture (JACK audio is "pull", \QF default audio is
+"push"), selecting JACK support uses a different cvar; Set \c snd_render
+to \c jack (the following table shows the name for both render systems).
+
+
+
+ System | Default | JACK |
+
+
+ Render | default | jack |
+
+
+
+\section snd_comcc Common Cvars and Commands
+\c ambient_level
+\c ambient_fade
+\c precache
+\c snd_swapchannelside
+\c snd_volumesep
+\c snd_phasesep
+\c volume
+
+\c play
+\c playcenter
+\c playvol
+\c snd_force_unblock
+\c soundlist
+
+When \QF is built with MIDI support (using WildMidi):
+\c wildmidi_config
+\c wildmidi_volume
+
+\section snd_defcc QF Default Cvars and Commands
+\c snd_noextraupdate
+\c snd_mixahead
+\c nosound
+
+\c stopsound
+\c soundinfo
+
+\c snd_stereo
+\c snd_rate
+\c snd_bits
+
+\c snd_device
+
+\c snd_oss_mmaped
+
+\section snd_jackcc JACK Cvars and Commands
+\c snd_jack_server
+
+*/
diff --git a/doc/specifications.dox b/doc/specifications.dox
new file mode 100644
index 000000000..423febed0
--- /dev/null
+++ b/doc/specifications.dox
@@ -0,0 +1,13 @@
+//unfortunately, have to wrap the docs in a C comment for doxygen
+// vim:tw=74:formatoptions-=l
+/**
+\page specs Various Specifications
+
+
+\li \subpage surround_sound_spec
+\li \subpage connection_sequence
+\li \subpage mapformat
+\li \subpage property-list
+\li \subpage qw_cap_spec
+\li \subpage qw_download_spec
+*/