عن المشروع
DSPark هي مكتبة DSP صوتية بلغة C++20 تعمل بالرأس فقط، موجهة للمطورين الذين يبنون برمجيات صوتية زمن حقيقي وغير متصل. وهي تجمع المؤثرات والمرشحات ووحدات التركيب والبناء الطيفي، وأدوات التحليل والموسيقى، وإدخال/إخراج الملفات الأصلي، وطبقة إضافات اختيارية. لا تحمل وحدات الإطار أي تبعيات خارجية ولا تتطلب مكتبة DSPark مترجمة بشكل منفصل؛ وقد تستخدم المسارات المحسّنة تعليمات SIMD الموفرة من المترجم خلف حراس المنصات. تقع محولات الإضافات وتطبيق DSParkLab الخاص بنظام Windows فقط خارج الرأس الشامل ولديهما متطلبات تكامل خاصة بالمنصة.
التكامل مباشر: ضم المستودع، وأضفه إلى مسار التضمين، ثم ضمّن الرأس الشامل. يوفر هدف واجهة CMake مسار التضمين ومتطلب C++20، ويمكن أيضًا استهلاك المشروع عبر find_package أو FetchContent. يتم إنشاء المعالجات وتهيئتها باستخدام prepare(AudioSpec) قبل أن يستدعي مالك تدفق الصوت processBlock()؛ وفي مضيف، يمكن إنشاء AudioBufferView فوق مؤشرات القنوات المملوكة للمضيف لتجنب التخصيص داخل دالة الاستدعاء.
تشمل مجالات القدرات المرشحات والمعادلة (Biquad، StateVariableFilter، LadderFilter، FilterEngine، Equalizer، CrossoverFilter)؛ الديناميكيات والتحكم في المستوى (Compressor، Limiter، NoiseGate، Expander، DynamicEQ، MultibandCompressor، DeEsser)؛ النمذجة اللاخطية والتماثلية (Saturation، Clipper، TapeMachine، TubePreamp، TransformerModel، wdf::*)؛ المعالجة الزمنية والنغمية والمكانية (Delay، AlgorithmicReverb، Reverb، PitchShifter، TimeStretch، PitchCorrector، GranularProcessor)؛ المعالجة الطيفية (FFTReal، Convolver، ZeroLatencyConvolver، SpectralProcessor، SpectralFreeze، SpectralDenoiser)؛ التحليل والقياس (SpectrumAnalyzer، LoudnessMeter، LoudnessNormalizer، PitchDetector، OnsetDetector، BeatTracker، LoopFinder)؛ التركيب والموسيقى (Oscillator، WavetableOscillator، ADSREnvelope، ChordDetector، KeyDetector، harmony::*)؛ والبنية التحتية (AudioBuffer، ProcessorChain، Resampler، Oversampling، Dither، SpscQueue، كتل الحالة ذات الإصدارات).
يغطي إدخال/إخراج الملفات قراءة/كتابة WAV وMP3، وقراءة/كتابة ملف MIDI القياسي (الصيغ 0 و1 و2 للقراءة؛ 0 و1 للكتابة)، وفك ترميز FLAC الأصلي فقط، مع إرجاع عمليات الكتابة false. يؤدي تعريف DSPARK_NO_FILE_IO إلى حذف جميع رؤوس إدخال/إخراج الملفات للأهداف التي لا تدعم نظام الملفات. يتم دعم تطوير الإضافات عبر محولات VST3 وCLAP الأصلية بالإضافة إلى macOS Audio Unit v2، وتغطي المعاملات والأتمتة والحالة والزمن الكامن والإبلاغ عن الذيل والتجاوز وتخطيطات أحادية/ستيريو والسلاسل الجانبية والنقل وآلات MIDI والعرض غير المتصل والإعدادات المسبقة للمصنع؛ يمكن كتابة محررات مخصصة بـ HTML/CSS/JavaScript وتضمينها عبر طبقة WebView الخاصة بالمنصة، مع اشتراط WebKitGTK وقت التشغيل على Linux.
يُوثّق أمان الزمن الحقيقي كعقد لكل طريقة بدلًا من خاصية شاملة: قد يؤدي الإنشاء وprepare() واستعادة الحالة والتهيئة الخاصة بالإعداد فقط إلى التخصيص ويجب ألا تعمل بالتزامن مع المعالجة؛ المعالج المهيأ له مالك واحد لتدفق الصوت؛ تفترض نشر المعاملات عادة كاتب تحكم واحد ومالك صوت واحد. تغطي مصفوفة CI في v1.7.0 أنظمة Windows (MSVC x64/ARM64)، وLinux (GCC x64/ARM64، Clang x64)، وmacOS (Clang ARM64)، وWebAssembly (Emscripten scalar وSIMD128)، وبوابة ترجمة مدمجة مع تعطيل إدخال/إخراج الملفات والاستثناءات وRTTI؛ تستهدف الرؤوس iOS وAndroid لكن تفتقر إلى مهام CI مخصصة. يتحقق CI أيضًا من اكتفاء الرؤوس المثبتة ذاتيًا، والبناء الخالي من التحذيرات، والمعقمات، ومسارات النشر المتزامنة، والأمثلة، ومضيفي اختبار الإضافات والمدققين، والتوثيق المولد. مهمة متجه الجهارة EBU الرسمية تُنفذ على أساس بذل أفضل جهد لأن مواد الاختبار المرخصة تُنزّل بشكل منفصل.
DSParkLab هو تطبيق Win32/Direct3D 11 خاص بنظام Windows فقط لاختبار المعالجات تفاعليًا؛ تقتصر مصادر Dear ImGui وminiaudio المضمنة فيه على التطبيق وليست تبعيات للإطار. يتضمن التوثيق مرجع API مولدًا، وكتاب وصفات موجهًا للمهام، وأمثلة مستقلة، ودليل إضافات، ونموذج خيوط، وجدول مقاييس الجودة مع الإعدادات المقاسة والتحذيرات، ودليل ترحيل v1.7.0، وسجل تغييرات. يضيف v1.7.0 أدوات التوقيت والتحرير الموسيقي، ومعالجة النغمة والطيف، وفك ترميز FLAC بدون تبعيات ودعم ملفات MIDI، وتحديثات العقود العامة مثل نوافذ التحليل الواعية بالمعدل ومعاملات biquad مزدوجة الدقة. المشروع مرخص بموجب MIT ويصونه Cristian Moresi.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.