👍️[Update] Controller : 文言を修正
inpurt -> mic output -> speaker
This commit is contained in:
@@ -29,26 +29,26 @@ class DeviceManager:
|
||||
return cls._instance
|
||||
|
||||
def init(self):
|
||||
self.input_devices = {"NoHost": [{"name": "NoDevice"}]}
|
||||
self.default_input_device = {"host": {"name": "NoHost"}, "device": {"name": "NoDevice"}}
|
||||
self.output_devices = [{"name": "NoDevice"}]
|
||||
self.default_output_device = {"device": {"name": "NoDevice"}}
|
||||
self.mic_devices = {"NoHost": [{"name": "NoDevice"}]}
|
||||
self.default_mic_device = {"host": {"name": "NoHost"}, "device": {"name": "NoDevice"}}
|
||||
self.speaker_devices = [{"name": "NoDevice"}]
|
||||
self.default_speaker_device = {"device": {"name": "NoDevice"}}
|
||||
self.update()
|
||||
|
||||
self.callback_default_input_device = None
|
||||
self.callback_default_output_device = None
|
||||
self.callback_default_mic_device = None
|
||||
self.callback_default_speaker_device = None
|
||||
self.callback_host_list = None
|
||||
self.callback_input_device_list = None
|
||||
self.callback_output_device_list = None
|
||||
self.callback_mic_device_list = None
|
||||
self.callback_speaker_device_list = None
|
||||
|
||||
self.monitoring_flag = False
|
||||
self.startMonitoring()
|
||||
|
||||
def update(self):
|
||||
buffer_input_devices = {}
|
||||
buffer_default_input_device = {"host": {"name": "NoHost"}, "device": {"name": "NoDevice"}}
|
||||
buffer_output_devices = []
|
||||
buffer_default_output_device = {"device": {"name": "NoDevice"}}
|
||||
buffer_mic_devices = {}
|
||||
buffer_default_mic_device = {"host": {"name": "NoHost"}, "device": {"name": "NoDevice"}}
|
||||
buffer_speaker_devices = []
|
||||
buffer_default_speaker_device = {"device": {"name": "NoDevice"}}
|
||||
|
||||
with PyAudio() as p:
|
||||
for host_index in range(p.get_host_api_count()):
|
||||
@@ -57,26 +57,26 @@ class DeviceManager:
|
||||
for device_index in range(device_count):
|
||||
device = p.get_device_info_by_host_api_device_index(host_index, device_index)
|
||||
if device.get("maxInputChannels", 0) > 0 and not device.get("isLoopbackDevice", True):
|
||||
buffer_input_devices.setdefault(host["name"], []).append(device)
|
||||
if not buffer_input_devices:
|
||||
buffer_input_devices = {"NoHost": [{"name": "NoDevice"}]}
|
||||
buffer_mic_devices.setdefault(host["name"], []).append(device)
|
||||
if not buffer_mic_devices:
|
||||
buffer_mic_devices = {"NoHost": [{"name": "NoDevice"}]}
|
||||
|
||||
api_info = p.get_default_host_api_info()
|
||||
default_input_device = api_info["defaultInputDevice"]
|
||||
default_mic_device = api_info["defaultInputDevice"]
|
||||
|
||||
for host_index in range(p.get_host_api_count()):
|
||||
host = p.get_host_api_info_by_index(host_index)
|
||||
device_count = host.get('deviceCount', 0)
|
||||
for device_index in range(device_count):
|
||||
device = p.get_device_info_by_host_api_device_index(host_index, device_index)
|
||||
if device["index"] == default_input_device:
|
||||
buffer_default_input_device = {"host": host, "device": device}
|
||||
if device["index"] == default_mic_device:
|
||||
buffer_default_mic_device = {"host": host, "device": device}
|
||||
break
|
||||
else:
|
||||
continue
|
||||
break
|
||||
|
||||
output_devices = []
|
||||
speaker_devices = []
|
||||
wasapi_info = p.get_host_api_info_by_type(paWASAPI)
|
||||
wasapi_name = wasapi_info["name"]
|
||||
for host_index in range(p.get_host_api_count()):
|
||||
@@ -88,34 +88,34 @@ class DeviceManager:
|
||||
if not device.get("isLoopbackDevice", True):
|
||||
for loopback in p.get_loopback_device_info_generator():
|
||||
if device["name"] in loopback["name"]:
|
||||
output_devices.append(loopback)
|
||||
output_devices = [dict(t) for t in {tuple(d.items()) for d in output_devices}] or [{"name": "NoDevice"}]
|
||||
buffer_output_devices = sorted(output_devices, key=lambda d: d['index'])
|
||||
speaker_devices.append(loopback)
|
||||
speaker_devices = [dict(t) for t in {tuple(d.items()) for d in speaker_devices}] or [{"name": "NoDevice"}]
|
||||
buffer_speaker_devices = sorted(speaker_devices, key=lambda d: d['index'])
|
||||
|
||||
wasapi_info = p.get_host_api_info_by_type(paWASAPI)
|
||||
default_output_device_index = wasapi_info["defaultOutputDevice"]
|
||||
default_speaker_device_index = wasapi_info["defaultOutputDevice"]
|
||||
|
||||
for host_index in range(p.get_host_api_count()):
|
||||
host_info = p.get_host_api_info_by_index(host_index)
|
||||
device_count = host_info.get('deviceCount', 0)
|
||||
for device_index in range(0, device_count):
|
||||
device = p.get_device_info_by_host_api_device_index(host_index, device_index)
|
||||
if device["index"] == default_output_device_index:
|
||||
if device["index"] == default_speaker_device_index:
|
||||
default_speakers = device
|
||||
if not default_speakers.get("isLoopbackDevice", True):
|
||||
for loopback in p.get_loopback_device_info_generator():
|
||||
if default_speakers["name"] in loopback["name"]:
|
||||
buffer_default_output_device = {"device": loopback}
|
||||
buffer_default_speaker_device = {"device": loopback}
|
||||
break
|
||||
break
|
||||
|
||||
if buffer_default_output_device["device"]["name"] != "NoDevice":
|
||||
if buffer_default_speaker_device["device"]["name"] != "NoDevice":
|
||||
break
|
||||
|
||||
self.input_devices = buffer_input_devices
|
||||
self.default_input_device = buffer_default_input_device
|
||||
self.output_devices = buffer_output_devices
|
||||
self.default_output_device = buffer_default_output_device
|
||||
self.mic_devices = buffer_mic_devices
|
||||
self.default_mic_device = buffer_default_mic_device
|
||||
self.speaker_devices = buffer_speaker_devices
|
||||
self.default_speaker_device = buffer_default_speaker_device
|
||||
|
||||
def monitoring(self):
|
||||
comtypes.CoInitialize()
|
||||
@@ -147,17 +147,17 @@ class DeviceManager:
|
||||
self.monitoring_flag = False
|
||||
self.th_monitoring.join()
|
||||
|
||||
def setCallbackDefaultInputDevice(self, callback):
|
||||
self.callback_default_input_device = callback
|
||||
def setCallbackDefaultMicDevice(self, callback):
|
||||
self.callback_default_mic_device = callback
|
||||
|
||||
def clearCallbackDefaultInputDevice(self):
|
||||
self.callback_default_input_device = None
|
||||
def clearCallbackDefaultMicDevice(self):
|
||||
self.callback_default_mic_device = None
|
||||
|
||||
def setCallbackDefaultOutputDevice(self, callback):
|
||||
self.callback_default_output_device = callback
|
||||
def setCallbackDefaultSpeakerDevice(self, callback):
|
||||
self.callback_default_speaker_device = callback
|
||||
|
||||
def clearCallbackDefaultOutputDevice(self):
|
||||
self.callback_default_output_device = None
|
||||
def clearCallbackDefaultSpeakerDevice(self):
|
||||
self.callback_default_speaker_device = None
|
||||
|
||||
def setCallbackHostList(self, callback):
|
||||
self.callback_host_list = callback
|
||||
@@ -165,49 +165,49 @@ class DeviceManager:
|
||||
def clearCallbackHostList(self):
|
||||
self.callback_host_list = None
|
||||
|
||||
def setCallbackInputDeviceList(self, callback):
|
||||
self.callback_input_device_list = callback
|
||||
def setCallbackMicDeviceList(self, callback):
|
||||
self.callback_mic_device_list = callback
|
||||
|
||||
def clearCallbackInputDeviceList(self):
|
||||
self.callback_input_device_list = None
|
||||
def clearCallbackMicDeviceList(self):
|
||||
self.callback_mic_device_list = None
|
||||
|
||||
def setCallbackOutputDeviceList(self, callback):
|
||||
self.callback_output_device_list = callback
|
||||
def setCallbackSpeakerDeviceList(self, callback):
|
||||
self.callback_speaker_device_list = callback
|
||||
|
||||
def clearCallbackOutputDeviceList(self):
|
||||
self.callback_output_device_list = None
|
||||
def clearCallbackSpeakerDeviceList(self):
|
||||
self.callback_speaker_device_list = None
|
||||
|
||||
def noticeDefaultDevice(self):
|
||||
if self.callback_default_input_device is not None:
|
||||
self.callback_default_input_device(self.default_input_device["host"]["name"], self.default_input_device["device"]["name"])
|
||||
if self.callback_default_output_device is not None:
|
||||
self.callback_default_output_device(self.default_output_device["device"]["name"])
|
||||
if self.callback_default_mic_device is not None:
|
||||
self.callback_default_mic_device(self.default_mic_device["host"]["name"], self.default_mic_device["device"]["name"])
|
||||
if self.callback_default_speaker_device is not None:
|
||||
self.callback_default_speaker_device(self.default_speaker_device["device"]["name"])
|
||||
if self.callback_host_list is not None:
|
||||
self.callback_host_list()
|
||||
if self.callback_input_device_list is not None:
|
||||
self.callback_input_device_list()
|
||||
if self.callback_output_device_list is not None:
|
||||
self.callback_output_device_list()
|
||||
if self.callback_mic_device_list is not None:
|
||||
self.callback_mic_device_list()
|
||||
if self.callback_speaker_device_list is not None:
|
||||
self.callback_speaker_device_list()
|
||||
|
||||
def getInputDevices(self):
|
||||
return self.input_devices
|
||||
def getMicDevices(self):
|
||||
return self.mic_devices
|
||||
|
||||
def getDefaultInputDevice(self):
|
||||
return self.default_input_device
|
||||
def getDefaultMicDevice(self):
|
||||
return self.default_mic_device
|
||||
|
||||
def getOutputDevices(self):
|
||||
return self.output_devices
|
||||
def getSpeakerDevices(self):
|
||||
return self.speaker_devices
|
||||
|
||||
def getDefaultOutputDevice(self):
|
||||
return self.default_output_device
|
||||
def getDefaultSpeakerDevice(self):
|
||||
return self.default_speaker_device
|
||||
|
||||
device_manager = DeviceManager()
|
||||
|
||||
if __name__ == "__main__":
|
||||
# print("getInputDevices()", device_manager.getInputDevices())
|
||||
# print("getDefaultInputDevice()", device_manager.getDefaultInputDevice())
|
||||
# print("getOutputDevices()", device_manager.getOutputDevices())
|
||||
# print("getDefaultOutputDevice()", device_manager.getDefaultOutputDevice())
|
||||
# print("getMicDevices()", device_manager.getMicDevices())
|
||||
# print("getDefaultMicDevice()", device_manager.getDefaultMicDevice())
|
||||
# print("getSpeakerDevices()", device_manager.getSpeakerDevices())
|
||||
# print("getDefaultSpeakerDevice()", device_manager.getDefaultSpeakerDevice())
|
||||
|
||||
while True:
|
||||
sleep(1)
|
||||
Reference in New Issue
Block a user