libpo32

Eine kleine C99-Bibliothek für akustische Datenübertragungen und
Schlagzeug-Synthese des Teenage Engineering PO-32.
libpo32 implementiert den PO-32-Tonic-Übertragungsstack und ein kompatibles
Drum-Voice-Modell neu. Es ist keine vollständige PO-32-Firmware oder
UI-Emulation; es deckt das Paketformat, das akustische Modem, den
Frame-Decoder und die lokale Schlagzeug-Synthese ab, die zum Erstellen,
Senden, Empfangen und Vorschauen von PO-32-Übertragungen benötigt werden.
Inhalt
Überblick
| Bereich | Was libpo32 bietet |
|---|
| Übertragungsprotokoll | Erstellen und Parsen von PO-32-Patch-, Pattern- und State-Paketen |
|
Der Kern ist freistehendes C99: keine libc-Laufzeit, keine externen
DSP-Bibliotheken, keine Plattform-Audio-APIs, keine Datei-I/O. Es werden nur
die freistehenden Header <stddef.h> und <stdint.h> verwendet. Geeignet für
eingebettete Zielsysteme und Bare-Metal-Umgebungen.
Verwendung mit einem PO-32
Der PO-32 empfängt beim Übertragen eines Sounds oder Patterns kein fertiges
Schlagzeug-Audio. Er empfängt strukturierte Daten:
| Daten | Bedeutung |
|---|
| Patch-Pakete | Die beiden Patch-Endpunkte pro Instrument (Left und Right), wobei der Ziel-Instrumentenslot im Paket kodiert ist |
Das Gerät verwendet dann seine eigene interne Synthese-Engine, um diese
Parameter in Klang umzuwandeln.
Auf hoher Ebene sieht der Arbeitsablauf mit echter Hardware wie folgt aus:
Erste Schritte
Vom Repository-Stammverzeichnis aus 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
Das aktiviert den vom Repository verwalteten Pre-Commit-Hook, der vor jedem
Commit clang-format auf die gestagten .c- und .h-Dateien ausführt und
Commit-Betreffe gegen Conventional Commits validiert. Der vom Repository
verwaltete pre-push-Hook führt vor dem Push das Skript zur statischen
Analyse aus.
Der Pre-Commit-Hook erfordert clang-format 18 und schlägt bei jeder anderen
Hauptversion fehl; siehe CONTRIBUTING.md für
Installationsoptionen.
Die Demo erstellt einen Übertragungsframe, rendert ihn zu Audio, dekodiert ihn
zurück (wobei ein verlustfreier Roundtrip verifiziert wird), synthetisiert
einen Drum-Hit und schreibt zwei WAV-Dateien: demo_modem.wav und
demo_kick.wav.
Installieren und Verwenden
cmake --install liefert die statische Bibliothek, Header, ein CMake-Paket
und eine pkg-config-Datei, sodass beide Konsumationspfade sofort
funktionieren:
find_package(LibPO32 0.2 REQUIRED)
target_link_libraries(app PRIVATE LibPO32::po32)
cc app.c $(pkg-config --cflags --libs po32) -lm
Beispiele
| Befehl | Zweck |
|---|
./build/po32_example |
Projekte, die mit libpo32 erstellt wurden
| Projekt | Was es tut |
|---|
| Libpo32 for Schwung | Ein 16-stimmiges Schlagzeug-Synthesizer-Modul für Schwung auf Ableton Move, angetrieben von libpo32 |
Öffentliche API
Dokumentation
Projektstruktur
Mitwirken
Siehe CONTRIBUTING.md für die lokale Einrichtung,
Verifizierungsbefehle und die Conventional-Commits-Richtlinie, die für eine
SemVer-freundliche Historie verwendet wird.
Lizenz
Copyright (c) 2026 Eric Lewis. Lizenziert unter der MIT-Lizenz. Siehe LICENSE.