libpo32

Una pequeña biblioteca C99 para transferencias de datos acústicos y síntesis de batería del PO-32 de Teenage Engineering.
libpo32 reimplementa la pila de transferencia Tonic del PO-32 y un modelo de voz de batería compatible. No es un firmware completo ni un emulador de interfaz de usuario del PO-32; cubre el formato de paquetes, el módem acústico, el decodificador de tramas y la síntesis de batería local necesaria para construir, enviar, recibir y previsualizar transferencias del PO-32.
Contenido
Resumen
| Área | Lo que proporciona libpo32 |
|---|
| Protocolo de transferencia | Construir y analizar paquetes de parche, patrón y estado del PO-32 |
|
El núcleo es C99 independiente: sin runtime de libc, sin bibliotecas DSP externas, sin APIs de audio de plataforma, sin E/S de archivos. Solo se utilizan las cabeceras independientes <stddef.h> y <stdint.h>. Adecuado para objetivos embebidos y entornos sin sistema operativo.
Uso con un PO-32
El PO-32 no recibe audio de batería terminado cuando transfieres un sonido o un patrón. Recibe datos estructurados:
| Dato | Significado |
|---|
| Paquetes de parche | Los dos extremos de parche por instrumento (Left y Right), con la ranura del instrumento de destino codificada en el paquete |
El dispositivo utiliza su propio motor de síntesis interno para convertir esos parámetros en sonido.
A alto nivel, el flujo de trabajo con hardware real es:
Primeros pasos
Desde la raíz del repositorio, configura, construye, ejecuta las pruebas y luego la demostración:
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j4
ctest --test-dir build --output-on-failure
./build/po32_demo
Opcional, pero recomendado para desarrollo local:
./scripts/install-git-hooks.sh
Eso habilita el hook pre-commit gestionado por el repositorio, que ejecuta clang-format en los archivos .c y .h preparados antes de cada commit y valida los asuntos de los commits según Conventional Commits. El hook pre-push gestionado por el repositorio ejecuta el script de análisis estático antes del push.
La demostración construye una trama de transferencia, la renderiza a audio, la decodifica de vuelta (verificando un recorrido sin pérdidas), sintetiza un golpe de batería y escribe dos archivos WAV: demo_modem.wav y demo_kick.wav.
Ejemplos
API pública
Documentación
Estructura del proyecto
Contribuciones
Consulte CONTRIBUTING.md para la configuración local, comandos de verificación y la política de Conventional Commits utilizada para un historial compatible con SemVer.
Licencia
Copyright (c) 2026 Eric Lewis. Licenciado bajo la Licencia MIT. Consulte LICENSE.