libpo32

مكتبة C99 صغيرة لنقل البيانات الصوتية وتوليف الطبول لجهاز Teenage Engineering PO-32.
libpo32 تعيد تنفيذ حزمة نقل PO-32 Tonic ونموذج صوت طبول متوافق. إنها ليست برنامجًا ثابتًا كاملاً لـ PO-32 أو محاكي واجهة مستخدم؛ بل تغطي تنسيق الحزم، والمودم الصوتي، وفك تشفير الإطارات، وتوليف الطبول المحلي اللازم لبناء وإرسال واستقبال ومعاينة عمليات نقل PO-32.
المحتويات
نظرة عامة
| المجال | ما توفره libpo32 |
|---|
| بروتوكول النقل | بناء وتحليل حزم التصحيح والنمط والحالة الخاصة بـ PO-32 |
| المودم الصوتي | عرض إطارات النقل إلى صوت DPSK للتشغيل في الجهاز |
| وحدة فك التشفير | استعادة الإطارات والحزم المعيارية من صوت النقل |
النواة هي C99 مستقلة: لا يوجد وقت تشغيل libc، ولا مكتبات DSP خارجية، ولا واجهات برمجة تطبيقات صوتية للمنصة، ولا إدخال/إخراج ملفات. يتم استخدام الرؤوس المستقلة <stddef.h> و <stdint.h> فقط. مناسبة للأهداف المدمجة والبيئات المعدنية العارية.
الاستخدام مع PO-32
لا يستقبل PO-32 صوت طبول نهائيًا عند نقل صوت أو نمط. بل يستقبل بيانات منظمة:
| البيانات | المعنى |
|---|
| حزم التصحيح | نقطتا التصحيح لكل آلة (Left و Right)، مع ترميز فتحة الآلة الوجهة في الحزمة |
| حزم النمط | أي الآلات تُطلق على أي خطوات، مع ترميز فتحة النمط الوجهة كـ pattern_number |
ثم يستخدم الجهاز محرك التوليف الداخلي الخاص به لتحويل هذه المعاملات إلى صوت.
على مستوى عالٍ، سير العمل مع الأجهزة الحقيقية هو:
| الخطوة | ما تفعله |
|---|
| 1 | بناء نقل في البرنامج من بيانات التصحيح والنمط والحالة |
| 2 |
بدء الاستخدام
من جذر المستودع، قم بالتكوين والبناء وتشغيل الاختبارات ثم العرض التوضيحي:
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
يقوم ذلك بتمكين خطاف ما قبل الالتزام المُدار من المستودع، والذي يشغّل clang-format على ملفات .c و .h المرحّلة قبل كل التزام ويتحقق من عناوين الالتزامات وفقًا لـ Conventional Commits. يشغّل خطاف ما قبل الدفع المُدار من المستودع سكربت التحليل الثابت قبل الدفع.
يتطلب خطاف ما قبل الالتزام 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 | وحدة توليف طبول بـ 16 صوتًا لـ Schwung على Ableton Move، مدعومة بـ libpo32 |
واجهة برمجة التطبيقات العامة
التوثيق
هيكل المشروع
المساهمة
راجع CONTRIBUTING.md للإعداد المحلي وأوامر التحقق وسياسة Conventional Commits المستخدمة لتاريخ متوافق مع SemVer.
الترخيص
حقوق النشر (c) 2026 Eric Lewis. مرخّص بموجب رخصة MIT. راجع LICENSE.