Giter Site home page Giter Site logo

ixab3r / micswitch Goto Github PK

View Code? Open in Web Editor NEW
309.0 13.0 26.0 8.45 MB

MicSwitch is a tool which allows you to mute/unmute your microphone using a predefined hotkey

C# 99.33% Batchfile 0.67%
microphone hotkey switch overlay global ventrilo zoom meet hangouts

micswitch's Introduction

Discord Chat

Intro

There are dozens of different audio chat apps like Discord, TeamSpeak, Ventrilo, Skype, in-game audio chats, etc. And all of them have DIFFERENT ways of handling push-to-talk and always-on microphone functionality. I bet many of you know how distracting it could be when someone forgets to turn off a microphone. I will try to explain what I mean using a feature matrix.

App Microphone status overlay Keyboard support Mouse buttons support Audio notification
MicSwitch Supported Supported Supported Supported
Discord In-game only Supported Supported Not supported
TeamSpeak Supported Supported Supported Supported
Ventrilo Not supported Supported Has a bug dating 2012 Supported
Skype Not supported Hard-coded Ctrl+M Not supported Not supported

MicSwitch allows you to mute/unmute your system microphone using a predefined system-wide hotkey which will affect any program that uses microphone (no more heavy breathing during Skype conferences, hooray!) Also it supports configurable mute/unmute sounds(similar to TeamSpeak/Ventrilo) and a configurable overlay with scaling/transparency support. All these features allow you to seamlessly switch between chat apps and use THE SAME input system with overlay and notifications support.

Features / Bugfixes priority (click to vote or post feature/bug request)

Requests

Installation

  • You can download the latest version of installer here - download.
  • After initial installation application will periodically check Github for updates

Features

  • Multiple microphones support (useful for streamers) - ALL microphones in your system could be muted/unmuted by a single key press
  • System-wide hotkeys (supports mouse XButtons)
  • Always-on-top configurable (scale, transparency) Overlay - could be disable if not needed
  • Mute/unmute audio notification (with custom audio files support)
  • Customizable tray and overlay icons
  • Multiple hotkeys support
  • Auto-startup (could be Minimized by default)
  • Three Audio modes: Push-to-talk, Push-to-mute and Toggle mute
  • Overlay visibility could be linked to microphone state, i.e. it will be shown only when Muted/Unmuted
  • Auto-updates via Github

Media

UI

Overlay with configurable size/opacity

Overlay with configurable size/opacity

Configurable Audio notification when microphone is muted/unmuted

Configurable Audio notification when microphone is muted/unmuted

Customizable overlay/tray icons

Customizable overlay/tray icons

Auto-update via Github

Auto-update via Github

How to build application

  • I am extensively using git-submodules so you may have to run extra commands (git submodule update) if your git-client does not fully support this tech. I would highly recommend to use Git Extensions which is awesome, free and open-source and makes submodules integration seamless
  • The main "catch-up-moment" is that you need to run InitSymlinks.cmd before building an application - this is due to the fact that git symlinks are not supported on some older versions of Windows and I am using them to create links to submodules
  • I am usually using Jetbrains Rider so there MAY be some issues if you are using Microsoft Visual Studio, although I am trying to keep things compatible

Build from command line

  1. git clone https://github.com/iXab3r/MicSwitch.git
  2. cd MicSwitch
  3. remove submodule DeploymentTools - MicSwitch's installer built and oublished as a part of another project and it's not included into this repository
  4. git submodule init
  5. git submodule update --checkout
  6. InitSymlinks.cmd
  7. dotnet build Sources/MicSwitch

That's it. Portable version will be in bin folder. Framework-dependent version

Linux/MacOS Support ?

Probably not going to happen in the nearest future because in it's core MicSwitch is a WPF application, technology that Microsoft does not want to port at all. Migrating to something cross-platform like Avalon, Xamarin is an option, but not a cheap one, unfortunately I don't have so much spare time to do it now.

Meanwhile you could take a look at

MacOS

MuteKey (thanks to benpeter for finding it): https://apps.apple.com/us/app/mutekey/id1509590766?mt=12

Linux

???

Contacts

micswitch's People

Contributors

ixab3r avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

micswitch's Issues

The hint is in the wrong place

When you hover over the program icon in the tray, a hint with the program name and version number appears in the upper left corner.
EgCsbiv7J0

Initial state: Mute should only Mute the microphone selected above

Hi, just a thought.

I think the "initial state" option is quite handy, when you forget to mute your microphone when turning off your computer,
so that your microphone is on muted state when booting the PC up, rather then being active all the time.

My issue now is, I use another 2,5mm jack to record audio from another resource. It's basically detected by Windows as a "microphone". Having the "Initial state" option set to "Mute" will mute all Microphones globally on Windows. Which would result in my "audio-in" being muted as well.

