libpo32

Небольшая библиотека на C99 для акустической передачи данных и синтеза ударных для Teenage Engineering PO-32.
libpo32 перереализует стек передачи PO-32 Tonic и совместимую модель голоса ударных. Это не полноценная прошивка или эмулятор интерфейса PO-32; она охватывает формат пакетов, акустический модем, декодер кадров и локальный синтез ударных, необходимые для сборки, отправки, приёма и предварительного прослушивания передач PO-32.
Содержание
Обзор
| Область | Что предоставляет libpo32 |
|---|
| Протокол передачи | Сборка и разбор пакетов патчей, паттернов и состояний PO-32 |
| Акустический модем | Рендеринг кадров передачи в аудио DPSK для воспроизведения в устройство |
Ядро написано на freestanding C99: без libc, без внешних DSP-библиотек, без аудио-API платформы, без ввода-вывода файлов. Используются только freestanding заголовки <stddef.h> и <stdint.h>. Подходит для встраиваемых платформ и голого металла.
Использование с PO-32
При передаче звука или паттерна PO-32 не получает готовое аудио ударных. Он получает структурированные данные:
| Данные | Значение |
|---|
| Пакеты патчей | Две конечные точки патча на инструмент (Left и Right), с закодированным слотом назначения инструмента в пакете |
|
Затем устройство использует собственный внутренний синтезатор для преобразования этих параметров в звук.
На высоком уровне рабочий процесс с реальным оборудованием выглядит так:
| Шаг | Что вы делаете |
|---|
| 1 | Собираете передачу в программном обеспечении из данных патчей, паттернов и состояния |
Начало работы
Из корня репозитория выполните настройку, сборку, запуск тестов, затем демо:
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j4
ctest --test-dir build --output-on-failure
./build/po32_demo
Опционально, но рекомендуется для локальной разработки:
./scripts/install-git-hooks.sh
Это включает управляемый репозиторием pre-commit хук, который запускает clang-format на подготовленных .c и .h файлах перед каждым коммитом и проверяет темы коммитов на соответствие Conventional Commits. Управляемый репозиторием pre-push хук запускает скрипт статического анализа перед отправкой.
Демо строит кадр передачи, рендерит его в аудио, декодирует обратно (проверяя без потерь), синтезирует удар и записывает два WAV-файла: demo_modem.wav и demo_kick.wav.
Примеры
| Команда | Назначение |
|---|
./build/po32_example |
Публичный API
Документация
Структура проекта
Участие
Смотрите CONTRIBUTING.md для локальной настройки, команд проверки и политики Conventional Commits, используемой для истории, совместимой с SemVer.
Лицензия
Авторские права (c) 2026 Eric Lewis. Лицензировано по лицензии MIT. Смотрите LICENSE.