প্রকল্প সম্পর্কে

SyntaxWave একটি পরীক্ষামূলক অডিও প্রোগ্রামিং পরিবেশ যা লাইভ কোডিং পারফর্মার এবং অ্যালগরিদমিক সঙ্গীত অন্বেষণকারীদের লক্ষ্য করে তৈরি। টাইমলাইন-ভিত্তিক DAW-এর পরিবর্তে, এটি কোডকে বাদ্যযন্ত্র হিসেবে বিবেচনা করে: অসিলেটর, এনভেলপ, ফিল্টার, ডিলে লাইন এবং গ্রানুলার সিন্থেসিসের জন্য কীওয়ার্ড সহ একটি কাস্টম ডোমেইন-স্পেসিফিক ভাষা ভেক্টরাইজড অডিও অপারেশনে কম্পাইল হয়, README-তে দাবি করা হয়েছে সাধারণ প্যাচের জন্য পাঁচ মিলিসেকেন্ডের কম কম্পাইলেশন সময়। রানটাইম চারটি স্তরে বর্ণিত। একটি এডিটর স্তর ব্রাউজার-ভিত্তিক IDE প্রদান করে যাতে সিনট্যাক্স হাইলাইটিং, DSL অটোকমপ্লিট, ইনলাইন ডকুমেন্টেশন এবং অপারেশনাল ট্রান্সফরমেশনের মাধ্যমে সহযোগিতামূলক সম্পাদনা রয়েছে। একটি কম্পাইলেশন স্তর DSL-কে একটি ইন্টারমিডিয়েট রিপ্রেজেন্টেশনে পার্স করে, এটিকে WebAssembly-এ JIT-কম্পাইল করে এবং বাফার জেনারেশন GPU-তে পাঠায়। একটি অডিও স্তর স্যাম্পল-সঠিক শিডিউলিং এবং মাল্টিচ্যানেল রাউটিংয়ের জন্য প্ল্যাটফর্ম ব্যাকএন্ড (WASAPI, CoreAudio, ALSA, ফলব্যাক হিসেবে Web Audio API) ব্যবহার করে। একটি নেটওয়ার্ক স্তর একটি WebRTC মেশ তৈরি করে যেখানে প্রতিটি নোড প্রযোজক এবং ভোক্তা উভয়ই, CRDT-ভিত্তিক স্টেট সিঙ্ক্রোনাইজেশন সহ যাতে একযোগে সম্পাদনা একই আউটপুটে মিলিত হয়। সহযোগিতা একটি প্রধান বৈশিষ্ট্য: অংশগ্রহণকারীরা একটি বিতরণকৃত অডিও গ্রাফ শেয়ার করে, স্নিপেট শেয়ার করতে পারে, একে অপরের অবদান মিউট বা সোলো করতে পারে এবং স্ট্রিমগুলোকে একটি মাস্টার আউটপুটে একত্রিত করতে পারে। README-তে বলা হয়েছে নোডগুলোর মধ্যে লেটেন্সি ১৫ মিলিসেকেন্ডের নিচে এবং এজ নোডগুলোর মধ্যে নেটওয়ার্ক লেটেন্সি বাজেট ৩০ মিলিসেকেন্ডের নিচে। একটি মাস্টার টাইমলাইন ব্রাউজার প্রতিটি অংশগ্রহণকারীর কোড পরিবর্তনগুলো লেন হিসেবে দেখায় যার নিচে ওয়েভফর্ম থাকে। একটি নিউরাল বিশ্লেষণ পাইপলাইন লাইভ অডিও থেকে বিট গ্রিড, কী সিগনেচার, অনসেট প্যাটার্ন এবং টিমব্রাল ডেসক্রিপ্টর বের করে, স্পেকট্রোগ্রাম, ক্রোমাগ্রাম এবং ওয়েভফর্ম ক্লাস্টারগুলোকে ভিজ্যুয়াল ফিডব্যাক হিসেবে এডিটরে ফিরিয়ে দেয়। জেসচার কন্ট্রোল MIDI ফেডার, অ্যাক্সিলেরোমিটার বা ক্যামেরা-ট্র্যাক করা হাতের অবস্থানকে যেকোনো DSL ভেরিয়েবলে ম্যাপ করে। একটি প্লাগইন আর্কিটেকচার Rust বা C-তে লেখা সিন্থেসিস ইউনিট, ইফেক্ট এবং বিশ্লেষণ মডিউলকে WebAssembly-এ কম্পাইল করে সেশনের মাঝখানে হট-লোড করার সুযোগ দেয়। উল্লিখিত প্রযুক্তিগত স্পেসিফিকেশনের মধ্যে রয়েছে ৪৪.১ kHz থেকে ৩৮৪ kHz পর্যন্ত কনফিগারযোগ্য স্যাম্পল রেট, ৩২ থেকে ৪০৯৬ স্যাম্পল পর্যন্ত বাফার সাইজ, প্রতি নোডে ৫১২টি পর্যন্ত একযোগে ভয়েস, একটি wasm32-wasi প্লাগইন ABI, এবং Windows 10/11, macOS 12+, Linux (x86_64, aarch64) এবং Chrome/Firefox/Edge সমর্থন। প্রকল্পটি একটি একক এক্সিকিউটেবল হিসেবে বিতরণ করা হয় যা একটি স্থানীয় ওয়েব সার্ভার এবং অডিও ব্যাকএন্ড চালু করে, ব্রাউজারে ইন্টারফেস খোলে। একটি ন্যূনতম উদাহরণ হলো `sine freq:440 gain:0.3`, যা Ctrl+Enter দিয়ে চালানো হয়। স্টেজ-ভিত্তিক বৈশিষ্ট্যগুলোর মধ্যে রয়েছে মাল্টি-কার্সর এডিটিং, কোড হিস্ট্রি স্ক্রাবিং, একটি ফ্রিজ মোড যা পরবর্তী অংশ প্রস্তুত করার সময় বর্তমান আউটপুট ধরে রাখে, এবং একটি প্রজেক্টর ভিউ যা UI ক্রোম লুকায়। ইন্টারফেসটি ডেস্কটপ, ট্যাবলেট এবং মোবাইলে রেসপন্সিভ, টাচ জেসচার এবং একটি হ্রাস-লোড মোবাইল মোড সহ। UI স্ট্রিং, টুলটিপ এবং ত্রুটি বার্তা ষোলটি ভাষায় দেওয়া হয়, এবং DSL স্থানীয়কৃত কীওয়ার্ড উপনাম গ্রহণ করে (উদাহরণস্বরূপ `sinus` বা `正弦波`)। README-তে একটি সমন্বিত চ্যাট এবং নলেজ বেসের মাধ্যমে চব্বিশ ঘণ্টা মানব সহায়তার বিজ্ঞাপনও দেওয়া হয়েছে। প্রকল্পটি MIT লাইসেন্সের অধীনে প্রকাশিত এবং লাইভ কোডিং কমিউনিটি, DSP গবেষক এবং ভাষা উৎসাহীদের অবদানের আমন্ত্রণ জানায়; README-তে দুইশতাধিক কমিউনিটি-অবদানকৃত সিন্থেসিস ইউনিট সহ একটি প্লাগইন রিপোজিটরি এবং নিয়মিত অনলাইন কোড জ্যামের উল্লেখ রয়েছে। একটি দাবিত্যাগ নোট করে যে রিয়েল-টাইম অডিও জোরে বা অপ্রত্যাশিত শব্দ তৈরি করতে পারে, তাই ব্যবহারকারীদের আউটপুট লেভেল সতর্কতার সাথে পর্যবেক্ষণ করা উচিত।