Sobre el proyecto

CPAL (Biblioteca de Audio Multiplataforma) es una biblioteca Rust de bajo nivel para entrada y salida de audio. Está pensada como capa base; el README dirige a los usuarios que buscan reproducción y captura de mayor nivel hacia Rodio o bibliotecas similares. Capacidades descritas en el README: - Enumerar hosts de audio, dispositivos y sus configuraciones de flujo compatibles. - Buscar dispositivos por ID estable o por rol de entrada/salida predeterminado. - Inspeccionar metadatos del dispositivo: nombre, fabricante, tipo y tipo de bus. - Construir flujos de entrada y salida con formatos de muestra en tiempo de compilación o ejecución. - Reproducir, pausar y consultar el tamaño del búfer y el reloj de un flujo. Plataformas y backends predeterminados: - Android: AAudio - BSD: ALSA (opcional JACK, PipeWire, PulseAudio) - iOS, macOS, tvOS, visionOS: CoreAudio (macOS opcionalmente JACK) - Linux: ALSA (opcional JACK, PipeWire, PulseAudio) - WebAssembly: API de Audio Web (opcional Audio Worklet) - Windows: WASAPI (opcional ASIO, JACK) Las características opcionales incluyen asio, audioworklet, custom, jack, pipewire, pulseaudio, realtime, realtime-dbus y wasm-bindgen. El README documenta dependencias de compilación (por ejemplo, libasound2-dev en Debian/Ubuntu para ALSA, requerida incluso al usar JACK, PipeWire o PulseAudio), versiones mínimas de Rust y de SO/tiempo de ejecución por backend, y pasos de configuración para Android (cargo-apk, inicialización de contexto JNI), ASIO (CPAL_ASIO_DIR, LLVM/Clang, LIBCLANG_PATH, Visual Studio, compilación cruzada MinGW-w64) y WebAssembly. La guía de solución de problemas cubre dispositivos predeterminados faltantes, contención de dispositivos ALSA/PipeWire/PulseAudio (DeviceBusy cuando un servidor de sonido mantiene el dispositivo predeterminado de ALSA), configuración del tamaño del búfer y sus compensaciones de latencia, fallos de remuestreo en PipeWire, promoción de prioridad en tiempo real de ALSA (SCHED_FIFO, CAP_SYS_NICE, límites rtprio, rtkit vía D-Bus) y errores de compilación. Se discuten dispositivos dúplex: CPAL no compone dispositivos por sí mismo y requiere un dispositivo que ya admita captura y reproducción, con el plugin asym de ALSA o puertos de cliente JACK como opciones. El repositorio incluye ejemplos en examples/ (por ejemplo, beep), ejecutables con cargo run --example beep y banderas de características para backends específicos de plataforma. La licencia es Apache-2.0.