عن المشروع

caddy-midi هو معالج HTTP لـ Caddy يقوم بتقديم ملفات Standard MIDI كصوت مُصنع. يتم رندرة طلب ملف MIDI من خلال SoundFont وإعادته كتدفق WAV، مما يسمح للمتصفحات بتشغيله باستخدام وسم صوت بسيط دون الحاجة إلى JavaScript. تعتمد عملية التصنيع على go-meltysynth بلغة Go الصرفة، مما ينتج ملفاً ثنائياً استاتيكياً واحداً بدون cgo، وبدون libfluidsynth، وبدون ALSA، ولا يتطلب وجود بطاقة صوت في الخادم. يقوم المعالج بتسجيل نفسه ليعمل قبل خادم الملفات، مع تمرير الطلبات غير المتطابقة أو غير الموجودة. تشمل خيارات التكوين تحديد مسار soundfont، ومعدل العينة، ومدة ذيل الصوت لتلاشي الصدى، ودليل التخزين المؤقت، والحد الأقصى لحجم الملف، وامتدادات الملفات المحددة. يتم تقديم المخرجات بصيغة WAV لأن تنسيق PCM يسمح بحساب المدة الدقيقة مسبقاً، مما يمكن Caddy من دعم طلبات HTTP range، والتنقل، والاستئناف بشكل أصلي. يتم تخزين النتائج المرندرة مؤقتاً على القرص وإعادة استخدامها باستخدام هاش لمحتويات ملف MIDI. يتم التعامل مع التزامن بأمان باستخدام singleflight وعمليات إعادة تسمية الملفات الذرية (atomic). يظل استخدام الذاكرة منخفضاً لأن عملية التصنيع تعالج الصوت في كتل ثابتة الحجم. تشمل القيود عدم وجود مخرجات أجهزة MIDI حية، ودعم SoundFont v2 والعينات ذات 16 بت فقط، وSoundFont واحد لكل كتلة معالج.