fix device index floating

This commit is contained in:
michalcourson
2026-03-28 07:11:31 -04:00
parent d3d5270889
commit 1106c82eab
6 changed files with 239 additions and 18 deletions

View File

@@ -98,8 +98,8 @@ class SettingsManager:
recorder.recordings_dir = self.get_settings('save_path')
audio_manager = WindowsAudioManager()
audio_manager.set_default_input_device(self.get_settings('input_device')['index'])
audio_manager.set_default_output_device(self.get_settings('output_device')['index'])
audio_manager.set_default_input_device(self.get_settings('input_device'))
audio_manager.set_default_output_device(self.get_settings('output_device'))
recorder.refresh_streams()

View File

@@ -75,34 +75,46 @@ class WindowsAudioManager:
}
]
def set_default_input_device(self, device_index):
if(device_index is None):
def set_default_input_device(self, device):
if(device is None):
return 0
"""
Set the default input audio device.
:param device_index: Index of the audio device
:param device: Audio device information
:return: Sample rate of the selected device
"""
sd.default.device[0] = device_index
self.default_input = device_index
corrected_device = None
# set corrected device index based on the name of the device matching the provided device name
for dev in self.devices:
if dev['name'] == device['name']:
corrected_device = dev['index']
break
sd.default.device[0] = corrected_device
self.default_input = corrected_device
# Get the sample rate of the selected device
device_info = sd.query_devices(device_index)
device_info = sd.query_devices(corrected_device)
return device_info['default_samplerate']
def set_default_output_device(self, device_index):
if(device_index is None):
def set_default_output_device(self, device):
if(device is None):
return self.get_current_output_device_sample_rate()
"""
Set the default output audio device.
:param device_index: Index of the audio device
:param device: Audio device information
:return: Sample rate of the selected device
"""
sd.default.device[1] = device_index
self.default_output = device_index
corrected_device = None
# set corrected device index based on the name of the device matching the provided device name
for dev in self.devices:
if dev['name'] == device['name']:
corrected_device = dev['index']
break
sd.default.device[1] = corrected_device
self.default_output = corrected_device
# Get the sample rate of the selected device
device_info = sd.query_devices(device_index)
device_info = sd.query_devices(corrected_device)
return device_info['default_samplerate']

206
audio-service/test.json Normal file
View File

