forked from AndreMiras/pycaw
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtestpycaw.py
More file actions
59 lines (46 loc) · 1.99 KB
/
testpycaw.py
File metadata and controls
59 lines (46 loc) · 1.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
from ctypes import cast, POINTER
import comtypes
#from comtypes import CLSCTX_ALL
from pycaw.pycaw import AudioUtilities, IAudioEndpointVolume
#==============================================================================
# Wrapper functions around pycaw
class AudioDeviceError(Exception):
pass
def findActiveAudioDeviceByName(devName):
devices = AudioUtilities.GetAllActiveDevices()
for dev in devices:
if dev.FriendlyName == devName:
return dev
raise AudioDeviceError("can't find active audio device '{}'".format(devName))
def findAudioDeviceByName(devName):
devices = AudioUtilities.GetAllDevices()
for dev in devices:
if dev.FriendlyName == devName:
return dev
raise AudioDeviceError("can't find audio device '{}'".format(devName))
def setDevVolume(dev, vol):
interface = dev.immdevice.Activate(IAudioEndpointVolume._iid_, comtypes.CLSCTX_ALL, None)
volume = cast(interface, POINTER(IAudioEndpointVolume))
volume.SetMasterVolumeLevelScalar(vol, None)
def setVolume(devName, vol):
setDevVolume(findActiveAudioDeviceByName(devName), vol)
def getDevVolume(dev):
interface = dev.immdevice.Activate(IAudioEndpointVolume._iid_, comtypes.CLSCTX_ALL, None)
volume = cast(interface, POINTER(IAudioEndpointVolume))
return volume.GetMasterVolumeLevelScalar()
def getVolume(devName):
return getDevVolume(findActiveAudioDeviceByName(devName))
#==============================================================================
def testSetVol(devName, vol):
vol0 = getVolume(devName)
print("orig vol: {}".format(vol0))
print("setting vol to {}".format(vol))
setVolume(devName, vol)
vol0 = getVolume(devName)
print("after setting, vol: {}".format(vol0))
dev = AudioUtilities.GetDefaultSpeaker()
print("default speaker: {}".format(dev.FriendlyName))
testSetVol(dev.FriendlyName, 0.66)
dev = AudioUtilities.GetDefaultMicrophone()
print("default mic: {}".format(dev.FriendlyName))
testSetVol(dev.FriendlyName, 0.33)