I would much rather have that application to mute the selected device under "Microphone" (Top option) instead of muting all microphones available on start.

I hope I described it clearly.
English is not my mother language and, to be honest, I just signed up here on GitHub just to mention it.

It's quite hard to get a software that is doing the work well and is still being maintained,
and your software does doing shit well except for that one little thing that bothers me. :)

Best wishes and keep going with your awesome work!

initialstatemutesallmics

SecureAge APEX - Malicious report "Win/malicious_confidence_60% (W)"

Hey there.

Just want to mention that virustotal is resulting in a malicious report. I dont want to say that your binary is malicious but I think the people are a bit paranoid when using a software with mic-control :D

MicSwitchSetup.0.114.0.exe - Win/malicious_confidence_60% (W)
https://www.virustotal.com/gui/file/b55da2d945cb73eb26e9790ddf683667cb156adaf16ee0fc2e117931840be011/detection

MicSwitch-0.114.0-full.nupkg - Gen:NN.ZexaE.34090.su0@a0jfGVd
https://www.virustotal.com/gui/file/11c7a0685c16aa5f563d27288e562c2c60d59e3b5ea1955b4c9bf50df0f3bec2/detection

Micswitch v1.0.181.0 crashing (?) at start up

Before the update (v1.0.179.0 I think) micswitch started up properly at startup in Win 10 version 1909.
Since the update to v1.0.181.0 , at start up I see a space appear in the taskbar where the microphone symbol normally appears. After a short time the space disappears. It turns out that micswitch is not running.
I then launch the application manually and then it works.

I wonder if something has changed between the two builds that has resulted in this change in behavior.

Locking overlay on 2nd display resets position.

My setup is two displays. Display 1 (secondary) is 3840x2160 and display 2 (main) is 1920x1080. I'm trying to position the overlay on display 1 but hitting the lock button resets it's position to the center of display 1. It works great for display 2.

Installation creates a no-icon shortcut

After installation a shortcut with no icon is created:
image
It seems the "Start in" field contains "atures included within MicSwitch will allow seamless switching between chat apps while utilizing the "
image

Edit: After clicking the "Change icon" button, the following error appears:
image

[enhancement] Have a microphone level on the overlay

It would be very useful to have an option to switch the overlay from a static microphone icon to dynamic microphone level monitoring.
Similar to this, but more responsive, still a transparent click-through overlay:
image

Audio alert while muted

Suggestion: Play a sound every X seconds that tells the user they are muted (when muted of course). Some headsets have this built in, would be nice to have as an optional setting.

Overlay enhancement

Hello, I started to use your app and it is wonderful.
I suggest one enhancement. It would be cool if I can move the overlay closer to top of screen in order to have the icon over applications title bar.
I plan to use red and green boxes 400x20 pixels for icons.
Thanks
PJ

Unexpected error (BadDeviceId calling)

Received an unexpected error.

The error mentions the path "C:\BuildAgent\work", but it doesn't exist on my computer.

Today I upgraded to version 1.0.188.0, I didn’t get this error before.

