libpo32

Teenage Engineering PO-32 ध्वनिक डेटा स्थानांतरण और ड्रम संश्लेषण के लिए एक छोटी C99 लाइब्रेरी।
libpo32 PO-32 Tonic स्थानांतरण स्टैक और एक संगत ड्रम वॉइस मॉडल को पुनः लागू करता है। यह पूर्ण PO-32 फर्मवेयर या UI एमुलेटर नहीं है; यह पैकेट प्रारूप, ध्वनिक मॉडेम, फ्रेम डिकोडर, और स्थानीय ड्रम संश्लेषण को कवर करता है जो PO-32 स्थानांतरण बनाने, भेजने, प्राप्त करने और पूर्वावलोकन करने के लिए आवश्यक हैं।
सामग्री
अवलोकन
| क्षेत्र | libpo32 क्या प्रदान करता है |
|---|
| स्थानांतरण प्रोटोकॉल | PO-32 पैच, पैटर्न, और स्टेट पैकेट बनाना और पार्स करना |
| ध्वनिक मॉडेम | डिवाइस में प्लेबैक के लिए स्थानांतरण फ्रेम को DPSK ऑडियो में रेंडर करना |
कोर फ्रीस्टैंडिंग C99 है: कोई libc रनटाइम नहीं, कोई बाहरी DSP लाइब्रेरी नहीं, कोई प्लेटफ़ॉर्म ऑडियो API नहीं, कोई फ़ाइल I/O नहीं। केवल फ्रीस्टैंडिंग हेडर <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 हुक सक्षम करता है, जो प्रत्येक कमिट से पहले स्टेज किए गए .c और .h फ़ाइलों पर clang-format चलाता है और Conventional Commits के विरुद्ध कमिट विषयों को मान्य करता है। रिपो-प्रबंधित pre-push हुक पुश से पहले स्थैतिक विश्लेषण स्क्रिप्ट चलाता है।
pre-commit हुक के लिए clang-format 18 आवश्यक है और किसी अन्य प्रमुख संस्करण पर विफल होता है; इंस्टॉल विकल्पों के लिए CONTRIBUTING.md देखें।
डेमो एक स्थानांतरण फ्रेम बनाता है, उसे ऑडियो में रेंडर करता है, उसे वापस डिकोड करता है (लॉसलेस राउंडट्रिप सत्यापित करता है), एक ड्रम हिट संश्लेषित करता है, और दो WAV फ़ाइलें लिखता है: demo_modem.wav और demo_kick.wav।
इंस्टॉल करना और उपभोग करना
cmake --install स्थैतिक लाइब्रेरी, हेडर, एक CMake पैकेज, और एक pkg-config फ़ाइल भेजता है, इसलिए दोनों उपभोग पथ बॉक्स से बाहर काम करते हैं:
find_package(LibPO32 0.2 REQUIRED)
target_link_libraries(app PRIVATE LibPO32::po32)
cc app.c $(pkg-config --cflags --libs po32) -lm
उदाहरण
| कमांड | उद्देश्य |
|---|
./build/po32_example | न्यूनतम राउंडट्रिप: एन्कोड, रेंडर, डिकोड, और सत्यापित करें |
libpo32 के साथ निर्मित परियोजनाएँ
| परियोजना | यह क्या करता है |
|---|
| Libpo32 for Schwung | Ableton Move पर Schwung के लिए एक 16-वॉइस ड्रम सिंथेसाइज़र मॉड्यूल, libpo32 द्वारा संचालित |
सार्वजनिक API
दस्तावेज़ीकरण
परियोजना संरचना
योगदान
स्थानीय सेटअप, सत्यापन कमांड, और SemVer-अनुकूल इतिहास के लिए उपयोग की जाने वाली Conventional Commits नीति के लिए CONTRIBUTING.md देखें।
लाइसेंस
कॉपीराइट (c) 2026 Eric Lewis। MIT लाइसेंस के तहत लाइसेंस प्राप्त। LICENSE देखें।