- Saved searches
- Use saved searches to filter your results more quickly
- License
- Paradoxis/Windows-Sound-Manager
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- Set windows volume python
- Как управлять громкостью звука windows 10 python?
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
Control your volume mixer on windows with Python 3
License
Paradoxis/Windows-Sound-Manager
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
Control your volume mixer on Windows with Python 3
This script emulates keystrokes using the built in windows VK_VOLUME_MUTE , VK_VOLUME_DOWN and VK_VOLUME_UP keys, which are used to control the default audio settings.
As I found out, changing your audio settings programmatically with programming language is incredibly tedious. It requires knowledge of tons of DLL’s and tens to force you to change the sound on every single device at hardware level individually. By using a small hack that uses the built in media keys, you can avoid all of this by using something which was built into the OS already.
This isn’t a fool-proof solution, but it works if you just need to build a quick application that requires your sound to to controlled with code.
Set windows volume python
Not much to say, directly on the code:
1 import ctypes,time 2 import comtypes 3 from ctypes import wintypes 4 5 MMDeviceApiLib = comtypes.GUID( 6 ' ') 7 IID_IMMDevice = comtypes.GUID( 8 ' ') 9 IID_IMMDeviceCollection = comtypes.GUID( 10 ' ') 11 IID_IMMDeviceEnumerator = comtypes.GUID( 12 ' ') 13 IID_IAudioEndpointVolume = comtypes.GUID( 14 ' ') 15 CLSID_MMDeviceEnumerator = comtypes.GUID( 16 ' ') 17 18 # EDataFlow 19 eRender = 0 # audio rendering stream 20 eCapture = 1 # audio capture stream 21 eAll = 2 # audio rendering or capture stream 22 23 # ERole 24 eConsole = 0 # games, system sounds, and voice commands 25 eMultimedia = 1 # music, movies, narration 26 eCommunications = 2 # voice communications 27 28 LPCGUID = REFIID = ctypes.POINTER(comtypes.GUID) 29 LPFLOAT = ctypes.POINTER(ctypes.c_float) 30 LPDWORD = ctypes.POINTER(wintypes.DWORD) 31 LPUINT = ctypes.POINTER(wintypes.UINT) 32 LPBOOL = ctypes.POINTER(wintypes.BOOL) 33 PIUnknown = ctypes.POINTER(comtypes.IUnknown) 34 35 class IMMDevice(comtypes.IUnknown): 36 _iid_ = IID_IMMDevice 37 _methods_ = ( 38 comtypes.COMMETHOD([], ctypes.HRESULT, 'Activate', 39 (['in'], REFIID, 'iid'), 40 (['in'], wintypes.DWORD, 'dwClsCtx'), 41 (['in'], LPDWORD, 'pActivationParams', None), 42 (['out','retval'], ctypes.POINTER(PIUnknown), 'ppInterface')), 43 comtypes.STDMETHOD(ctypes.HRESULT, 'OpenPropertyStore', []), 44 comtypes.STDMETHOD(ctypes.HRESULT, 'GetId', []), 45 comtypes.STDMETHOD(ctypes.HRESULT, 'GetState', [])) 46 47 PIMMDevice = ctypes.POINTER(IMMDevice) 48 49 class IMMDeviceCollection(comtypes.IUnknown): 50 _iid_ = IID_IMMDeviceCollection 51 52 PIMMDeviceCollection = ctypes.POINTER(IMMDeviceCollection) 53 54 class IMMDeviceEnumerator(comtypes.IUnknown): 55 _iid_ = IID_IMMDeviceEnumerator 56 _methods_ = ( 57 comtypes.COMMETHOD([], ctypes.HRESULT, 'EnumAudioEndpoints', 58 (['in'], wintypes.DWORD, 'dataFlow'), 59 (['in'], wintypes.DWORD, 'dwStateMask'), 60 (['out','retval'], ctypes.POINTER(PIMMDeviceCollection), 61 'ppDevices')), 62 comtypes.COMMETHOD([], ctypes.HRESULT, 'GetDefaultAudioEndpoint', 63 (['in'], wintypes.DWORD, 'dataFlow'), 64 (['in'], wintypes.DWORD, 'role'), 65 (['out','retval'], ctypes.POINTER(PIMMDevice), 'ppDevices'))) 66 @classmethod 67 def get_default(cls, dataFlow, role): 68 enumerator = comtypes.CoCreateInstance( 69 CLSID_MMDeviceEnumerator, cls, comtypes.CLSCTX_INPROC_SERVER) 70 return enumerator.GetDefaultAudioEndpoint(dataFlow, role) 71 72 class IAudioEndpointVolume(comtypes.IUnknown): 73 _iid_ = IID_IAudioEndpointVolume 74 _methods_ = ( 75 comtypes.STDMETHOD(ctypes.HRESULT, 'RegisterControlChangeNotify', []), 76 comtypes.STDMETHOD(ctypes.HRESULT, 'UnregisterControlChangeNotify', []), 77 comtypes.COMMETHOD([], ctypes.HRESULT, 'GetChannelCount', 78 (['out', 'retval'], LPUINT, 'pnChannelCount')), 79 comtypes.COMMETHOD([], ctypes.HRESULT, 'SetMasterVolumeLevel', 80 (['in'], ctypes.c_float, 'fLevelDB'), 81 (['in'], LPCGUID, 'pguidEventContext', None)), 82 comtypes.COMMETHOD([], ctypes.HRESULT, 'SetMasterVolumeLevelScalar', 83 (['in'], ctypes.c_float, 'fLevel'), 84 (['in'], LPCGUID, 'pguidEventContext', None)), 85 comtypes.COMMETHOD([], ctypes.HRESULT, 'GetMasterVolumeLevel', 86 (['out','retval'], LPFLOAT, 'pfLevelDB')), 87 comtypes.COMMETHOD([], ctypes.HRESULT, 'GetMasterVolumeLevelScalar', 88 (['out','retval'], LPFLOAT, 'pfLevel')), 89 comtypes.COMMETHOD([], ctypes.HRESULT, 'SetChannelVolumeLevel', 90 (['in'], wintypes.UINT, 'nChannel'), 91 (['in'], ctypes.c_float, 'fLevelDB'), 92 (['in'], LPCGUID, 'pguidEventContext', None)), 93 comtypes.COMMETHOD([], ctypes.HRESULT, 'SetChannelVolumeLevelScalar', 94 (['in'], wintypes.UINT, 'nChannel'), 95 (['in'], ctypes.c_float, 'fLevel'), 96 (['in'], LPCGUID, 'pguidEventContext', None)), 97 comtypes.COMMETHOD([], ctypes.HRESULT, 'GetChannelVolumeLevel', 98 (['in'], wintypes.UINT, 'nChannel'), 99 (['out','retval'], LPFLOAT, 'pfLevelDB')), 100 comtypes.COMMETHOD([], ctypes.HRESULT, 'GetChannelVolumeLevelScalar', 101 (['in'], wintypes.UINT, 'nChannel'), 102 (['out','retval'], LPFLOAT, 'pfLevel')), 103 comtypes.COMMETHOD([], ctypes.HRESULT, 'SetMute', 104 (['in'], wintypes.BOOL, 'bMute'), 105 (['in'], LPCGUID, 'pguidEventContext', None)), 106 comtypes.COMMETHOD([], ctypes.HRESULT, 'GetMute', 107 (['out','retval'], LPBOOL, 'pbMute')), 108 comtypes.COMMETHOD([], ctypes.HRESULT, 'GetVolumeStepInfo', 109 (['out','retval'], LPUINT, 'pnStep'), 110 (['out','retval'], LPUINT, 'pnStepCount')), 111 comtypes.COMMETHOD([], ctypes.HRESULT, 'VolumeStepUp', 112 (['in'], LPCGUID, 'pguidEventContext', None)), 113 comtypes.COMMETHOD([], ctypes.HRESULT, 'VolumeStepDown', 114 (['in'], LPCGUID, 'pguidEventContext', None)), 115 comtypes.COMMETHOD([], ctypes.HRESULT, 'QueryHardwareSupport', 116 (['out','retval'], LPDWORD, 'pdwHardwareSupportMask')), 117 comtypes.COMMETHOD([], ctypes.HRESULT, 'GetVolumeRange', 118 (['out','retval'], LPFLOAT, 'pfLevelMinDB'), 119 (['out','retval'], LPFLOAT, 'pfLevelMaxDB'), 120 (['out','retval'], LPFLOAT, 'pfVolumeIncrementDB'))) 121 @classmethod 122 def get_default(cls): 123 endpoint = IMMDeviceEnumerator.get_default(eRender, eMultimedia) 124 interface = endpoint.Activate(cls._iid_, comtypes.CLSCTX_INPROC_SERVER) 125 return ctypes.cast(interface, ctypes.POINTER(cls)) 126 127 128 129 130 131 if __name__ == '__main__': 132 133 def show_vol(ev): 134 time.sleep(2) 135 voldb = ev.GetMasterVolumeLevel() 136 volsc = ev.GetMasterVolumeLevelScalar() 137 volst, nstep = ev.GetVolumeStepInfo() 138 print('Master Volume (dB): %0.4f' % voldb) 139 print('Master Volume (scalar): %0.4f' % volsc)#Current volume 140 print('Master Volume (step): %d / %d' % (volst, nstep)) 141 142 def test(): 143 ev = IAudioEndpointVolume.get_default() 144 vol = ev.GetMasterVolumeLevelScalar() 145 vmin, vmax, vinc = ev.GetVolumeRange() 146 print('Volume Range (min, max, step) (dB): ' 147 '%0.4f, %0.4f, %0.4f' % (vmin, vmax, vinc)) 148 show_vol(ev) 149 try: 150 print('\nIncrement the master volume') 151 ev.VolumeStepUp()#Volume plus 152 show_vol(ev) 153 print('\nDecrement the master volume twice') 154 ev.VolumeStepDown()#Volume reduction 155 ev.VolumeStepDown() 156 show_vol(ev) 157 print('\nSet the master volume to 0.75 scalar') 158 ev.SetMasterVolumeLevelScalar(0.75)#Volume percentage setting 159 show_vol(ev) 160 print('\nSet the master volume to 0.25 scalar') 161 ev.SetMasterVolumeLevelScalar(0.25)#Volume percentage setting 162 show_vol(ev) 163 finally: 164 ev.SetMasterVolumeLevelScalar(vol) 165 166 comtypes.CoInitialize() 167 try: 168 test() 169 finally: 170 comtypes.CoUninitialize()
Simple logic is to get an EV object (
ev = IAudioEndpointVolume.get_default()
Then there are several ways:
Method 1 (get the current volume) 🙁
volsc = ev.GetMasterVolumeLevelScalar()
Method 2 (volume plus / minus) 🙁
Ev.volumeStepup () # volume plus
Ev.volumestepdown () # Volume minus
Ev.SetMastervolumelevelScalar (0.75) # Volume percentage settings
An additional simply calls Win32API add or minus volume:
import ctypes,operator WM_APPCOMMAND = 0x319 APPCOMMAND_VOLUME_UP = 0x0a APPCOMMAND_VOLUME_DOWN = 0x09 APPCOMMAND_VOLUME_MUTE = 0x08 def setSpeakerVol(volume): hwnd = ctypes.windll.user32.GetForegroundWindow() # ctypes.windll.winmm.waveOutSetVolume(hwnd, 0xffffffff) print(hwnd) ctypes.windll.user32.PostMessageA(hwnd, WM_APPCOMMAND, 0, APPCOMMAND_VOLUME_DOWN * 0x10000) # if __name__ == '__main__': setSpeakerVol(0)
Как управлять громкостью звука windows 10 python?
Нужно управлять именно в общем системой, через стандартный микшер. Благодарю. Хотелось бы устанавливать свое значение( с помощью ввода числа), прибавлять и убавлять по немногу, выключать, устанавливать максимум и получать текущее значение
SoundPlayer как управлять громкостью?
C# — SoundPlayer як управлять громкостью ? int value = 100 это будет полная громкость .
Как управлять уровнем системного звука Windows 7?
WinAPI, может быть, или дефолтная win-программа?
Управление громкостью звука
Rabyata. Kak ili chem, ya mogu upravlyat’ gromkostyu zvuka v programme kotoruyu ya pishu.
from sound import Sound # будем использовать статические функции класса Sound Sound.mute() # убрали звук Sound.volume_max() # Наоборот, прибавили на максимум cur = Sound.current_volume() # получили текущие настройки vol = int(input("Введите громкость звука в единицах (0..100): ")) # получим громкость от пользователя Sound.volume_set(vol) # установим пользовательскую громкость Sound.volume_up() # увеличим громкость на 2 единицы (проценты говорить неправильно) Sound.volume_down() # уменьшим громкость на 2 единицы
Проблемы с громкостью звука
Здравствуйте. Недавно приобрёл гарнитуру Steelseries 3H USB, всё хорошо, но меня очень беспокоит их.
Управление громкостью звука телефона на расстоянии
Встала задача — управлять громкостью телефона на расстоянии и возник вопрос — как это можно.
Как управлять мышью в играх через Python?
Во общем, пишу фарм бота для игры.Перепробовал кучу библиотек, и единственный способ хоть как то.
Как управлять аккаунтом Telegram через python
Мне нужно управлять аккаунтом Telegram через python. Все запросы к гуглу сводятся к одному — как.
Python+Selenium. Как управлять уже открытой веб-страницей
Эта страница требует авторизацию с помощью ЭЦП (Подписание с ЭЦП проводится посторонним приложением.