@@ -0,0 +1,206 @@
[
{
"name": "Speakers (Realtek(R) Audio)",
"index": 38,
"hostapi": 2,
"max_input_channels": 0,
"max_output_channels": 2,
"default_low_input_latency": 0.0,
"default_low_output_latency": 0.003,
"default_high_input_latency": 0.0,
"default_high_output_latency": 0.01,
"default_samplerate": 48000.0
},
{
"name": "Headset Earphone (4- Arctis 7 Chat)",
"index": 39,
"hostapi": 2,
"max_input_channels": 0,
"max_output_channels": 1,
"default_low_input_latency": 0.0,
"default_low_output_latency": 0.003,
"default_high_input_latency": 0.0,
"default_high_output_latency": 0.01,
"default_samplerate": 48000.0
},
{
"name": "Line (Voicemod Virtual Audio Device (WDM))",
"index": 40,
"hostapi": 2,
"max_input_channels": 0,
"max_output_channels": 2,
"default_low_input_latency": 0.0,
"default_low_output_latency": 0.003,
"default_high_input_latency": 0.0,
"default_high_output_latency": 0.01,
"default_samplerate": 48000.0
},
{
"name": "Headphones (Oculus Virtual Audio Device)",
"index": 41,
"hostapi": 2,
"max_input_channels": 0,
"max_output_channels": 2,
"default_low_input_latency": 0.0,
"default_low_output_latency": 0.003,
"default_high_input_latency": 0.0,
"default_high_output_latency": 0.01,
"default_samplerate": 48000.0
},
{
"name": "VM to Headset (VB-Audio Voicemeeter VAIO)",
"index": 42,
"hostapi": 2,
"max_input_channels": 0,
"max_output_channels": 2,
"default_low_input_latency": 0.0,
"default_low_output_latency": 0.002,
"default_high_input_latency": 0.0,
"default_high_output_latency": 0.01,
"default_samplerate": 48000.0
},
{
"name": "VM to Discord (VB-Audio Voicemeeter VAIO)",
"index": 43,
"hostapi": 2,
"max_input_channels": 0,
"max_output_channels": 2,
"default_low_input_latency": 0.0,
"default_low_output_latency": 0.002,
"default_high_input_latency": 0.0,
"default_high_output_latency": 0.01,
"default_samplerate": 48000.0
},
{
"name": "VM to OBS (VB-Audio Voicemeeter VAIO)",
"index": 44,
"hostapi": 2,
"max_input_channels": 0,
"max_output_channels": 2,
"default_low_input_latency": 0.0,
"default_low_output_latency": 0.002,
"default_high_input_latency": 0.0,
"default_high_output_latency": 0.01,
"default_samplerate": 48000.0
},
{
"name": "Headphones (4- Arctis 7 Game)",
"index": 45,
"hostapi": 2,
"max_input_channels": 0,
"max_output_channels": 2,
"default_low_input_latency": 0.0,
"default_low_output_latency": 0.003,
"default_high_input_latency": 0.0,
"default_high_output_latency": 0.01,
"default_samplerate": 48000.0
},
{
"name": "Speakers (2- Focusrite USB Audio)",
"index": 46,
"hostapi": 2,
"max_input_channels": 0,
"max_output_channels": 2,
"default_low_input_latency": 0.0,
"default_low_output_latency": 0.003,
"default_high_input_latency": 0.0,
"default_high_output_latency": 0.01,
"default_samplerate": 48000.0
},
{
"name": "Headset Microphone (4- Arctis 7 Chat)",
"index": 47,
"hostapi": 2,
"max_input_channels": 1,
"max_output_channels": 0,
"default_low_input_latency": 0.003,
"default_low_output_latency": 0.0,
"default_high_input_latency": 0.01,
"default_high_output_latency": 0.0,
"default_samplerate": 48000.0
},
{
"name": "Analogue 1 + 2 (2- Focusrite USB Audio)",
"index": 48,
"hostapi": 2,
"max_input_channels": 2,
"max_output_channels": 0,
"default_low_input_latency": 0.003,
"default_low_output_latency": 0.0,
"default_high_input_latency": 0.01,
"default_high_output_latency": 0.0,
"default_samplerate": 48000.0
},
{
"name": "Voicemeeter Out B3 (VB-Audio Voicemeeter VAIO)",
"index": 49,
"hostapi": 2,
"max_input_channels": 2,
"max_output_channels": 0,
"default_low_input_latency": 0.003,
"default_low_output_latency": 0.0,
"default_high_input_latency": 0.01,
"default_high_output_latency": 0.0,
"default_samplerate": 48000.0
},
{
"name": "Microphone (Voicemod Virtual Audio Device (WDM))",
"index": 50,
"hostapi": 2,
"max_input_channels": 2,
"max_output_channels": 0,
"default_low_input_latency": 0.003,
"default_low_output_latency": 0.0,
"default_high_input_latency": 0.01,
"default_high_output_latency": 0.0,
"default_samplerate": 48000.0
},
{
"name": "Voicemeeter Out A2 (VB-Audio Voicemeeter VAIO)",
"index": 51,
"hostapi": 2,
"max_input_channels": 2,
"max_output_channels": 0,
"default_low_input_latency": 0.003,
"default_low_output_latency": 0.0,
"default_high_input_latency": 0.01,
"default_high_output_latency": 0.0,
"default_samplerate": 48000.0
},
{
"name": "VM Mic mix (VB-Audio Voicemeeter VAIO)",
"index": 52,
"hostapi": 2,
"max_input_channels": 2,
"max_output_channels": 0,
"default_low_input_latency": 0.003,
"default_low_output_latency": 0.0,
"default_high_input_latency": 0.01,
"default_high_output_latency": 0.0,
"default_samplerate": 48000.0
},
{
"name": "VM Rec mix (VB-Audio Voicemeeter VAIO)",
"index": 53,
"hostapi": 2,
"max_input_channels": 2,
"max_output_channels": 0,
"default_low_input_latency": 0.003,
"default_low_output_latency": 0.0,
"default_high_input_latency": 0.01,
"default_high_output_latency": 0.0,
"default_samplerate": 48000.0
},
{
"name": "Voicemeeter Out A1 (VB-Audio Voicemeeter VAIO)",
"index": 54,
"hostapi": 2,
"max_input_channels": 2,
"max_output_channels": 0,
"default_low_input_latency": 0.003,
"default_low_output_latency": 0.0,
"default_high_input_latency": 0.01,
"default_high_output_latency": 0.0,
"default_samplerate": 48000.0
}
]