2021-06-21 19:10:38,491 [12] ERROR Unhandled application exception() [PoeShared.SharedLog]
NAudio.MmException: BadDeviceId calling waveOutGetDevCaps
   at NAudio.Wave.WaveOut.GetCapabilities(Int32 devNumber)
   at PoeShared.Audio.Services.AudioPlayer.<>c__DisplayClass3_0.<GetDevices>b__0(Int32 x) in C:\BuildAgent\work\61454f6050c7a045\Sources\PoeShared.Native\Audio\Services\AudioPlayer.cs:line 41
   at System.Linq.Enumerable.SelectRangeIterator`1.MoveNext()
   at System.Linq.Enumerable.ConcatIterator`1.MoveNext()
   at PoeShared.Scaffolding.EnumerableExtensions.ToDictionary[T,TKey,TValue](IEnumerable`1 enumerable, Func`2 keyExtractor, Func`2 valueExtractor, Func`2 conflictSolver) in C:\BuildAgent\work\61454f6050c7a045\Sources\PoeShared\Scaffolding\EnumerableExtensions.cs:line 84
   at PoeShared.Audio.ViewModels.WaveOutDeviceSelectorViewModel.HandleDevicesUpdate()
   at PoeShared.Scaffolding.ObservableExtensions.<>c__DisplayClass5_0`1.<SubscribeSafe>b__0(T x) in C:\BuildAgent\work\61454f6050c7a045\Sources\PoeShared\Scaffolding\ObservableExtensions.cs:line 58

MicSwitch_iiTKVNmk5J

Problem with german MUI

On a German Windows 10 multi language UI the hotkeys are recognized as - in my example - STRG+F12:
grafik

This prevents a start of the application, the error log contains (line 3):

2021-02-19 23:40:42,490 [HotkeyTracker] DEBUG Hotkey tracking disabled (hotkey gesture  => ) [PoeShared.UI.Hotkeys.HotkeyTracker]
2021-02-19 23:40:42,510 [HotkeyTracker] ERROR Unhandled application exception(CurrentDomainUnhandledException) [PoeShared.SharedLog]
System.NotSupportedException: Unbekanntes ModifierKeys-Element "STRG".
   bei System.Windows.Input.ModifierKeysConverter.GetModifierKeys(String modifiersToken, CultureInfo culture)
   bei System.Windows.Input.ModifierKeysConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object source)
   bei PoeShared.UI.Hotkeys.HotkeyConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object sourceRaw)
   bei PoeShared.UI.Hotkeys.HotkeyConverter.ConvertFromString(String source)
   bei MicSwitch.Services.ComplexHotkeyTracker.<>c__DisplayClass12_0.<Initialize>b__0()
   bei System.Reactive.ObserverBase`1.OnNext(T value)
   bei System.Reactive.Subjects.FastImmediateObserver`1.EnsureActive(Int32 count)
   bei System.Reactive.Subjects.ReplaySubject`1.ReplayBase.Subscribe(IObserver`1 observer)
   bei System.ObservableExtensions.SubscribeSafe[T](IObservable`1 source, IObserver`1 observer)
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Reactive.Stubs.<>c.<.cctor>b__2_1(Exception ex)
   bei System.Reactive.ObserverBase`1.OnError(Exception error)
   bei System.ObservableExtensions.SubscribeSafe[T](IObservable`1 source, IObserver`1 observer)
   bei MicSwitch.Services.ComplexHotkeyTracker.Initialize()
   bei System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   bei System.Threading.ThreadHelper.ThreadStart(Object obj)

If I change the hotkey modifier to CTRL (like CTRL+F12), it starts and works:
From:

          "MicrophoneHotkey": "STRG+F12",

To:

          "MicrophoneHotkey": "CTRL+F12",

Please enable support for localized Windows MUI.

Mics muted on app start

All my microphones are at 0% volume when the app runs from startup. Then I am unable to change the volume slider without restarting the app manually.

Choose custom mute/unmute sounds

The possibility to choose your own .mp3 or .wav files to hear when muted or unmuted.
I would use the default teamspreak or mumble sound effects instead of the built-in sounds.

I would add it myself, but currently I don't see where the current sound list is loaded in.

Keyboard shortcuts only trigger once

When using keyboard shortcuts, MicSwitch only once acts, only after closing the application and restarting, can I use the keyboard shortcut again.

Running Windows 10.
Current configuration:
image

app become unresponsive after running for a while

hi. thank you so much making this app. i like it alot.

the issue i have with the app is that the app become unresponsive after a period of time (maybe 1-2 hrs).
the app windows can't even open when double clicking the app icon in the taskbar. I have to close the process from taskmgr to restart it. this issue has happened for multiple times yesterday.

interestingly, the app still respond to the hotkey to toggle the mic mute/unmute.

another suggestions:
would it be possible to show the live input level in the floating icon? say in green color?

MainWindow locks in hidden mode after using "X" button

When I use "X" to send MainWindow to tray, function "Show main windows" ceases to work. Both from context menu and double-click on icon - after clicking nothing happens.
App version: V0.126.0.0
Env: Windows 18363.1082, tried both on user and administrator account

FR: Mute All

I love your utility, quick feature request, a MUTE ALL in the microphone list, handy for when using multiple microphones. Guessing you would need to actively check what is plugged in/out though.

5 modes needed.

Whats really needed is a mutually exclusive selection of 5 different operating modes.

  1. On (Talk)
  2. Off (Mute)
  3. Push to Talk
  4. Push to Mute
  5. Push On - Push Off (Toggle)

.

Bug when alternating between two hotkeys

Firstly, this software is awesome.
The problem is when I use alternately the two hotkeys that I have stored to toggle mute.
You will see the bug by doing this procedure:

Start unmuted:
Hotkey 1 to mute: works
Hotkey 2 to unmute: does not work
Hotkey 1 to unmute: does not work
Hotkey 2 to unmute: works

This does not strike me as intuitive behavior

How does the "push-to-talk" mode work with the keyboard?

Hello.

Thanks for developing this app. It's what I've always been looking for ;-)

I am writing to let you know that I think the mode "push-to-talk" is not working well: I have set the F11 key as a hotkey. When I press the key the mute is activated, and when I release it the mute is deactivated. Shouldn't it be the opposite?

F11 press:
F11-press

F11 realease:
F11-release

