Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
LethalVoiceRouter
Route game audio and incoming player voice to separate Windows outputs. Select outputs and your transmit microphone in the F8 menu. Optional Clear Voice controls. Windows only.
By JavaXia
| Date uploaded | 3 days ago |
| Version | 0.5.2 |
| Download link | JavaXia-LethalVoiceRouter-0.5.2.zip |
| Downloads | 51 |
| Dependency string | JavaXia-LethalVoiceRouter-0.5.2 |
This mod requires the following mods to function
BepInEx-BepInExPack
BepInEx pack for Mono Unity games. Preconfigured and ready to use.
Preferred version: 5.4.2100README
Lethal Voice Router
Thunderstore team: JavaXia
Source version 0.5.2 · Documentation reviewed 2026-10-25 (Asia/Seoul)
Route Lethal Company game audio and incoming player voice to separate Windows output devices. Use F8 to select both outputs and the microphone used for your outgoing voice. Clear Voice is optional and disabled by default.
Windows 10/11 x64 · Lethal Company Mono build · BepInEx 5
Install
For a published Thunderstore release, install Lethal Voice Router with a mod manager. For a local build, import the entire LethalVoiceRouter-0.5.2-modmanager.zip as a local mod in Gale, r2modman, or Thunderstore Mod Manager. Make sure BepInExPack is installed in the selected profile. LethalConfig is optional. This mod runs on each player's PC; the host does not need it for voice relay.
Quick start
- Launch the game with the mod enabled and press F8.
- In Output, choose separate playback devices for game audio and incoming voice.
- In Microphone Input, choose the microphone for your outgoing voice, or leave Use game setting selected to follow the game's microphone choice.
- To use Clear Voice, enable it in the Clear Voice tab and restart the game. Its default is off.
Separate output requires two playback devices available in Windows. Clear Voice can also be used without separating outputs. Players without this mod can still hear voice sent by someone using Clear Voice; the extended receive filter and receive FEC controls require the recipient to install this mod and enable Clear Voice.
The voice output may not preserve every spatial effect exactly as the game's built-in output. Linux, Proton, and Steam Deck behavior has not been verified.
F8 changes are saved automatically. The output buffer defaults to 40ms and can be set from 20 to 200ms in 10ms steps. If voice breaks up, raise it one step at a time. This value is an output buffer request, not a measurement of total voice latency. Configuration is saved to BepInEx/config/io.lethalloopback.cfg.
The 2026-10-25 startup-output validation, before localization, covered: Release build, 47 basic tests, 16 package checks, 29 Unity checks, and three loopback LAN configurations with all 1,498 received synthetic voice frames decoded. Four output endpoints passed silent playback at 44.1 and 48kHz plus reconnection checks. Two input devices passed preview capture with nonzero meter responses. Thirty additional game-process checks cover active output sessions, per-role policy restoration, normal shutdown, and recovery after a forced process termination. Actual speech, listening quality, and multiplayer between PCs remain unverified. A local ZIP does not imply that a public release has been published.
Startup now reapplies saved per-app output policies even when their values already match. Five fresh-process checks passed without another device selection: original output twice, a saved explicit device twice, and Windows default once. The active session matched after mod initialization. This does not cover engine audio frames before the mod initializes. The final 29 Unity checks include a successful retry after one initial synthetic Esc-input failure; its cause remains undetermined.
Language and device names
English is the default. If LCKR/LCKRL provides a usable font, the existing Korean settings UI remains available automatically. Actual device names are preserved when supported by the selected font; otherwise the F8 window uses numbered device aliases. Device IDs and microphone selections are not translated or reset.
Updating or migrating
Remove the two old DLLs from a manually installed LethalLoopback or LethalVoiceRouter plugin folder before importing the manager ZIP. Preserve BepInEx/config/io.lethalloopback.cfg. Replace the same mod entry when importing an updated manager ZIP. The ZIP is a local mod package, not a shared profile export.
Push-to-talk, voice detection and in-game mute still use the game's settings. Select your microphone in Microphone Input or return to Use game setting. Each sender must enable Clear Voice to improve their outgoing voice.
Troubleshooting
- If F8 does not open, check that both DLLs are in the profile's
BepInEx/plugins/LethalVoiceRouterfolder. - Enable missing playback devices in Windows and choose Refresh devices in F8.
- If voice breaks up, raise Output buffer in 10ms steps from its 40ms default.
- If the microphone meter does not move, check the selected input, Windows microphone permissions and mute state.
- For repeated errors, inspect
Lethal Voice Routermessages in the profile'sBepInEx/LogOutput.log.
Select outputs again after moving a profile to another PC. F8 saves automatically; use Apply in LethalConfig. Maximum voice queue defaults to 100ms and supports 20-500ms in LethalConfig or the configuration file. Disabling fallback preserves recording-track separation by muting affected voice blocks when routing fails.
The historical validation counts above refer to the 0.5.1 startup-output build. Version 0.5.2 includes the English documentation and optional localized UI, validated separately on 0.5.1 before the version bump. The source repository contains the detailed localization validation record.
License
The original mod source uses the MIT License. See LICENSE at the ZIP root for its full text. It grants no rights to Lethal Company or third-party assets.
CHANGELOG
Changelog
The reference version is 0.5.2. Older entries describe behavior at their release dates. See the README and documentation index for current usage and validation.
0.5.2
- Translate maintained documentation, configuration descriptions, diagnostics, scripts and test output into English. Rename the text installation guide to
INSTALL.txtand update package paths and links. - Keep English as the default UI and preserve automatic Korean translation with a usable LCKR/LCKRL font. Store optional translations separately from English UI text.
- Preserve actual device names, endpoint IDs, microphone selections and existing configuration. Use device aliases only when the selected font lacks the required glyphs.
- Regenerate the English banner and settings previews, and validate both distribution archives for English text, links and matching DLLs.
- Update project, plugin and mod manager versions to 0.5.2 and align installation instructions and archive filenames.
0.5.1
- Reuse voice queues across silence, speech and mute transitions within one output session. Synchronize queue resets with in-progress writes and rendering to prevent stale voice playback.
- Reapply saved Windows application output policies at startup. Apply original-output and explicit-device policies even when saved and initial values match; preserve the initial backup and retry failures.
- Use atomic state changes to discard silent input queues without waiting for the output render lock. Normal mute transitions remain synchronized with output submission.
- Calculate player-to-playback-source associations once per frame instead of searching all players for each source.
- Pan mono callback voice toward its speaker. Preserve stereo callbacks because Unity may already have applied spatial processing.
- On 2026-10-25, the startup-fix source passed 47 basic tests, 16 package checks, 29 Unity synthetic checks and three loopback LAN configurations with all 1,498 synthetic voice frames decoded.
- Verified 44.1/48kHz silent playback and reconnection on four output endpoints, plus preview samples and nonzero levels on two inputs. Actual listening quality and internet multiplayer require separate checks.
- Passed 30 output policy, shutdown and recovery conditions across ten game processes. Restarts with original output, saved explicit devices and Windows default aligned active sessions after initialization without another selection.
- Updated the README, installation guide, configuration example and distribution materials to match features and validation scope.
0.5.0
- Added an MIT license for the original mod source and included it in distribution ZIPs.
- Added transmit microphone selection and an input-level meter to the F8 Microphone Input tab. Preview uses temporary capture before voice connection; the default follows the game's microphone setting.
- Disable separate voice device selection when separation is off and play voice through the selected game output.
- Show the current Windows default device in output lists and clarify status/refresh controls. Removed unused device ID copying.
- Refined F8 accents, panel borders, toggle states and Clear Voice details. Updated both documented settings captures to the same current Unity UI, resolution and language.
- Preserve game mute and hearing restrictions in separated voice. Improved Clear Voice lifetime management and F8 Esc input isolation.
- Use concise English BepInEx status messages and reduce repeated logging.
- Updated the README, installation instructions, mod manager materials and settings images for the current workflow.
0.4.0
- Fixed Esc closing F8 settings while also opening the game's pause menu. Restore original input action states when closing settings.
- Fixed Windows PowerShell 5.1 encoding of Korean filenames and manager manifest descriptions.
- Generate a separate
-modmanager.zipfor Gale, r2modman and Thunderstore Mod Manager local imports, including name, version, BepInExPack dependency and icon without existing profile settings. - Removed a fixed Gale profile path from the build; accept the build API DLL through
-LethalConfigPath. - Automatically validate archive paths, contents, metadata, icon, DLL versions and matching DLLs across both distributions.
- Shortened the README around features and installation and separated development instructions. Updated the manager description, icon and banner to reflect actual mod behavior.
- Added optional mono Clear Voice, disabled by default. Activation changes require restarting the game.
- Bypass noise suppression, RNNoise, AGC and AEC/AECM on transmit samples; run voice detection on a separate copy.
- Allow Opus targets from 6 to 300kbps, defaulting to the game's mono maximum of 300kbps, and display observed encoder values.
- Added send/receive FEC, enabled by default and adjustable live with bitrate while active. PLC remains enabled when FEC is off.
- Extend the unoccluded normal receive filter from 10 to 20kHz while preserving radio, occlusion, underwater, distance and direction settings.
- Preserve mono, 48kHz, 20ms frames and the existing protocol; enforce 900-byte payload and 1,024-byte relay packet limits.
- Added Output and Clear Voice tabs in F8 and updated LethalConfig, configuration examples and instructions. Restore original voice if patching fails.
- Passed 34 basic tests, 22 synthetic checks in an isolated Unity copy and three two-process LAN configurations. All 1,514 received synthetic frames decoded; actual microphone and listening checks remain separate.
- Documented standalone Clear Voice, setting application timing, host/client differences and troubleshooting, distinguishing current checks from earlier device records.
0.3.0
- Added side-by-side game and voice output lists in F8 with independent saved selections.
- Route game audio through Windows per-application policies, preserving music, effects and the game's mixing, volume and spatial processing without changing system defaults.
- Default game output to the original application output. Restore previous policies on original-output selection or normal shutdown, and attempt crash recovery at the next launch.
- Restore previous settings on device errors or partial role failures. Discover devices and change application outputs in the background.
- Added game output selection in LethalConfig and separate game/voice device ID copying in F8.
- Preserve existing voice configuration keys and defaults. Output buffer and voice volume affect separated voice only.
- Passed 29 basic tests including output selection/restoration, rollback and recovery record preservation. Actual game output switching and listening still required an environment with active devices.
0.2.2
- Removed Windows default communications output from device selection. Default to Windows default output and preserve old communications selections by resolving their endpoint IDs.
- Fall back to Windows default output if the old communications endpoint is unavailable; retain disconnected explicit IDs for reconnection.
- Added 10ms slider ticks and reference labels at 20, 50, 100, 150 and 200 in F8.
- Added a matching 20-200ms slider with 10ms steps in LethalConfig.
- Normalize saved output buffers to the nearest 10ms and apply changes without restarting.
- Added a banner, environment badges, settings previews, FAQ and collapsible development guidance to the README; organized text installation instructions with numbered sections.
- Added
Output.DeviceNameto the example and corrected descriptions of output buffers, maximum queues, reconnection and spatial-effect validation to match code. - Added a document index and validation reference; include documents and presentation images in distribution ZIPs.
- Reworked the ZIP README and contents for installers, fixed ZIP-relative links and expanded update, removal, reset and troubleshooting guidance.
0.2.1
- Added short Korean installation instructions to the distribution ZIP.
- Renamed the mod to Lethal Voice Router, including the F8 title and LethalConfig display name.
- Aligned DLL, project, installation-folder and ZIP names with LethalVoiceRouter.
- Preserved the plugin GUID and
io.lethalloopback.cfgfilename so existing configuration continues to work.
0.2.0
- Replaced F8 with Unity UI/TextMeshPro matching the game.
- Use the game's 3270 font, checkbox and border sprites, white sliders and orange selection accents.
- Reference
font3270_Regular_SDFfrom installed LCKR/LCKRL without copying or distributing font files. - Use the game's default font and English UI without LCKR/LCKRL.
- Arrange devices and controls in two areas and adapt the window to the screen aspect ratio.
- Use a separate input system so F8 interactions do not click game menus behind it.
0.1.1
- Moved settings and input handling to an independent runtime object outside the BepInEx loader, starting after scene load.
- Read F8 immediately after Input System updates and prevent repeat toggling while the key is held.
- Added device-name dropdowns, volume, buffer, shortcut and an open-settings button to LethalConfig 1.4.6.
- Apply LethalConfig changes without restarting the game.
- Distinguish devices with duplicate names and preserve disconnected endpoint IDs.
0.1.0
- Route other players' voices to a separate Windows output device.
- Configure output devices, volume, buffer length and failure behavior in F8.
- Track default output and communications devices and reconnect after errors.
- Discard stale buffers on departure, playback-source reuse or output-device changes.
- Use installed playback devices without external executables or virtual audio drivers.