العودة إلى التحديثات
New releaseSep 3, 2026

libpo32 v0.3.0

مكتبة بلغة C99 لنقل الصوتيات وتركيب الطبول لـ PO-32.

مشاركة

libpo32

Tests Codecov FOSSA Status

مكتبة C99 صغيرة لنقل البيانات الصوتية وتوليف الطبول لجهاز Teenage Engineering PO-32.

libpo32 تعيد تنفيذ حزمة نقل PO-32 Tonic ونموذج صوت طبول متوافق. إنها ليست برنامجًا ثابتًا كاملاً لـ PO-32 أو محاكي واجهة مستخدم؛ بل تغطي تنسيق الحزم، والمودم الصوتي، وفك تشفير الإطارات، وتوليف الطبول المحلي اللازم لبناء وإرسال واستقبال ومعاينة عمليات نقل PO-32.

المحتويات

نظرة عامة

المجالما توفره libpo32
بروتوكول النقلبناء وتحليل حزم التصحيح والنمط والحالة الخاصة بـ PO-32
المودم الصوتيعرض إطارات النقل إلى صوت DPSK للتشغيل في الجهاز
وحدة فك التشفيراستعادة الإطارات والحزم المعيارية من صوت النقل
توليف الطبولعرض صوت الطبول ذي 21 معاملًا محليًا للمعاينة والاختبار

النواة هي C99 مستقلة: لا يوجد وقت تشغيل libc، ولا مكتبات DSP خارجية، ولا واجهات برمجة تطبيقات صوتية للمنصة، ولا إدخال/إخراج ملفات. يتم استخدام الرؤوس المستقلة <stddef.h> و <stdint.h> فقط. مناسبة للأهداف المدمجة والبيئات المعدنية العارية.

الاستخدام مع PO-32

لا يستقبل PO-32 صوت طبول نهائيًا عند نقل صوت أو نمط. بل يستقبل بيانات منظمة:

البياناتالمعنى
حزم التصحيحنقطتا التصحيح لكل آلة (Left و Right)، مع ترميز فتحة الآلة الوجهة في الحزمة
حزم النمطأي الآلات تُطلق على أي خطوات، مع ترميز فتحة النمط الوجهة كـ pattern_number
حزمة الحالةالإيقاع، والتأرجح، وافتراضيات المورف، وقائمة الأنماط المنقولة

ثم يستخدم الجهاز محرك التوليف الداخلي الخاص به لتحويل هذه المعاملات إلى صوت.

على مستوى عالٍ، سير العمل مع الأجهزة الحقيقية هو:

الخطوةما تفعله
1بناء نقل في البرنامج من بيانات التصحيح والنمط والحالة
2عرض هذا النقل إلى WAV أو دفق صوتي مباشر
3وضع PO-32 في تدفق الاستقبال/الاستيراد العادي
4تشغيل صوت النقل المعروض في الجهاز
5يقوم PO-32 بفك تشفير الحزم وكتابتها في فتحات الصوت أو النمط المسماة داخل تلك الحزم

بدء الاستخدام

من جذر المستودع، قم بالتكوين والبناء وتشغيل الاختبارات ثم العرض التوضيحي:

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رحلة ذهاب وإياب دنيا: ترميز وعرض وفك تشفير والتحقق
./build/po32_demoعرض توضيحي شامل: بناء/عرض/فك تشفير إطار النقل بالإضافة إلى توليف الطبول المحلي
./build/po32_pattern_editorتحرير تفاعلي لأنماط PO-32 وتصدير WAV
./build/po32_decode_capture <input.wav> <out-dir>تفريغ الحزم والأنماط من WAV نقل

مشاريع مبنية على libpo32

المشروعما يفعله
Libpo32 for Schwungوحدة توليف طبول بـ 16 صوتًا لـ Schwung على Ableton Move، مدعومة بـ libpo32

واجهة برمجة التطبيقات العامة

الرأسالمسؤولية
core/include/po32.hباني النقل، ومساعدات الحزم، والعارض، ووحدة فك التشفير
core/include/po32_synth.hمولّف الطبول

التوثيق

المستندالغرض
البنيةكيف يعمل برنامج الترميز
البروتوكولتفاصيل تنسيق الأسلاك
واجهة Cمرجع دوال C
التوليفمسار إشارة المولّف
معاملات التصحيحالمعاملات الـ 21
الروابطكيفية كتابة ربط لغة جديد
الأمثلةبرامج الأمثلة المدعومة
الاختبار بالتغذية العشوائيةأدوات التغذية العشوائية والخصائص التفاضلية
المساهمةالإعداد المحلي والفحوصات واتفاقيات الالتزام

هيكل المشروع

المسارالغرض
core/srcتنفيذ C الأساسي
core/includeرؤوس C العامة
core/examplesأمثلة C المدعومة
core/testsتغطية الاختبارات الأساسية
core/fuzzأدوات libFuzzer لكل سطح إدخال غير موثوق
core/docsملاحظات البنية والبروتوكول وواجهة برمجة التطبيقات
bindings/goروابط Go (cgo، تغلف واجهة برمجة التطبيقات العامة الكاملة)

المساهمة

راجع CONTRIBUTING.md للإعداد المحلي وأوامر التحقق وسياسة Conventional Commits المستخدمة لتاريخ متوافق مع SemVer.

الترخيص

حقوق النشر (c) 2026 Eric Lewis. مرخّص بموجب رخصة MIT. راجع LICENSE.

الفئات