Thank you very much!

after each update microphone settings are reset

after an autoupdate the selected microphone goes from whatever i selected to all microphones.

update.
it also resets to all microphones on a system reset. so i'm thinking its not storing my selection anywhere.

Insecure! Logging of all keystrokes to a log file

This is absolutely unacceptable. The program saves all keystrokes to a log file. This completely undermines the safety of users.
It is necessary to disable logging of keystrokes to the file.

Example of a log file:

2021-04-19 21:33:15,396 [HotkeyTracker] DEBUG Hotkey pressed: T, key: T, mouse: , wheel: None, modifiers: None [PoeShared.UI.Hotkeys.HotkeyTracker]
2021-04-19 21:33:16,036 [HotkeyTracker] DEBUG Hotkey pressed: E, key: E, mouse: , wheel: None, modifiers: None [PoeShared.UI.Hotkeys.HotkeyTracker]
2021-04-19 21:33:16,516 [HotkeyTracker] DEBUG Hotkey pressed: S, key: S, mouse: , wheel: None, modifiers: None [PoeShared.UI.Hotkeys.HotkeyTracker]
2021-04-19 21:33:17,140 [HotkeyTracker] DEBUG Hotkey pressed: T, key: T, mouse: , wheel: None, modifiers: None [PoeShared.UI.Hotkeys.HotkeyTracker]

Version 1.0.163 not starting - invalid keybind?

Hello,
after updating to the latest version, I got a quick error message. Unfortunately, I wasn't able to read it, but
I noticed it contained my mute key - Scroll Lock. The app crashed and I cannot start it again, so I suspect the keybind is causing problems. If I try to start the old version from "C:\Users***\AppData\Local\MicSwitch\app-1.0.140" , it starts, but doesn't preserve settings (if I set keybind and settings and restart the app, they disappear), so I effectively cannot use the application.

Another separate issue (might be fixed in the newest version, can't test, because of the above): Audio notification for mute doesn't play the first time I mute my microphone, but microphone is muted and tray icon changes.

Build failed

Build not working.

git submodule update --checkout
Cloning into 'D:/Projekte/VisualStudio/MicSwitch/MicSwitch/Submodules/DeploymentTools'...
remote: Repository not found.
fatal: repository 'https://github.com/iXab3r/DeploymentTools.git/' not found
fatal: clone of 'https://github.com/iXab3r/DeploymentTools.git' into submodule path 'D:/Projekte/VisualStudio/MicSwitch/MicSwitch/Submodules/DeploymentTools' failed
Failed to clone 'Submodules/DeploymentTools'. Retry scheduled
Cloning into 'D:/Projekte/VisualStudio/MicSwitch/MicSwitch/Submodules/PoeEye'...
Cloning into 'D:/Projekte/VisualStudio/MicSwitch/MicSwitch/Submodules/DeploymentTools'...
remote: Repository not found.
fatal: repository 'https://github.com/iXab3r/DeploymentTools.git/' not found
fatal: clone of 'https://github.com/iXab3r/DeploymentTools.git' into submodule path 'D:/Projekte/VisualStudio/MicSwitch/MicSwitch/Submodules/DeploymentTools' failed
Failed to clone 'Submodules/DeploymentTools' a second time, aborting
...

FR: Dark Theme

I have a dark windows theme and usually play games and stuff so the dark black mic button and white UI is a little annoying it would be nice to have a black/dark theme that inverts it and or makes the mic icon grey instead of black, I was thinking of just editing it for myself but I dunno if you think it's a good feature or not.

feedback

Hello! I found your app while looking for a push to talk solution for Windows and thought I'd share my comments and the issues I encountered.

This is kind of a personal thing but I'd like to see an option to only toggle mute rather than forcing audio volume to be what is set in the app.

RAM usage of 100 megabytes seems kind of high, in my opinion, for what the app is supposed to do.

App creates a very shrunk all white window.
234229

Open folder is labeled "Open PoeEye folder"
147

I realize this isn't the most technically accurate description of the issue but when using the MouseMiddle as a hotkey the app can create a state where mouse input is "blocked" except to the desktop, although maybe I shouldn't be using MouseMiddle as my hotkey in the first place.

The "Show main window" option in the doesn't work.
195

App version: 0.126.0.0
Windows version: Windows 10 version 2004 64-bit

Failed to substitute modifier

Hello,

I've been using MicSwitch v1.0.179.0 and randomly I'm receiving this error message below that can only be solved by closing and opening again the application.
The bad side is that you may be thinking that your microphone is muted, as in a meeting, and it is suddenly unmuted without you noticing.

[Microsoft Windows 10 Home Single Language (x64) Build 19042.868 (20H2)]

Screen Shot 03-19-21 at 10 28 AM

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.