عن المشروع
chalkwalk-dsp هي مكتبة C++ صغيرة لمعالجة الصوت الرقمي مقسّمة إلى هدفين. هدف الأساسيات، chalkwalk::dsp، هو header-only وخالٍ من الاعتماديات؛ أما هدف القياس، chalkwalk::dsp::measure، فمنفصل لأنه يجلب اعتمادية libebur128 لا يحتاج إلى بنائها سوى المستهلكين الراغبين في الحصول على قيمة جهارة.
الأساسيات (chalkwalk::dsp):
- Svf.h — مرشح متغيّر الحالة من Cytomic يوفّر تمريراً منخفضاً وتمريراً عالياً وتمريراً نطاقياً وnotch من زوج قطب واحد. يدعم set(freq, Q, sampleRate) وsetCoeffs(g, k) للمستدعين الذين ينسّبون المعاملات بأنفسهم.
- PolyBlep.h — تصحيح خطوة محدود النطاق لمذبذبات المنشار والنبض.
- SoftClip.h — سقف ذي ركبة ناعمة يكون وحدة تماماً تحت الركبة.
- Interpolation.h — استيفاء Hermite من أربع نقاط لقراءات المخزن المؤقت الكسرية.
- Denormal.h — تنظيف الحالة كي لا يتباطأ مرشح تكراري خامل.
الأدوات:
- Measure.h — الذروة وrms وعامل القيمة القصوى وdB والسطوع والنغمة؛ يعتمد فقط على chalkwalk::dsp.
- Loudness.h — الجهارة المتكاملة بوحدة LUFS؛ يعتمد على chalkwalk::dsp::measure وlibebur128.
الاستخدام هو header-only: أضف مجلد التضمين أو استخدم المكتبة كمجلد فرعي CMake واربط chalkwalk::dsp، واختيارياً chalkwalk::dsp::measure للجهارة. يلاحظ README أن Measure.h يعمل مع هدف الأساسيات وحده، لذا فإن الاستنساخ بدون --recursive يكفي ما لم تكن هناك حاجة إلى جهارة BS.1770.
البناء والاختبار: cmake -B build && cmake --build build && ctest --test-dir build. صُمّم المشروع ليُبنى بشكل مستقل، وهو ما يصوغه README كاختبار لحدود الاستخلاص.
يوثّق README الدافع وراء المكتبة: كانت هناك تطبيقات مكرّرة عبر مكوّنين إضافيين تختلف بطرق جوهرية. تشمل الأمثلة إشارة تصحيح polyBLEP معكوسة عزّزت عدم الاستمرارية بدلاً من إلغائها، وتقييد عرض النبض مثبّتاً عند [0.05, 0.95] يُوصف بأنه خاطئ عند الترددات المنخفضة والعالية على حد سواء، إذ ينبغي أن يتدرّج الحد مع زيادة الطور، وغياب تنظيف denormal عن مرشح تكراري، وحراسات مرشح لـ tan() قرب Nyquist وقطع التردد الصفري. جُمِّع كود القياس لأن الذروة وrms كانا موجودين ثلاث مرات وfundamentalHz مرتين؛ ويذكر README أن كاشفاً واحداً قرأ 294.7 هرتز لنغمة ترددها 440 هرتز. تُعايَر القياسات مقابل إشارات اصطناعية ذات إجابات معروفة، ويُفحص integratedLufs مقابل أداة ebur128 في ffmpeg بتطابق ضمن 0.05 LU.
الترخيص: MIT. libebur128 المرخّصة MIT مضمّنة كوحدة فرعية في modules/libebur128 لهدف القياس؛ ولا تربط الأساسيات أي شيء. المشروع جزء من منظومة إضافات chalkwalk إلى جانب chalkwalk-music.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.