diff --git a/audio-service/src/settings.py b/audio-service/src/settings.py index 2b11fed..a81bfa6 100644 --- a/audio-service/src/settings.py +++ b/audio-service/src/settings.py @@ -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() diff --git a/audio-service/src/windows_audio.py b/audio-service/src/windows_audio.py index 38f2468..bbb4386 100644 --- a/audio-service/src/windows_audio.py +++ b/audio-service/src/windows_audio.py @@ -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'] \ No newline at end of file diff --git a/audio-service/test.json b/audio-service/test.json new file mode 100644 index 0000000..73ce3f2 --- /dev/null +++ b/audio-service/test.json @@ -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 + } +] diff --git a/stream_deck_plugin/ClipTrimDotNet/Client/ClipTrimClient.cs b/stream_deck_plugin/ClipTrimDotNet/Client/ClipTrimClient.cs index 1a3177c..8b9f93b 100644 --- a/stream_deck_plugin/ClipTrimDotNet/Client/ClipTrimClient.cs +++ b/stream_deck_plugin/ClipTrimDotNet/Client/ClipTrimClient.cs @@ -265,6 +265,7 @@ namespace ClipTrimDotNet.Client public async void SaveClip() { if (socket is null) return; + CheckPort(); await socket.EmitAsync("record_clip", new List() { }); } @@ -272,7 +273,7 @@ namespace ClipTrimDotNet.Client { if (socket is null) return; //Logger.Instance.LogMessage(TracingLevel.INFO, $"Checking port {socket}"); - if (currentHostname != HostName) + if (currentHostname != HostName || !socket.Connected) { //Logger.Instance.LogMessage(TracingLevel.INFO, $"port {socket}"); if (socket.Connected) diff --git a/stream_deck_plugin/ClipTrimDotNet/ClipTrim.streamDeckProfile b/stream_deck_plugin/ClipTrimDotNet/ClipTrim.streamDeckProfile new file mode 100644 index 0000000..628d490 Binary files /dev/null and b/stream_deck_plugin/ClipTrimDotNet/ClipTrim.streamDeckProfile differ diff --git a/stream_deck_plugin/ClipTrimDotNet/ClipTrimDotNet.csproj b/stream_deck_plugin/ClipTrimDotNet/ClipTrimDotNet.csproj index e788b33..d40321e 100644 --- a/stream_deck_plugin/ClipTrimDotNet/ClipTrimDotNet.csproj +++ b/stream_deck_plugin/ClipTrimDotNet/ClipTrimDotNet.csproj @@ -6,8 +6,6 @@ 10 enable enable - npm run stop - npm run start ClipTrimDotNet ClipTrimDotNet Copyright © 2020 @@ -18,9 +16,10 @@ bin\Debug\com.michal-courson.cliptrim.sdPlugin\ - bin\Release\ClipTrimDotNet.sdPlugin\ + bin\Release\com.michal-courson.cliptrim.sdPlugin\ + @@ -71,6 +70,9 @@ + + Always + PreserveNewest