libpo32
A small C99 library for Teenage Engineering PO-32 acoustic data transfers and drum synthesis.
libpo32 reimplements the PO-32 Tonic transfer stack and a compatible drum voice model. It is not a full PO-32 firmware or UI emulator; it covers the packet format, acoustic modem, frame decoder, and local drum synthesis needed to build, send, receive, and preview PO-32 transfers.
Contents
Overview
Area What libpo32 provides Transfer protocol Build and parse PO-32 patch, pattern, and state packets Acoustic modem Render transfer frames to DPSK audio for playback into the device Decoder Recover normalized frames and packets from transfer audio Drum synthesis Render the PO-32's 21-parameter drum voice locally for preview and testing
The core is freestanding C99: no libc runtime, no external DSP libraries, no platform audio APIs, no file I/O. Only the freestanding headers <stddef.h> and <stdint.h> are used. Suitable for embedded targets and bare-metal environments.
Using It With a PO-32
The PO-32 is not receiving finished drum audio when you transfer a sound or a pattern. It receives structured data:
Data Meaning Patch packets The two patch endpoints per instrument ( Left and Right ), with the destination instrument slot encoded in the packet Pattern packets Which instruments trigger on which steps, with the destination pattern slot encoded as pattern_number State packet Tempo, swing, morph defaults, and the transferred pattern list
... continue reading