libpo32

Eine kleine C99-Bibliothek für akustische Datenübertragungen und Drum-Synthese des Teenage Engineering PO-32.
libpo32 implementiert den PO-32-Tonic-Übertragungsstack und ein kompatibles Drum-Voice-Modell neu. Es ist weder eine vollständige PO-32-Firmware noch ein UI-Emulator; es umfasst das Paketformat, das akustische Modem, den Frame-Decoder und die lokale Drum-Synthese, die zum Erstellen, Senden, Empfangen und Vorschauen von PO-32-Übertragungen erforderlich sind.
Inhaltsverzeichnis
Übersicht
| Bereich | Was libpo32 bereitstellt |
|---|
| Übertragungsprotokoll | PO-32-Patch-, Pattern- und State-Pakete erstellen und parsen |
|
Der Kern ist freistehendes C99: keine libc-Laufzeit, keine externen DSP-Bibliotheken, keine Plattform-Audio-APIs, keine Datei-E/A. Es werden nur die freistehenden Header <stddef.h> und <stdint.h> verwendet. Geeignet für eingebettete Ziele und Bare-Metal-Umgebungen.
Verwendung mit einem PO-32
Der PO-32 empfängt keine fertigen Drum-Audiodaten, wenn Sie einen Sound oder ein Pattern übertragen. Er empfängt strukturierte Daten:
| Daten | Bedeutung |
|---|
| Patch-Pakete | Die beiden Patch-Endpunkte pro Instrument (Left und Right), wobei der Ziel-Instrument-Slot im Paket codiert ist |
Das Gerät verwendet dann seine eigene interne Synthesizer-Engine, um diese Parameter in Klang umzuwandeln.
Auf hoher Ebene sieht der Arbeitsablauf mit echter Hardware wie folgt aus:
Erste Schritte
Aus dem Repository-Root heraus konfigurieren, bauen, Tests ausführen und dann die Demo:
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j4
ctest --test-dir build --output-on-failure
./build/po32_demo
Optional, aber für die lokale Entwicklung empfohlen:
./scripts/install-git-hooks.sh
Dadurch wird der vom Repository verwaltete Pre-Commit-Hook aktiviert, der vor jedem Commit clang-format auf gestagte .c- und .h-Dateien ausführt und Commit-Betreffe auf Conventional Commits prüft. Der vom Repository verwaltete pre-push-Hook führt vor dem Push das Static-Analysis-Skript aus.
Die Demo erstellt einen Übertragungsframe, rendert ihn in Audio, decodiert ihn zurück (überprüft einen verlustfreien Roundtrip), synthetisiert einen Drum-Hit und schreibt zwei WAV-Dateien: demo_modem.wav und demo_kick.wav.
Beispiele
| Befehl | Zweck |
|---|
./build/po32_example |
Öffentliche API
Dokumentation
Projektstruktur
Mitwirken
Siehe CONTRIBUTING.md für die lokale Einrichtung, Verifizierungsbefehle und die Richtlinie zu Conventional Commits, die für eine SemVer-freundliche Versionshistorie verwendet wird.
Lizenz
Copyright (c) 2026 Eric Lewis. Lizenziert unter der MIT-Lizenz. Siehe LICENSE.