Q2PRO-X 1.6 Beta 5 by ly — Q2PRO-X 1.6 Beta 5 Sound Guide
The complete guide in HTML. The original DOCX is available from its documentation card.
Q2PRO-X 1.6 Beta 5 by ly
Q2PRO-X 1.6 Beta 5 Sound Guide
Project author: ly
DMA, OpenAL, HRTF, reverberation, volumes and online music
English edition • Q2PRO-X 1.6 Beta 5 by ly • 2026-10-10
Contents
The entries are links: click one to jump to that section.
Player-state ambient and playback priority
1. Quick map: what Q2PRO-X currently has for sound
2. Where to find all of this in the menu
3. The base model: how sound is structured in Q2PRO-X
4. The main split: DMA or OpenAL
5. s_enable: the master backend switch
6. General theory: sample rate, format, precision, resampling
7. Settings that matter in both DMA and OpenAL
8. What exists only, or primarily, in DMA
10. al_profile: the difference between OpenAL Q2PRO-X and R1Q2-like
11. al_sound_profile: ready-made acoustic profiles
12. HRTF: what it is and how it works
13. Binaural sound: what it is and how it differs from plain HRTF
14. Reverb / room acoustics: what it is
15. Reverb parameters: each one explained
16. Commands for OpenAL / reverb / binaural
17. al_resampler: the OpenAL resampler
18. Per-weapon and per-category volume controls
19. What requires snd_restart, and what changes live
20. Current important defaults
21. Recommended starting configurations
22. What to tune for which problem
23. Feature availability matrix: what works where
24. Relation to the built-in voice chat
25. The shortest practical cheat sheet
30. Conclusion for the release's audio
Beta4: audio and window focus
The audio menu exposes all three s_auto_focus values: 0 always, 1 while visible (not minimized), 2 only when focused. The old Yes/No control did not represent these values correctly. Saved numeric preferences and volume are preserved; the separate s_mute_when_inactive override remains.
Online/adaptive audio can no longer resume a deactivated stream. OpenAL also mutes voice sources and effect tails, restores the selected volume on return and preserves manual music pause. Demo launch fades intro music before a separate demo music profile starts. Without that profile, normal background music pause/resume rules apply. Duplicate predicted/server rocket and hyperblaster impact audio and rocket/rail firing sequences have been fixed; server damage authority is unchanged.
Player-state ambient and playback priority
The sound menu adds optional health/armor ambient next to Online Music. It is off by default, has independent SP/DM switches and nine adjustable states. FLAC loops and state changes overlap smoothly over 2–3 seconds. Death keeps the critical state until respawn or level exit. Protection is estimated from armor type and available HUD information, not simply health plus armor.
Explicit online tracks and musical AVFX presets take priority. Disconnect restores ordinary autoplay. Fixed genre selection and a false Playing state while a musical preset was actually paused.
A separate Audio Assets guide lists PAK and loose-file paths, content and replacement options, including the trusted intro restrictions.
Q2PRO-X: detailed sound guide
Why this document exists
The sound subsystem in Q2PRO-X is much richer than in a “plain Quake II client”, and that also makes it harder to understand. This guide collects both the practical and theoretical sides of the current Q2PRO-X sound stack:
This document is written as a user-facing guide, not as a private developer note.
1. Quick map: what Q2PRO-X currently has for sound
Q2PRO-X currently has three sound layers:
1. s_enable 0
Sound is fully disabled.
1. s_enable 1 = software (DMA)
The classic software mixer path.
This is the traditional Quake II model: the client mixes PCM audio itself and feeds the finished stream into the system sound driver.
1. s_enable 2 = OpenAL
A modern 3D backend with spatial positioning, HRTF, a binaural layer, room acoustics, extra sound profiles, OpenAL resamplers, and a broader runtime feature set.
The current default backend in Q2PRO-X is `OpenAL`.
2. Where to find all of this in the menu
| What you are setting | Menu path |
|---|---|
| Sound engine, acoustics, submenus | Main menu → Options → Sound & Acoustics |
| Advanced sound settings | Main menu → Options → Sound & Acoustics → Q2PRO-X / Advanced audio |
| Binaural and 3D sound | Main menu → Quick Setup → Binaural / 3D Sound |
| Sound volumes | Main menu → Options → Sound & Acoustics → Sound Volumes |
| Weapon volumes | Main menu → Options → Sound & Acoustics → Sound Volumes → Weapon Volumes |
| Other sound volumes | Main menu → Options → Sound & Acoustics → Sound Volumes → Other Sound Volumes |
| AVFX sound volumes | Main menu → Advanced Visual Effects → AVFX Detailed Settings → Local FX & Sound → AVFX Sound Volumes |
| Online music | Main menu → Online Music (PROMODJ) |
| Voice chat | Main menu → Quick Setup → Q2PRO-X / Voice Chat |
The main sound page
Sound & Acoustics
| Type | Section | Row | Variable or target | What it does |
|---|---|---|---|---|
| Section | Basics | Basics | ||
| List | Basics | Sound engine | s_enable | s_enable: OpenAL is required for al_profile, HRTF, room acoustics. Applies immediately. [no sound / software / OpenAL] |
| Toggle | Basics | Follow default output device | s_auto_device | Follow the OS default audio output live. When you switch the Windows output (headphones <-> speakers), the game moves to it automatically with no snd_restart. OpenAL + default device only (a specific al_device is left alone). Default ON. Applies immediately. |
| Slider | Basics | Master volume | s_volume | s_volume: master sound volume (0..1). Applies immediately. |
| Slider | Basics | Music volume | ogg_volume | ogg_volume: OGG music / soundtrack volume (0..1). Applies immediately. |
| List | Basics | Ambient sounds | s_ambient | s_ambient: looping ambient world sounds. 0 = off, 1 = on, 2 = only from visible (model) entities, e.g. rocket flybys. Applies immediately. [no / yes / only player's own] |
| Slider | Basics | Max voices | s_maxchannels | s_maxchannels: max simultaneous voices (default 64). Raise if sounds drop in heavy storms/AVFX; driver may cap OpenAL lower (see soundinfo). Applies via snd_restart. |
| Section | Submenus | Submenus | ||
| Navigation | Submenus | OpenAL & acoustics... | q2prox_sound | OpenAL profile, reverb, HRTF, room acoustics. |
| Navigation | Submenus | Headphone 3D sound... | q2prox_binaural | Headphone 3D / HRTF / crossfeed / encoding. |
| Navigation | Submenus | Sound volumes... | q2prox_sound_vol | Sound volume hub: weapons, other categories, AVFX sounds |
| Navigation | Submenus | Advanced audio... | q2prox_advanced_audio | Underwater filter, focus, mix-ahead, swap stereo, music (ogg) options. |
| Navigation | Submenus | Voice chat... | q2prox_voice | In-game voice chat (PTT / VAD, LiveKit; OpenAL required for transmit and receive). |
| Navigation | Submenus | Online music... | q2prox_online_music | Open the online music player (PROMODJ): search, play, overlay. |
| Navigation | Submenus | Player state ambient... | q2prox_health_ambient | Adaptive music based on health and protection. |
| Section | Behavior | Behavior | ||
| Toggle | Behavior | Mute when inactive | s_mute_when_inactive | Mute audio when the window is not focused (Alt+Tab). Applies immediately. |
| Navigation | Behavior | Restart sound... | snd_restart | Restart the sound engine to apply s_enable / s_maxchannels changes. |
Some older base variables and music options are still reachable only from the console or the cvar reference, even though the main modern sound controls are already exposed on dedicated Q2PRO-X pages.
3. The base model: how sound is structured in Q2PRO-X
3.1 What DMA means in Q2PRO-X
In Q2PRO-X, DMA does not mean “magically better old-school sound”, and it does not mean hardware 3D.
It is the classic software path:
Advantages:
Disadvantages:
3.2 What OpenAL means in Q2PRO-X
OpenAL is a dedicated audio backend/API for spatial sound.
In Q2PRO-X it is used not just as “another driver”, but as a full foundation for:
Advantages:
Disadvantages:
4. The main split: DMA or OpenAL
When DMA usually makes sense
Choose DMA if you want:
Typical scenario:
When OpenAL usually makes sense
Choose OpenAL if you want:
Typical scenario:
5. s_enable: the master backend switch
What it does
s_enable selects the backend:
When to apply it
When you change s_enable, you will normally need:
snd_restart
Practical advice
If you are not sure where to begin:
6. General theory: sample rate, format, precision, resampling
Before the concrete cvars, it helps to understand a few basic audio terms.
6.1 What sample rate / output rate means
This is the output sampling frequency — how many “snapshots” of the audio signal are produced each second.
Examples:
The higher the rate:
In Q2PRO-X, this is controlled by:
Important:
soundinfo
6.2 What sample format means
This is how a single audio sample is represented internally or on output.
In current Q2PRO-X, the relevant choices are:
s16
Classic 16-bit PCM.
Advantages:
Disadvantages:
float32
32-bit floating-point audio.
Advantages:
Disadvantages:
This is controlled by:
After changing it, use:
snd_restart
6.3 What a resampler is
A resampler is the algorithm that converts sound from one frequency / representation into another.
This matters when:
A poor resampler can cause:
A better resampler can provide:
But:
7. Settings that matter in both DMA and OpenAL
Below are the shared controls that are useful regardless of backend.
s_volume
The main master game volume.
Current base default in code:
This is the overall game level on top of which narrower weapon/category volumes can later be applied.
s_khz
Requested output rate.
Common choices:
In practice:
s_sampleformat
Preferred sample format:
A good practical choice:
s_ambient
Controls ambient/world sounds.
Values:
Useful if you want less map noise without removing every useful cue.
s_mute_when_inactive
When the game window loses focus (Alt+Tab, click another window), the client can mute itself.
Values:
This is a very practical QoL setting.
ogg_enable
Enables OGG background music.
ogg_volume
Music volume relative to the master sound level.
ogg_shuffle
Random music order.
These cvars do not change combat positional audio, but they do shape the overall sound environment.
soundinfo
Very useful diagnostic command.
Use it to see:
snd_restart
The main “restart the sound backend” command.
It is needed after most major sound-path changes:
8. What exists only, or primarily, in DMA
s_driver
This selects the DMA driver.
On Windows, typical values are:
If empty, auto-detection is used.
Practical meaning:
s_mixahead
This is the DMA mix-ahead window.
In practical terms:
If the value is lower:
If the value is higher:
Practical range:
This is one of the most characteristically DMA-oriented parameters.
s_swapstereo
Swaps left and right channels.
Only works in DMA.
Useful only rarely:
s_resampler
This is the DMA resampler.
Values:
What they mean
legacy
The old, simplest path.
Advantages:
Disadvantages:
linear
Linear interpolation.
A compromise:
cubic
Cubic interpolation.
Usually:
When DMA still makes sense today
DMA is a logical choice if you want:
9. What exists only in OpenAL
Everything below is part of the main reason to choose OpenAL.
Key OpenAL-only feature families
10. al_profile: the difference between OpenAL Q2PRO-X and R1Q2-like
This is one of the most important settings in the entire sound stack.
What it actually is
al_profile is not a volume control and not a quality setting.
It is a behavior / voicing profile for the OpenAL sound path.
Current main values:
Theory: why profiles differ at all
Even if both paths use OpenAL, they can still differ in:
So this is not “the same OpenAL with one different checkbox”.
It is two different voicing approaches on top of the OpenAL backend.
Q2PRO-X profile
Main idea:
Under the hood it is closer to:
In practice:
R1Q2-like profile
Main idea:
Under the hood it is closer to:
In practice:
Practical rule of thumb
If you want:
11. al_sound_profile: ready-made acoustic profiles
What it is
al_sound_profile is a curated preset layer that applies a more coherent acoustic “intent” instead of forcing the user to hand-tune every parameter from zero.
Typical logic:
Why it exists
Many players do not want to tune every single cvar by hand.
They want a reasonable overall target instead of a forest of parameters.
The current values are:
Important logic
These profiles do not govern everything. They mainly govern the acoustic layer:
And they must not override:
In other words, a sound profile is an acoustic preset, not a change of the whole audio world.
Typical practical meanings
custom
No curated voicing is imposed.
Use this if:
competitive
Typical goal:
Good when:
balanced
Middle-ground profile.
Typical goal:
Good default if:
immersive
Typical goal:
Good when:
cinematic
Even more emphasis on presentation than immersive.
Good when:
cathedral
A deliberately strong, almost demonstrative mode.
It is meant for a sense of scale rather than for honest competitive readability.
12. HRTF: what it is and how it works
Theory: what HRTF means
HRTF = Head-Related Transfer Function.
This is a model of how sound changes before it reaches your ears because of:
In plain language:
Why this matters in games
Without HRTF, headphones often still give you left/right separation, but front/back and elevation cues can be weak or ambiguous.
With HRTF:
The tradeoff
HRTF is not a guaranteed universal upgrade.
Possible benefits:
Possible downsides:
In Q2PRO-X
HRTF is controlled through OpenAL / binaural settings.
Practical recommendation:
13. Binaural sound: what it is and how it differs from plain HRTF
Theory: what binaural sound is
Binaural rendering is an audio approach that tries to present sound the way a real pair of ears would receive it.
In games, this usually means:
How it differs from plain HRTF
In everyday discussion the two often overlap, but conceptually:
So:
Why Q2PRO-X exposes both
Because different users may want:
Main binaural cvars
al_binaural
Master on/off switch for the binaural layer.
Typical values:
al_binaural_profile
Curated headphone voicing profile for the binaural layer.
The idea is similar to al_sound_profile, but specifically for headphone rendering.
al_binaural_encoding
Selects how the binaural path encodes the output.
Think of this as:
al_binaural_hrtf_mode
Controls how HRTF is selected or enforced inside the binaural path.
Typical meaning:
al_binaural_hrtf_size
Theory: what filter size means
This is effectively the size/length of the HRTF filter.
Larger filters can:
But they can also:
al_binaural_crossfeed
Theory: what crossfeed is
Crossfeed is a headphone technique where a controlled amount of left signal leaks into right and vice versa.
The idea:
Potential benefits:
Potential downside:
Practical rule:
14. Reverb / room acoustics: what it is
Theory: what reverb actually is
Reverb is the collection of reflections and late tail that make a sound feel like it exists inside a space.
Without reverb, a sound can feel:
With reverb, a sound can feel:
Why games use it
Because space matters:
Why it can be a problem
Too much reverb can:
That is why Q2PRO-X exposes both:
15. Reverb parameters: each one explained
al_reverb
Master enable for room acoustics / reverb.
Values:
If you want the simplest OpenAL path:
If you want room simulation:
al_reverb_lerp_time
Theory: what interpolation time means
When the client changes from one room preset / classification state to another, it can either:
al_reverb_lerp_time is that smoothing window.
If it is higher:
If it is lower:
al_eax_preset
Room preset selector.
Typical meaning:
Usually:
al_eax_wet
Theory: what “wet” means
In audio, “wet” is the processed/reverberated part of the signal.
The opposite is “dry” — the direct, unprocessed sound.
If wet is higher:
If wet is lower:
This is one of the most important practical reverb controls.
al_eax_local_wet
This is the wetness for local / near-player sounds.
Very useful because many players want:
If local wet is too high:
al_eax_occlusion
Theory: what occlusion means
Occlusion means a sound is partially blocked by geometry or material between the source and the listener.
Typical audible effect:
If this is enabled:
If disabled:
al_eax_explosion_wet
Specific wetness / reverb send for explosions.
Useful when you want:
al_eax_explosion_decay
Theory: what decay means
Decay is how long the reverb tail lasts before fading away.
If decay is higher:
If decay is lower:
For explosions:
al_eax_explosion_late
Late reverb emphasis for explosions.
Useful if you want:
al_eax_transport_wet
Reverb send / environment treatment for transport-like world spaces or loops.
Useful if:
al_reverb_reflections
Theory: what early reflections are
These are the first, more distinct reflections that arrive after the direct sound.
They help the ear feel:
If reflections are stronger:
al_reverb_late
Theory: what late reverb is
This is the later, more diffuse tail of the room, where individual reflections blur into one cloud-like reverberant field.
If late is higher:
al_reverb_decay
General decay-time multiplier.
If increased:
If reduced:
al_reverb_delay
Theory: what delay means in this context
This is not a guitar pedal delay.
It is the timing of how reflections / later reverb separate from the direct sound.
If higher:
If lower:
al_reverb_hf
Theory: what HF brightness means
HF = high frequency.
This controls how bright or dark the reverberant tail is.
If higher:
If lower:
al_reverb_diffusion
Theory: what diffusion means
Diffusion controls how smooth and dense the reverberant field feels.
If higher:
If lower:
al_eax_debug
Diagnostic/debug mode.
Useful to inspect:
16. Commands for OpenAL / reverb / binaural
al_reverb_info
Prints:
Very useful if you are tuning room acoustics seriously instead of turning knobs blindly.
al_reverb_reload
Forces the client to rebuild / re-snap the current reverb preset.
Useful:
al_binaural_info
Prints:
al_resampler_list
Prints the actual list of OpenAL resamplers available from the runtime.
This matters because the theoretical set can include:
But the actual runtime should always be checked in practice.
17. al_resampler: the OpenAL resampler
This is the OpenAL-specific resampler choice.
Typical values:
What these mean in practice
point
The roughest and simplest path.
Think of it as:
This is more of an experiment / fallback path than a best daily choice.
linear
Simple compromise.
cubic
A smoother and usually higher-quality option.
bsinc12 / bsinc24
More advanced sinc-like choices.
Usually:
Practical choices
If you do not want to think too much:
If you want a good high-quality but not too exotic option:
If you want to experiment with OpenAL Soft’s highest-quality path:
After changing it:
snd_restart
18. Per-weapon and per-category volume controls
This is one of the most practically useful QoL features in Q2PRO-X.
How the scale works
The menu scale is:
So this is not “percentage from zero to one hundred” in a naive sense.
It is a user-facing volume scale relative to the stock Q2PRO-X baseline.
Weapon volumes
There are dedicated cvars for:
This lets you:
Category volumes
There are also category cvars:
Practical examples
For competitive play
It often makes sense to:
For a more cinematic sound
You can:
19. What requires snd_restart, and what changes live
This is one of the most important practical sections.
Usually requires snd_restart
Usually applies live
Practical rule
If you change:
you should immediately think:
snd_restart
If you are only tuning:
the change is usually already live.
20. Current important defaults
Below are not all sound cvars in the project, but the ones that matter most for real-world setup.
Base sound defaults
| Cvar | Current default value | What it means |
|---|
| s_enable | 2 | OpenAL is the default backend |
|---|
| s_khz | 44 | Base request is 44 kHz |
|---|
| s_sampleformat | auto | Format is auto-selected |
|---|
| s_resampler | legacy | DMA resampler defaults to the classic path |
|---|
| s_volume | 0.7 | Master volume in code |
|---|
| s_ambient | 1 | Ambient sounds are enabled |
|---|
| s_underwater | 1 | Underwater processing is enabled |
|---|
| s_underwater_gain_hf | 0.25 | Underwater high frequencies are strongly reduced |
|---|
| s_mute_when_inactive | 0 | The game does not mute itself on focus loss by default |
|---|
| ogg_enable | 1 | OGG music is allowed |
|---|
| ogg_volume | 1 | Music plays at full relative level |
|---|
| ogg_shuffle | 0 | Shuffle is off |
|---|
OpenAL defaults
| Cvar | Current default value | What it means |
|---|
| al_profile | 0 | Base OpenAL profile = Q2PRO-X |
|---|
| al_reverb | 0 | Room acoustics are off by default |
|---|
| al_reverb_lerp_time | 2.0 | Room-preset transitions are smoothed across 2 seconds |
|---|
| al_eax_preset | -1 | Automatic room classification |
|---|
| al_eax_wet | 0.80 | Fairly strong world reverb send |
|---|
| al_eax_local_wet | 0.08 | Local sounds are drier by default |
|---|
| al_eax_occlusion | 1 | Occlusion is enabled |
|---|
| al_reverb_reflections | 1.0 | Early reflections at neutral strength |
|---|
| al_reverb_late | 1.0 | Late tail at neutral strength |
|---|
| al_reverb_decay | 1.0 | Base decay length |
|---|
| al_reverb_delay | 1.0 | Base reverb timing |
|---|
| al_reverb_hf | 1.0 | Base HF brightness |
|---|
| al_reverb_diffusion | 1.0 | Base diffusion / smoothness |
|---|
| al_resampler | default | OpenAL runtime chooses the resampler |
|---|
| al_sound_profile | 0 (custom) | No curated profile is imposed by default |
|---|
Binaural defaults
| Cvar | Current default value | What it means |
|---|
| al_binaural | 0 | Binaural mode is off by default |
|---|
| al_binaural_profile | 0 (custom) | No preset headphone profile selected in advance |
|---|
| al_binaural_encoding | 0 (auto) | Encoding is auto-selected |
|---|
| al_binaural_hrtf_mode | 0 (default) | HRTF mode is left to runtime defaults |
|---|
| al_binaural_hrtf_size | 0 | Filter size = runtime default |
|---|
| al_binaural_crossfeed | 0 | Crossfeed is off |
|---|
Per-weapon / per-category defaults
All weapon/category volume cvars start at:
That means:
21. Recommended starting configurations
Option 1: speakers, simple and clean sound
set s_enable 1
set s_khz 48
set s_sampleformat auto
set s_resampler linear
snd_restart
Meaning:
Option 2: general-purpose OpenAL on speakers
set s_enable 2
set al_profile 0
set al_hrtf 0
set al_reverb 1
set al_sound_profile balanced
set al_resampler cubic
snd_restart
Meaning:
Option 3: headphones, competitive OpenAL
set s_enable 2
set al_profile 1
set al_hrtf 2
set al_reverb 0
set al_binaural 2
set al_binaural_profile default
snd_restart
Meaning:
Option 4: headphones, spatial modern Q2PRO-X
set s_enable 2
set al_profile 0
set al_hrtf 2
set al_reverb 1
set al_sound_profile balanced
set al_binaural 2
set al_binaural_profile deep
snd_restart
Meaning:
22. What to tune for which problem
Problem: “it feels too dry”
Try:
Problem: “it feels too smeared / too much tail”
Try:
Problem: “on headphones I still do not read direction well”
Try:
Problem: “my own sounds are too boomy inside the room”
Try:
Problem: “explosions do not feel big enough”
Try:
Problem: “movers / loops / hum are too loud”
Try:
23. Feature availability matrix: what works where
| Feature / parameter | DMA | OpenAL |
|---|
| s_driver | yes | no |
|---|
| s_mixahead | yes | no as a primary DMA-only parameter |
|---|
| s_swapstereo | yes | no |
|---|
| s_resampler | yes | no |
|---|
| al_profile | no | yes |
|---|
| al_hrtf | no | yes |
|---|
| al_binaural* | no | yes |
|---|
| al_reverb* / al_eax* | no | yes |
|---|
| al_resampler | no | yes |
|---|
| al_resampler_list | no | yes |
|---|
| al_reverb_info | no | yes |
|---|
| al_binaural_info | no | yes |
|---|
| per-weapon volumes | yes | yes |
|---|
| per-category volumes | yes | yes |
|---|
| ogg_* music controls | yes | yes |
|---|
| s_mute_when_inactive | yes | yes |
|---|
24. Relation to the built-in voice chat
This is not the main topic of the document, but it is important:
So if you plan to use both game sound and the built-in voice path:
25. The shortest practical cheat sheet
If you want the shortest version:
26. Conclusion
The main idea is this:
Q2PRO-X now gives you two genuinely different sound worlds:
The right setup depends not on “which mode is objectively best”, but on:
If you want the least stressful setup path, the best order is:
1. choose the backend (DMA or OpenAL);
1. if OpenAL, decide whether you want Q2PRO-X or R1Q2-like;
1. decide whether you want HRTF;
1. decide whether you want room acoustics;
1. only then start polishing weapon and category volumes.
That order gets you to a deliberate setup much faster than random knob-turning.
27. AVFX audio
The AVFX layer has audio of its own, with volumes separated from the game's overall volume.
27.1. AVFX sound volumes
Menu path: Main menu → Advanced Visual Effects → AVFX Detailed Settings → Local FX & Sound → AVFX Sound Volumes
AVFX Sound Volumes
| Type | Section | Row | Variable or target | What it does |
|---|---|---|---|---|
| Section | Master | Master | ||
| Toggle | Master | Sounds | cl_avfx_audio | Master gate for all AVFX sound layers (thunder, rain/wind/snow/water beds, drop ticks, ring plips, footsteps). Silent if a layer's WAV is missing. Applies immediately. |
| Slider | Master | Sound volume | cl_avfx_audio_volume | Overall loudness of AVFX sound effects (multiplies s_volume and every sub-layer). Applies immediately. |
| Section | Weather & environment | Weather & environment | ||
| Toggle | Weather & environment | Wind sound | cl_avfx_audio_wind | Gate for the wind audio layer: ambient wind/dust/ash/fog loops, storm variant and gust one-shots. Silent if WAV missing. Applies immediately. |
| Toggle | Weather & environment | Rain sound | cl_avfx_audio_rain | Gate for the main rain-noise loops (light/normal/heavy + underwater). Drop ticks and ring plips have their own gates. Silent if WAV missing. Applies immediately. |
| Toggle | Weather & environment | Rain drop sound | cl_avfx_audio_rain_drops | Allow close raindrop tick sounds (rain preset only). Silent if WAV missing. Applies immediately. |
| Toggle | Weather & environment | Snow sound | cl_avfx_audio_snow | Gate for the snow-preset ambience: a deliberately soft winter-wind loop (snow_wind_loop.wav), not loud snow noise. Silent if WAV missing. Applies immediately. |
| Toggle | Weather & environment | Water sound | cl_avfx_audio_water | Allow ring-plip and soft water-surface sounds for AVFX water contacts (if WAVs present). Applies immediately. |
| Toggle | Weather & environment | Thunder | cl_avfx_audio_thunder | Allow thunder sound tied to lightning events. Applies immediately. |
| Navigation | Weather & environment | Events & sky... | q2prox_avfxvol_events | Open steam, sky-event, spaceship and Black-Hole sound controls. |
| Navigation | Weather & environment | Contacts & wildlife... | q2prox_avfxvol_contacts | Open surface-contact and positional wildlife sound controls. |
| Section | Service | Service | ||
| Navigation | Service | AVFX sounds off | set cl_avfx_audio 0 | Mute AVFX through its master only. Child preferences and all visual/non-AVFX settings stay untouched. |
| Navigation | Service | Restore AVFX sound defaults | cl_avfx_defaults_audio | Restore every AVFX sound control to its registered default. Optional Black-Hole audio remains OFF by default. |
Separate child pages own the events and the contacts:
AVFX Sounds / Events & Sky
| Type | Section | Row | Variable or target | What it does |
|---|---|---|---|---|
| Section | Steam | Steam | ||
| Toggle | Steam | Steam sound | cl_avfx_audio_lava_steam | Short evaporation hiss when rain/snow hits lava; loudness scales with particle size. Visual steam is separate. Applies immediately. |
| Toggle | Steam | Surface steam sound | cl_avfx_audio_lava_surface_steam | Softer positional hiss from melting snow/water at lava edges (steam_surface_hiss1..3), at the soft surface-steam point. Applies immediately. |
| Toggle | Steam | Snow impact steam audio | cl_avfx_weapon_snow_steam_audio | Separate steam hiss for hot weapon hits on snow. The visual steam stays part of the weapon effect. Applies immediately. |
| Section | Celestial | Celestial | ||
| Toggle | Celestial | Impact bang | cl_avfx_audio_impact | Allow an explosion bang at the lightning strike point (rocket-style, fades with distance). Applies immediately. |
| Toggle | Celestial | Impact meteor audio | cl_avfx_audio_meteor_impact | Falling impact meteor audio (entry hiss, flyby whoosh, impact boom, debris). Missing WAVs silent. Applies immediately. |
| Toggle | Celestial | Sky meteor audio | cl_avfx_audio_meteor | Sky meteor audio (burnup crack). Missing WAV silent. Applies immediately. |
| Toggle | Celestial | Spaceship flyby audio | cl_avfx_spaceships_sound | Sky spaceship flyby sound. Default ON. 0 = silent ships. Missing WAVs silent. Applies immediately. |
| Slider | Celestial | Spaceship flyby volume | cl_avfx_spaceships_sound_volume | Sky spaceship flyby volume. 0.35 (default). 0 = silent. Applies immediately. |
| Toggle | Celestial | Black Hole audio | cl_avfx_blackhole_consumption_audio | Black Hole presence sound: a deep gravitational bed that grows with the hole's APPARENT size, plus a shear layer positioned toward the hole. Requires AVFX audio and a visible Black Hole; independent of the optional consumption master. Default OFF. Missing WAVs silent. Applies immediately. |
| Slider | Celestial | Black Hole volume | cl_avfx_blackhole_consumption_audio_volume | Black Hole presence volume before the global AVFX gain. 0.70 (default). Applies immediately. |
| Slider | Celestial | View focus | cl_avfx_blackhole_consumption_audio_focus | How much looking at the hole lifts the shear layer. The hole stays audible behind you: this shapes the mix, it never mutes it. 0.30 (default). Applies immediately. |
| Toggle | Celestial | Black Hole events | cl_avfx_blackhole_consumption_audio_events | Bounded Black Hole events: object in-draw, celestial shear and positional rock fracture from Surface Lift. Bursts use fixed voice/cooldown limits. Default OFF. Applies immediately. |
| Slider | Celestial | Black Hole event volume | cl_avfx_blackhole_consumption_audio_events_volume | Volume of the Black Hole in-draw and shear events, before the global AVFX gain. Independent of the presence bed volume. 0.80 (default). Applies immediately. |
| Navigation | Celestial | Back | q2prox_avfxvol | Back to master, weather and contact AVFX sounds. |
AVFX Sounds / Contacts & Wildlife
| Type | Section | Row | Variable or target | What it does |
|---|---|---|---|---|
| Section | Surface footsteps | Surface footsteps | ||
| Toggle | Surface footsteps | Surface step sounds | cl_avfx_audio_surface_steps | Master gate for AVFX surface-contact step audio. Enables snow, wet and puddle step layers when their own sub-gates and assets are present. Applies immediately. |
| Toggle | Surface footsteps | Puddle step sounds | cl_avfx_audio_puddle_steps | Allow wet footstep sounds when the player walks or runs through visible AVFX puddles. Requires Surface step sounds and the AVFX sound master. Applies immediately. |
| Toggle | Surface footsteps | Snow step sounds | cl_avfx_audio_snow_steps | Allow snow footstep sounds on visible snow cover. Volume and depth follow visible snow and snowdrift growth. Applies immediately. |
| Section | Wildlife | Wildlife | ||
| Toggle | Wildlife | Hiss on tongue flick | cl_avfx_surface_materials_crawlers_audio_hiss | Play a positional hiss when a Snake opens its mouth and shoots its tongue. Several Snakes may hiss independently. Requires the global AVFX sound master. Default off. Applies immediately. |
| Slider | Wildlife | Hiss volume | cl_avfx_surface_materials_crawlers_audio_hiss_volume | Snake hiss volume before the global AVFX audio volume. Applies immediately. |
| Toggle | Wildlife | Fly buzzing | cl_avfx_surface_materials_crawlers_audio_flies | Play varied positional buzzing around Snake remains after flies arrive. Different carcasses sound independently. Default off. Applies immediately. |
| Slider | Wildlife | Fly volume | cl_avfx_surface_materials_crawlers_audio_flies_volume | Corpse-fly buzz volume before the global AVFX audio volume. Applies immediately. |
| Navigation | Wildlife | Back | q2prox_avfxvol | Back to master, weather and contact AVFX sounds. |
That separation lets you keep the weather visible but quiet — a frequent choice for competitive play.
28. Music
28.1. Three independent sources
Q2PRO-X has three sources of music, and they do not fight each other:
| Source | What it is | What controls it |
|---|---|---|
| Startup intro | A separate presentation on a cold launch into the menu | Its own switch; game-music settings do not reach it |
| Online music | The PROMODJ player with search, playback and an overlay | The online music menu |
| Game music | The classic Quake II music | Its own game-music variables |
The order at launch is fixed: the intro always plays first, and online-music autoplay begins when it ends.
Details about the presentation are in the startup intro guide.
28.2. Online music
Online Music (PROMODJ)
| Type | Section | Row | Variable or target | What it does |
|---|---|---|---|---|
| Section | Playback | Playback | ||
| Toggle | Playback | Online music | cl_music_online_enable | Master (off = no network). Applies immediately. |
| Field | Playback | Provider | cl_music_online_provider | cl_music_online_provider (one provider today: promodj). |
| Slider | Playback | Volume | cl_music_online_volume | cl_music_online_volume (s_volume stays master). Applies immediately. |
| Toggle | Playback | Console messages | cl_music_online_console_status | Show online-player status/debug messages in the console. Off keeps routine playback silent. Applies immediately. |
| Toggle | Playback | Autoplay | cl_music_online_autoplay | cl_music_online_autoplay. Applies immediately. |
| Toggle | Playback | Pause in game | cl_music_online_autopause_game | cl_music_online_autopause_game. Applies immediately. |
| Toggle | Playback | Resume after game | cl_music_online_resume_after_game | cl_music_online_resume_after_game. Applies immediately. |
| Section | Genres & Queue | Genres & Queue | ||
| List | Genres & Queue | Genre mode | cl_music_online_genre_mode | cl_music_online_genre_mode. Applies immediately. [All / Selected / Random] |
| Toggle | Genres & Queue | Random | cl_music_online_random | cl_music_online_random. Applies immediately. |
| Toggle | Genres & Queue | Autoplay results | cl_music_online_autoplay_results | cl_music_online_autoplay_results. Applies immediately. |
| List | Genres & Queue | Queue mode | cl_music_online_queue_mode | cl_music_online_queue_mode. Applies immediately. [Sequential / Roulette] |
| List | Genres & Queue | End mode | cl_music_online_end_mode | cl_music_online_end_mode. Applies immediately. [Stop / Loop playlist / Loop track] |
| List | Genres & Queue | Lucky scope | cl_music_online_lucky_scope | cl_music_online_lucky_scope. Applies immediately. [Selected genre / Random genre / All music] |
| Toggle | Genres & Queue | Lucky continuous | cl_music_online_lucky_continuous | cl_music_online_lucky_continuous. Applies immediately. |
| Field | Genres & Queue | Base URL | cl_music_online_base_url | cl_music_online_base_url. |
| Field | Genres & Queue | Preferred genres | cl_music_online_preferred_genres | Genre slugs separated by ;, for example dark_ambient;trance. Spaces in a name become underscores. |
| Section | Player & Overlay | Player & Overlay | ||
| Navigation | Player & Overlay | Open player... | music_online_open | Open the online music overlay. |
| Navigation | Player & Overlay | I'm feeling lucky | music_online_lucky | Play a random track (lucky). |
| Navigation | Player & Overlay | Probe... | music_online_probe | Diagnostic probe (console output). |
| Navigation | Player & Overlay | Overlay appearance... | q2prox_online_music_overlay | Overlay appearance settings. |
| Navigation | Player & Overlay | Demo player profile... | q2prox_online_music_demo | Demo player music profile. |
| Key | Player & Overlay | Toggle player | music_online_toggle | Bind a key to open/close the online music player overlay. |
| Navigation | Player & Overlay | Sound settings... | g_sound | Open the main sound & acoustics menu. |
| Section | Reset | Reset | ||
| Navigation | Reset | Reset... | set cl_music_online_enable 0; set cl_music_online_provider promodj; set cl_music_online_base_url https://promodj.com/music; set cl_music_online_preferred_genres ""; set cl_music_online_volume 0.70; set cl_music_online_console_status 0; set cl_music_online_autoplay 0; set cl_music_online_autopause_game 1; set cl_music_online_resume_after_game 1; set cl_music_online_genre_mode 0; set cl_music_online_random 0; set cl_music_online_autoplay_results 0; set cl_music_online_queue_mode 0; set cl_music_online_end_mode 0; set cl_music_online_lucky_scope 0; set cl_music_online_lucky_continuous 1 | Reset online music to defaults. |
The player has its own overlay and a separate mode for watching recordings:
Online Music / Overlay
| Type | Section | Row | Variable or target | What it does |
|---|---|---|---|---|
| Slider | Opacity | cl_music_online_overlay_alpha | cl_music_online_overlay_alpha. Applies immediately. | |
| Slider | Scale | cl_music_online_overlay_scale | cl_music_online_overlay_scale. Applies immediately. | |
| Toggle | Compact | cl_music_online_overlay_compact | cl_music_online_overlay_compact. Applies immediately. | |
| Toggle | Show styles | cl_music_online_overlay_show_styles | cl_music_online_overlay_show_styles. Applies immediately. | |
| Slider | Autohide | cl_music_online_overlay_autohide_sec | cl_music_online_overlay_autohide_sec (0=off). Applies immediately. | |
| Navigation | Reset placement... | set cl_music_online_overlay_x -2147483648; set cl_music_online_overlay_y -2147483648; set cl_music_online_overlay_w 0; set cl_music_online_overlay_h 0 | Reset overlay placement (x/y/w/h). | |
| Navigation | Reset appearance... | set cl_music_online_overlay_alpha 0.90; set cl_music_online_overlay_scale 1.20; set cl_music_online_overlay_compact 0; set cl_music_online_overlay_show_styles 1; set cl_music_online_overlay_autohide_sec 0 | Reset overlay appearance. |
Online Music / Demo Profile
| Type | Section | Row | Variable or target | What it does |
|---|---|---|---|---|
| Section | Playback | Playback | ||
| Toggle | Playback | Enable for demos | cl_demoplayer_music_online_enable | cl_demoplayer_music_online_enable. Applies immediately. |
| Field | Playback | Provider (demo) | cl_demoplayer_music_online_provider | cl_demoplayer_music_online_provider. |
| Field | Playback | Base URL (demo) | cl_demoplayer_music_online_base_url | cl_demoplayer_music_online_base_url. |
| Slider | Playback | Demo volume | cl_demoplayer_music_online_volume | cl_demoplayer_music_online_volume. Applies immediately. |
| Toggle | Playback | Demo autoplay | cl_demoplayer_music_online_autoplay | cl_demoplayer_music_online_autoplay. Applies immediately. |
| Toggle | Playback | Pause with demo | cl_demoplayer_music_online_pause_with_demo | cl_demoplayer_music_online_pause_with_demo. Applies immediately. |
| Section | Genres & queue | Genres & queue | ||
| Field | Genres & queue | Preferred genres (demo) | cl_demoplayer_music_online_preferred_genres | cl_demoplayer_music_online_preferred_genres (slugs, ; separated). |
| List | Genres & queue | Demo genre mode | cl_demoplayer_music_online_genre_mode | cl_demoplayer_music_online_genre_mode. Applies immediately. [All / Selected / Random] |
| Toggle | Genres & queue | Demo random | cl_demoplayer_music_online_random | cl_demoplayer_music_online_random. Applies immediately. |
| Toggle | Genres & queue | Demo autoplay results | cl_demoplayer_music_online_autoplay_results | cl_demoplayer_music_online_autoplay_results. Applies immediately. |
| List | Genres & queue | Demo queue | cl_demoplayer_music_online_queue_mode | cl_demoplayer_music_online_queue_mode. Applies immediately. [Sequential / Roulette] |
| List | Genres & queue | Demo end | cl_demoplayer_music_online_end_mode | cl_demoplayer_music_online_end_mode. Applies immediately. [Stop / Loop playlist / Loop track] |
| List | Genres & queue | Demo lucky scope | cl_demoplayer_music_online_lucky_scope | cl_demoplayer_music_online_lucky_scope. Applies immediately. [Selected genre / Random genre / All music] |
| Toggle | Genres & queue | Demo lucky continuous | cl_demoplayer_music_online_lucky_continuous | cl_demoplayer_music_online_lucky_continuous. Applies immediately. |
| Navigation | Genres & queue | Reset... | set cl_demoplayer_music_online_enable 0; set cl_demoplayer_music_online_provider promodj; set cl_demoplayer_music_online_base_url https://promodj.com/music; set cl_demoplayer_music_online_volume 0.70; set cl_demoplayer_music_online_autoplay 0; set cl_demoplayer_music_online_pause_with_demo 0; set cl_demoplayer_music_online_preferred_genres ""; set cl_demoplayer_music_online_genre_mode 0; set cl_demoplayer_music_online_random 0; set cl_demoplayer_music_online_autoplay_results 0; set cl_demoplayer_music_online_queue_mode 0; set cl_demoplayer_music_online_end_mode 0; set cl_demoplayer_music_online_lucky_scope 0; set cl_demoplayer_music_online_lucky_continuous 1 | Reset demo music profile. |
28.3. The music buttons beside the logo
While the intro plays, small round buttons are visible beside the main-menu logo: mute the intro sound, and end it smoothly. A separate button mutes the online music. These buttons never change the stored volumes.
28.4. Music never delays the game
Loading, playing and fading music are never allowed to delay a map load, a server connection or quitting. Beginning a map load ends the intro smoothly, and the fade runs on its own without holding anything up.
An unreachable online track does not leave the player stuck: the exact address that failed to open is shown, and a bounded move to another track is performed.
29. Item timer audio
Live item timers have an audio layer of their own: a general warning cue, a per-second countdown and a separate item-respawn cue. In rich mode, phrases for specific items are used.
Every file of that layer is optional: a missing file is silently skipped and never breaks the game. Details are in the live item timers guide.
30. Conclusion for the release's audio
The Q2PRO-X audio layer has four independent parts, and it is worth not confusing them:
1. Game sound — the engine, spatialization, acoustics, volumes.
2. AVFX audio — weather, events and contacts with their own volumes.
3. Music — the intro, the online player and the classic game music.
4. Voice chat — a separate subsystem described in its own guide.
Each part is configured separately and does not cancel the others.