- Replaced per-frame `run_in_executor` calls with single background reader thread in `ThreadedAudioInput`
- Reader thread continuously calls `_read()` and enqueues data via `call_soon_threadsafe` to asyncio.Queue
- Reduces per-frame scheduling overhead and context-switch jitter while preserving async API
- Added thread lifecycle management: lazy start on first `frames()` call, graceful stop in `aclose()`
- Update
- Created script to list all available audio input/output devices with their capabilities
- Displays host APIs, channel counts, sample rates, and device names for configuration
- Includes helpful hints for selecting appropriate capture and playback devices