mirror of
https://github.com/Astatin3/oliver-keypad-thing.git
synced 2026-06-08 16:18:05 -06:00
put sessions = AudioUtilities.GetAllSessions() on another thread
This commit is contained in:
@@ -23,9 +23,11 @@ SLIDER_VALS = [
|
||||
}
|
||||
]
|
||||
|
||||
import time
|
||||
import math
|
||||
import subprocess
|
||||
from serial import Serial
|
||||
from threading import Thread
|
||||
from comtypes import CLSCTX_ALL
|
||||
from pycaw.pycaw import AudioUtilities, IAudioEndpointVolume, ISimpleAudioVolume
|
||||
|
||||
@@ -33,13 +35,21 @@ devices = AudioUtilities.GetSpeakers()
|
||||
interface = devices.Activate(IAudioEndpointVolume._iid_, CLSCTX_ALL, None)
|
||||
masterVolume = interface.QueryInterface(IAudioEndpointVolume)
|
||||
|
||||
sessions = None
|
||||
|
||||
def device_update_thread():
|
||||
global sessions
|
||||
while True:
|
||||
sessions = AudioUtilities.GetAllSessions()
|
||||
time.sleep(1)
|
||||
|
||||
def setMasterVolume(num: int):
|
||||
if num < 0 or num > 100: return
|
||||
masterVolume.SetMasterVolumeLevelScalar((num/100), None)
|
||||
|
||||
def setProgramVolume(num: int, program: str):
|
||||
if num < 0 or num > 100: return
|
||||
sessions = AudioUtilities.GetAllSessions()
|
||||
if num < 0 or num > 100: return
|
||||
if sessions is None: return
|
||||
for session in sessions:
|
||||
volume = session._ctl.QueryInterface(ISimpleAudioVolume)
|
||||
if session.Process and session.Process.name() == program:
|
||||
@@ -91,6 +101,9 @@ serial_ports()
|
||||
|
||||
ser = Serial(SERIAL_PORT, SERIAL_BUAD_RATE)
|
||||
|
||||
sessions_thread = Thread(target = device_update_thread)
|
||||
sessions_thread.start()
|
||||
|
||||
while ser.is_open:
|
||||
cc=str(ser.readline())
|
||||
val = cc[2:][:-5].split('|')
|
||||
@@ -101,3 +114,5 @@ while ser.is_open:
|
||||
case 1: # Slider
|
||||
level = (int(val[2])/1024)*100
|
||||
handle_slider(int(val[1]), level)
|
||||
|
||||
sessions_thread.join()
|
||||
|
||||
Reference in New Issue
Block a user