Q2PRO-X 1.6 Beta 5 by ly — Q2PRO-X 1.6 Beta 5 Voice Chat 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 Voice Chat Guide
Project author: ly
Microphone, channels, volumes and server compatibility
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.
The menu is enabled, but voice does not work
Q2PRO-X voice chat
Q2PRO-X includes built-in voice chat. It is a separate voice side-channel inside the client: it does not change the Quake II game protocol and does not replace the ordinary text chat.
1. What voice chat does
Voice chat lets players join a voice room and talk through the microphone from
inside the client.
Main user model:
Default hosted control server:
https://voice-api.q2pro-x.com
2. Where to find the menu
Menu path: Main menu → Quick Setup → Q2PRO-X / Voice Chat
The page in full:
Q2PRO-X / Voice Chat
| Type | Section | Row | Variable or target | What it does |
|---|---|---|---|---|
| Section | Room | Room | ||
| Toggle | Room | Voice chat enabled | vc_enable | Master switch for voice chat (OpenAL required to transmit and receive). Applies immediately. |
| Toggle | Room | Autojoin on connect | vc_autojoin | Auto-join the voice room when you connect to a game server. Applies immediately. |
| List | Room | Room mode | vc_room_mode | Room choice: one room per game server, or a manual named room. Applies immediately. [server / manual] |
| Field | Room | Manual room name | vc_room_name | Room name used when Room mode is Manual. |
| Field | Room | Control server | vc_server | URL of the voice control server. |
| Section | Microphone & audio | Microphone & audio | ||
| Toggle | Microphone & audio | Microphone enabled | vc_mic_enable | Allow microphone capture (requires the OpenAL sound engine). Applies immediately. |
| Navigation | Microphone & audio | Mic device... | q2prox_voice_mic_pick | Pick the capture device; (default) follows the Windows default mic. |
| List | Microphone & audio | Transmit mode | vc_ptt_mode | Transmit mode: voice activation (VAD) or push-to-talk. Applies immediately. [voice activation / push-to-talk] |
| Slider | Microphone & audio | VAD threshold | vc_vad_threshold | Voice-activation trigger level; lower = more sensitive. Applies immediately. |
| Slider | Microphone & audio | Mic gain | vc_input_gain | Microphone gain; 1.0 = unchanged, up to 10x. Applies immediately. |
| Slider | Microphone & audio | Receive volume | vc_receive_volume | Incoming voice volume, separate from s_volume; up to 10x (needs OpenAL). Applies immediately. |
| Toggle | Microphone & audio | Deafen | vc_deafen | Mute all incoming voice; you can still transmit. Applies immediately. |
| Section | Join & keys | Join & keys | ||
| Field | Join & keys | Display name | vc_display_name | Your name in the voice room; empty = use your player name. |
| Navigation | Join & keys | Join room | voice_join | Join the voice room for the current server (or the manual room). |
| Navigation | Join & keys | Leave room | voice_leave | Leave the current voice room. |
| Key | Join & keys | PTT key | +voiceptt | Bind: push-to-talk — hold to transmit voice. |
| Key | Join & keys | Mic toggle key | voice_mic_toggle | Bind: toggle the microphone on or off. |
| Section | Service | Service | ||
| Navigation | Service | Restore voice defaults | voice_defaults | Reset only voice settings to the hosted baseline (vc_relay untouched). |
3. Requirements
The current voice chat phase requires OpenAL for both transmit and receive.
Check:
If the game uses the software DMA sound path, voice chat may be unavailable
even when vc_enable is on.
4. Main cvars
default;
Most vc_* cvars are saved in the global Q2PRO-X cfg.
5. Commands
Calling voice_mic_pick without an argument acts like voice_mic_list.
6. Room mode
Server mode
vc_room_mode server is the recommended mode. The room is derived from the
current game server, so players on the same server enter the same voice room
without typing a room name.
For normal play:
Manual mode
vc_room_mode manual uses vc_room_name.
This is useful when:
7. Push-to-talk and VAD
vc_ptt_mode 1 is push-to-talk. It is the recommended play mode:
vc_ptt_mode 0 is VAD, voice activity detection:
Practical start:
8. Gain and volume
vc_input_gain boosts the microphone before transmit. 1.0 is unity. Values
above 3-4 may clip loud speech, but can help quiet microphones.
vc_receive_volume controls incoming voice independently from game volume.
1.0 is unity, up to 10.0 is strong boost.
If others hear distortion:
1. reduce vc_input_gain;
1. check Windows input level;
1. use PTT so constant room noise is not transmitted.
9. Microphone
The Mic device... menu lists capture devices visible to OpenAL.
Command:
voice_mic_list
prints:
vc_mic_device "(default)" means "follow the system default".
If a device was renamed or disappeared, select it again from the menu.
10. Hosted control server
Default vc_server:
https://voice-api.q2pro-x.com
The client asks the control-plane for room preparation. After joining, voice
traffic goes through the voice infrastructure, not through the Quake II game
server.
Local dev setups can point vc_server to a local service. Normal users should
keep the default.
11. Autojoin
To join automatically:
1. vc_enable 1;
1. vc_autojoin 1;
1. vc_room_mode server;
1. connect to a game server.
If you left manually with voice_leave, use voice_join to enter again.
12. Troubleshooting
The menu is enabled, but voice does not work
Check:
Others cannot hear me
Check:
I cannot hear others
Check:
Voice distracts from the game
Use:
13. Good baseline
For most players:
Then tune only the microphone, the talk key and the incoming voice volume.
14. The complete setting list
| Variable | Accepted values | Description |
|---|---|---|
| vc_enable | 0=disabled (default) / 1=enabled | Master switch for the Q2PRO-X voice chat subsystem. 0 (default) = feature is completely off — no capture, no connection, no cvar side-effects. Set to 1 to activate the voice system. Both voice transmit and receive require the OpenAL sound backend. |
| vc_autojoin | 0=manual join only (default) / 1=autojoin on server connect | Automatically join the voice room when entering a game server. Requires vc_enable 1 and vc_room_mode "server". Triggers on CL_Connected. Leaves room automatically on disconnect. |
| vc_server | URL string (default "https://voice-api.q2pro-x.com") | URL of the Q2PRO-X voice control-plane service. This endpoint is called via HTTP POST /voice/prepare to obtain a LiveKit room token. Default: official Q2PRO-X hosted control-plane. Can be overridden for self-hosted deployments. |
| vc_relay | URL string (default empty = use control-plane response) | Override relay (LiveKit media server) URL. If non-empty, the client uses this URL instead of the relay_url returned by the control-plane /voice/prepare response. Useful for local testing or self-hosted LiveKit. |
| vc_room_mode | "server"=room per game server (default) / "manual"=room from vc_room_name | Determines how the voice room name is computed. "server" (default): room is tied to the current game server (host:port hash). Requires an active game server connection. "manual": room name is taken from vc_room_name — allows joining any named room regardless of game server. |
| vc_room_name | string (default empty) | Voice room name when vc_room_mode is set to "manual". Has no effect in "server" mode. Must be non-empty when using manual mode. |
| vc_mic_enable | 0=mic off (default) / 1=mic enabled | Allow microphone capture. 0 (default) = no audio captured or transmitted even if connected. 1 = capture is opened when joining a room. Requires OpenAL sound backend (s_enable openal) and a working capture device. Status string shows why mic is unavailable if conditions are not met — no silent degradation. |
| vc_mic_device | string, "(default)" or exact device name | Capture (microphone) device to use. Value "(default)" (default) follows the current Windows default microphone selection. Set to an exact device name from /voice_mic_list to pin to a specific physical microphone. Saved globally, applied on next vc_mic_enable 1 / voice_join. |
| vc_ptt_mode | 0=VAD (voice activity) / 1=push-to-talk (default) | Transmit gating mode. 1 (default) = push-to-talk: audio is sent only while the +voiceptt bind is held. 0 = voice activity detection (VAD): audio is sent automatically when RMS level exceeds vc_vad_threshold. PTT is recommended to avoid background noise leakage. |
| vc_vad_threshold | 0.0..1.0 float (default 0.02) | Voice activity detection threshold. Active only when vc_ptt_mode 0. If the RMS amplitude of a captured frame is below this value, the frame is not transmitted. Lower = more sensitive (picks up quiet sounds); higher = less sensitive (requires louder speech). |
| vc_input_gain | 0.0..10.0 float (default 1.0) | Microphone input gain multiplier applied before transmission. 1.0 = unity gain (default), up to 10.0 = 10x boost. Values above 1.0 amplify the captured signal; values below 1.0 attenuate it. Output is clipped to [-1.0, 1.0] after gain; above 3-4x expect audible saturation on loud sounds. |
| vc_receive_volume | 0.0..10.0 float (default 1.0) | Volume multiplier for incoming voice from other participants. Independent of s_volume and s_voice_volume. 0.0 = silent, 1.0 = unity (default), 10.0 = 10x amplified. Applied per-participant at playback. Participant playback also requires the OpenAL backend. Use vc_deafen to mute all participants simultaneously. |
| vc_deafen | 0=normal (default) / 1=deafen all incoming | Mute all incoming voice participants. When 1, audio frames from all room participants are discarded at playback — useful for focus or streaming. Microphone capture and transmission continue normally while deafened, so other participants can still hear you. |
| vc_display_name | string (default empty = use player name) | Display name shown to other voice room participants. If empty (default), the game player name (cvar "name") is used. Useful to set a different visible identity in the voice room without changing the in-game name. |
15. Leaving the room cleanly
The client leaves the voice room correctly on an ordinary quit, on closing the window and on a forced shutdown by key combination, including the case of a fast client restart. That matters to everybody else: a "stuck" voice participant does not stay in the room after the player has gone.
16. Runtime files
The voice subsystem uses two libraries that ship with the release:
| File | Why it is needed |
|---|---|
| soft_oal.dll | The OpenAL sound engine, required for both transmit and receive |
| livekit_ffi.dll | The voice transport |
Both files live in the root of the release package. If either is missing, that is incomplete packaging rather than a missing capability: voice chat will not work in such a build.