প্রকল্প সম্পর্কে
NoiseCraft হলো সাউন্ড সিন্থেসিস ও সঙ্গীত তৈরির জন্য একটি ওপেন-সোর্স, ব্রাউজার-ভিত্তিক ভিজ্যুয়াল প্রোগ্রামিং ভাষা ও প্ল্যাটফর্ম। এর ডিজাইন PureData এবং Max/MSP দ্বারা কিছুটা অনুপ্রাণিত, এবং এর লক্ষ্য হলো সঙ্গীতের ধারণা বিনিময়ের জন্য একটি কমিউনিটি গড়ে তোলা। প্রকল্পটি এখনও কাজ চলছে এবং README-তে স্পষ্টভাবে অবদানকারীদের এটি তৈরি ও ডিবাগ করতে সহায়তার আমন্ত্রণ জানানো হয়েছে।
আপনি noisecraft.app-এ এটি ব্যবহার করে দেখতে পারেন এবং noisecraft.app/browse-এ শেয়ার করা প্রকল্পগুলো ব্রাউজ করতে পারেন। এটি বর্তমানে Chrome, Firefox এবং Edge-এ কাজ করে, কিন্তু web audio বাস্তবায়নের সমস্যার কারণে Safari-তে নির্ভরযোগ্যভাবে কাজ করে না। মোবাইল সাপোর্টকে অপর্যাপ্ত বলা হয়েছে, এবং বাগ প্রত্যাশিত।
ডিজাইন নীতিমালা:
- মিনিমালিস্টিক দর্শন: কোনো ওয়েব ফ্রেমওয়ার্ক ছাড়া সাধারণ JS/HTML/CSS, ইচ্ছাকৃতভাবে ন্যূনতম নির্ভরতা, প্রয়োজনীয় ফিচারে মনোযোগ এবং ফিচার ক্রিপ এড়ানো।
- UI ডিজাইন: শেখার বক্ররেখা ও ঘর্ষণ কমানো, ইন্টারফেস সরল ও অগোছালো না রাখা, যেখানে সম্ভব ড্রপ-ডাউন মেনু ও লুকানো অপশন এড়ানো, পরিচিত কী কম্বো ব্যবহার এবং অস্পষ্টতা এড়ানো।
- ভাষা ডিজাইন: শুধুমাত্র একটি ডেটা টাইপ (ফ্লোটিং-পয়েন্ট সংখ্যা), এবং কন্ট্রোল সিগন্যাল ও অডিও সিগন্যালের মধ্যে কোনো পার্থক্য নেই।
- ব্যবহারিক বিবেচনা: ব্যান্ডউইথ ও সার্ভার খরচ কম রাখতে ছবি ও সাউন্ড স্যাম্পল এড়ানো; স্যাম্পল এড়ানো ব্যবহারকারীদের সাউন্ড জেনারেশন নিয়ে ভাবতেও উৎসাহিত করে।
আর্কিটেকচার নোট:
- সিঙ্গেল-পেজ অ্যাপের বদলে মাল্টি-পেজ ডিজাইন, তাই New, Help এবং Browse নতুন ট্যাবে খোলে, যা দুর্ঘটনাক্রমে কাজ হারানোর ঝুঁকি কমায় এবং /browse ও /help-এ সরাসরি লিংক সক্ষম করে।
- ইমিডিয়েট-মোড GUI: মডেল অ্যাকশনে UI পুনরায় আঁকা হয়, যা পূর্ববর্তী প্রকল্প অবস্থা সংরক্ষণ করে undo/redo সহজ করে, সম্পূর্ণ পুনরায় আঁকা এড়াতে ক্যাশিং সহ।
- অডিও AudioView ক্লাস (public/audioview.js) দ্বারা উৎপাদিত হয়, যা অডিও গ্রাফকে একটি AudioWorklet-এ চালিত JavaScript-এ কম্পাইল করে। Web Audio API শুধুমাত্র আউটপুটের জন্য ব্যবহৃত হয়, সিন্থেসিসের জন্য নয়, যাতে ব্রাউজার ও ডিভাইস জুড়ে সাউন্ড সামঞ্জস্যপূর্ণ থাকে।
- প্রকল্পগুলো সহজে পার্স করা যায় এমন JSON (.ncft) হিসেবে সংরক্ষিত হয়, যা বাহ্যিক টুলের সুযোগ দিতে পারে, README-তে প্রকল্পগুলো VST-তে কম্পাইল করার বিষয়ে অনুমান করা হয়েছে।
অবদান রাখা: বাগ ফিক্স স্বাগত, কিন্তু প্রকল্পটি নতুন ফিচার ও বড় পরিবর্তনের ব্যাপারে রক্ষণশীল; অবদানকারীদের প্রথমে প্রস্তাবিত পরিবর্তন নিয়ে আলোচনা করতে একটি ইস্যু খোলার অনুরোধ করা হয়েছে।
ডেভেলপমেন্ট সেটআপ: Chrome সুপারিশ করা হয়। Node.js এবং npm ইনস্টল করুন, npm install চালান, তারপর node server.js; অ্যাপটি http://localhost:7773/-এ পাওয়া যায়। টেস্ট node tests.js দিয়ে চলে। Docker নির্দেশনা দেওয়া আছে (docker build . -t noisecraft; docker run -p 7773:7773 -d noisecraft)। সার্ভার কনফিগারেশন পরিবেশ ভেরিয়েবল DB_FILE_PATH (ডিফল্ট ./database.db) এবং HTTP_PORT_NO (ডিফল্ট 7773) ব্যবহার করে।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.