প্রকল্প সম্পর্কে
caddy-midi হলো একটি Caddy HTTP হ্যান্ডলার যা Standard MIDI ফাইলগুলোকে সিন্থেসাইজড অডিও হিসেবে পরিবেশন করে। একটি MIDI ফাইলের অনুরোধ SoundFont-এর মাধ্যমে রেন্ডার করা হয় এবং WAV স্ট্রিম হিসেবে ফেরত পাঠানো হয়, যা ব্রাউজারকে কোনো JavaScript ছাড়াই সাধারণ অডিও ট্যাগের মাধ্যমে এটি বাজানোর সুযোগ দেয়। এই সিন্থেসিস প্রক্রিয়াটি বিশুদ্ধ Go-তে go-meltysynth দ্বারা পরিচালিত, যা cgo, libfluidsynth, ALSA বা সার্ভার সাউন্ড কার্ড ছাড়াই একটি একক স্ট্যাটিক বাইনারি তৈরি করে। এই হ্যান্ডলারটি ফাইল সার্ভারের আগে চলার জন্য নিজেকে রেজিস্টার করে এবং অমিল বা অস্তিত্বহীন অনুরোধগুলোকে পাস করে দেয়। কনফিগারেশন অপশনগুলোর মধ্যে রয়েছে সাউন্ডফন্ট পাথ, স্যাম্পল রেট, রিভার্ব ডিকে-র জন্য অডিও টেইল ডিউরেশন, ক্যাশ ডিরেক্টরি, সর্বোচ্চ ফাইল সাইজ এবং নির্ধারিত ফাইল এক্সটেনশন নির্দিষ্ট করা। আউটপুট WAV হিসেবে পরিবেশন করা হয় কারণ PCM ফরম্যাট আগে থেকেই সঠিক ডিউরেশন গণনা করতে দেয়, যা Caddy-কে নেটিভভাবে HTTP range requests, seeking এবং resuming সমর্থন করতে সক্ষম করে। রেন্ডার করা ফলাফলগুলো ডিস্কে ক্যাশ করা হয় এবং MIDI ফাইলের কন্টেন্টের হ্যাশ ব্যবহার করে পুনরায় ব্যবহৃত হয়। singleflight এবং অ্যাটমিক ফাইল রিনেম ব্যবহার করে নিরাপদভাবে কনকারেন্সি পরিচালনা করা হয়। সিন্থেসিস প্রক্রিয়াটি নির্দিষ্ট আকারের ব্লকে অডিও প্রসেস করার কারণে মেমরি ব্যবহার কম থাকে। এর সীমাবদ্ধতাগুলোর মধ্যে রয়েছে লাইভ MIDI হার্ডওয়্যার আউটপুটের অভাব, শুধুমাত্র SoundFont v2 এবং 16-বিট স্যাম্পল সমর্থন এবং প্রতি হ্যান্ডলার ব্লকে একটি মাত্র SoundFont ব্যবহারের সুযোগ।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.