New UI and Noise Gate - #44
Merged
Merged
Conversation
added 18 commits
September 14, 2026 15:00
Add NoiseGateSampleProvider to mute the mic branch between phrases, gated after switching and both mic volumes so the threshold reflects the level actually sent. Add a primary-only volume ramp to SwitchingSampleProvider for the normal mic, and raise the processed voice volume ceiling from unity to a 2x boost to match.
Add NormalMicVolume, NoiseGateEnabled and NoiseGateThresholdDb to AppSettings, and clamp them (and the now-2x ProcessedVoiceVolume ceiling) on load like the other saved levels.
Add a Volume slider under the normal mic, move the processed-voice Volume slider next to it under the modified-voice picker (same 0-200% scale), and add a Noise gate checkbox with threshold slider and live level bar under push-to-talk.
Update README, RELEASE_NOTES, the local voice profiles doc and the FiveM guide (voice detection lingering after you stop talking) for the new noise gate and normal/processed mic volume controls.
Add AppSettings.Clone, CopyConfigurationFrom and ConfigurationEquals so the settings window can apply changes live while only its Save button writes them. CopyConfigurationFrom is the one list of fields that belong to the settings window; music card, music folders and window size stay saved as they change. Add SetupGuideDismissed for the first-run setup guide.
Move endpoint enumeration, the device heuristics and default selection into AudioDevices so the main window and the setup guide agree on what a virtual cable is. Recognize Virtual Audio Cable and Voicemeeter in addition to VB-CABLE, pair a cable's playback end with its recording end, and stop guessing a cable's recording end as a microphone.
A seven-step window that explains what MicMixer does and how a virtual cable works, detects an installed cable (showing VB-CABLE install steps only when none is found), and collects the microphone, modified voice, cable, monitoring device, hotkey and push-to-talk. Nothing is written until Finish; closing without Skip keeps the guide coming back, e.g. after restarting Windows for the cable driver.
The main window now holds a status strip (state pill, hotkey and route summary, Enable/Stop), problem cards that appear only when something differs from the saved setup, and the full-width music card. The two-column layout and its narrow mode are gone. All setup controls move to a non-modal settings window with the pages Devices, Hotkey, Noise gate, Overlay, Secondary output, Music folders and General, with Save and Discard. Starting routing no longer writes the devices it used into the settings, so a stand-in for a missing device is reported instead of replacing the saved choice. The setup guide opens on the first start and from Settings > General. "Virtual cable output" is renamed "Send the mix to", with a diagram of which cable end MicMixer and the game use.
Update README, INSTALLATION, release notes, the site and the guides to the new settings locations and the Send the mix to name, and replace the main window screenshot and add one of the settings window.
When the client closes, HttpListener's CloseOutputAsync tears the connection down as part of its own close reply, so the test client occasionally gets a connection reset instead of the reply and CloseAsync throws. The test is about the client count, so accept that and keep asserting that the count drops to zero.
The zero-allocation tests warmed up with a single call, so the 30-call tiering threshold was crossed inside the measured loop, which now and then showed up as a few KB allocated on the test thread under load. Warm up with 100 calls first.
When the saved voice changer device was missing and no other input existed, the last fallback picked the cable's recording end, which would feed the mix back into itself. Device guessing now returns no device instead, so Enable stops with a message.
Add an Off / Voice changer app / MicMixer voices switch and a voice picker under the status card. The choice is built into the route, so a running route restarts with it; the voice changer choice and its voice are now saved as they change instead of waiting for Save. Rename "Local voice profile" to "MicMixer voices" and "Modified voice" to "Voice changer", and explain in the settings window why devices are locked while routing runs, with a Stop routing button.
Update README, INSTALLATION, release notes, guides and the local voice profiles doc to the new names, the main window switch and the locked settings banner, and refresh the main window screenshot.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.