Skip to content

Commit 391262e

Browse files
committed
refactor(audio): prioritize system default device over name-based search in sounddevice backend
Updated device selection logic to return the first available device with appropriate channels before searching by device name. This provides better compatibility across different audio hardware configurations while maintaining ReSpeaker support as fallback.
1 parent ee33e0c commit 391262e

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

src/reachy_mini/media/audio_sounddevice.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -199,22 +199,22 @@ def _find_device_id(
199199
devices = sd.query_devices()
200200
channel_key = f"max_{device_type}_channels"
201201

202-
# Search for device by name
202+
# return default device with appropriate channels
203203
for idx, dev in enumerate(devices):
204-
if (
205-
name_contains.lower() in dev["name"].lower()
206-
and dev.get(channel_key, 0) > 0
207-
):
204+
if dev.get(channel_key, 0) > 0:
208205
return idx
209206

210-
# Log warning if named device not found
207+
# Log warning if default device not found
211208
self.logger.warning(
212-
f"No {device_type} device found containing '{name_contains}', using fallback."
209+
f"No default {device_type} found. Trying another device containing '{name_contains}'."
213210
)
214211

215-
# Fallback: return first device with appropriate channels
212+
# Fallback: Search for device by specific name
216213
for idx, dev in enumerate(devices):
217-
if dev.get(channel_key, 0) > 0:
214+
if (
215+
name_contains.lower() in dev["name"].lower()
216+
and dev.get(channel_key, 0) > 0
217+
):
218218
return idx
219219

220220
raise RuntimeError(

0 commit comments

Comments
 (0)