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

Tonal হলো জাভাস্ক্রিপ্টের জন্য একটি সঙ্গীত তত্ত্ব লাইব্রেরি, যা TypeScript-এ বাস্তবায়িত এবং npm প্যাকেজের একটি সংগ্রহ হিসেবে প্রকাশিত। এটি শব্দ বা অডিও প্লেব্যাকের পরিবর্তে সঙ্গীত তত্ত্বের বিমূর্ততার উপর ফোকাস করে: নোট, ইন্টারভাল, কর্ড, স্কেল, মোড, কী, ভয়েসিং, প্রগ্রেশন এবং রিদম। লাইব্রেরিটি ফাংশনাল প্রোগ্রামিং শৈলী অনুসরণ করে। ফাংশনগুলো বিশুদ্ধ, ডেটা পরিবর্তন করা হয় না, এবং সত্তাগুলো ক্লাস ইনস্ট্যান্সের পরিবর্তে সাধারণ ডেটা স্ট্রাকচার হিসেবে উপস্থাপিত হয়। এটি ES6 ইমপোর্ট, ES5 রিকোয়ার এবং সিডিএন স্ক্রিপ্ট ট্যাগের মাধ্যমে সরাসরি ব্রাউজারে কাজ করে। সাধারণ ক্রিয়াকলাপের মধ্যে রয়েছে নোটকে MIDI নম্বর বা ফ্রিকোয়েন্সিতে রূপান্তর করা, ইন্টারভাল দ্বারা নোট ট্রান্সপোজ করা, ইন্টারভাল দূরত্ব পরিমাপ করা, স্কেল নোট এবং ডিগ্রি পুনরুদ্ধার করা, কর্ড নামকরণ এবং কর্ড ইনভার্সন তৈরি করা। README-তে উদাহরণ দেখানো হয়েছে যেমন Note.midi("C4") 60 ফেরত দেয়, Note.freq("a4") 440 ফেরত দেয়, Interval.semitones("5P") 7 ফেরত দেয়, এবং Scale.get("C major").notes সাতটি স্কেল টোন ফেরত দেয়। প্রকল্পটি কেন্দ্রীভূত মডিউলে বিভক্ত, প্রতিটির নিজস্ব README এবং @tonaljs/ উপসর্গযুক্ত প্যাকেজ নাম রয়েছে। এগুলো নোট, MIDI, ইন্টারভাল, ABC নোটেশন, স্কেল এবং স্কেল টাইপ, কর্ড এবং কর্ড টাইপ, কর্ড সনাক্তকরণ, পিচ ক্লাস সেট, ভয়েসিং, ভয়েস লিডিং, ভয়েসিং ডিকশনারি, কী, মোড, প্রগ্রেশন, রোমান সংখ্যা, রিদম প্যাটার্ন, সময় স্বাক্ষর, সময়কাল মান, প্লাস কোর এবং কালেকশন ইউটিলিটি কভার করে। ছাতা টোনাল প্যাকেজ ইনস্টল করলে সমস্ত মডিউল অন্তর্ভুক্ত হয়, যখন পৃথক মডিউল ইনস্টল করলে বান্ডেল আকার হ্রাস পেতে পারে। ডকুমেন্টেশন একটি নিবেদিত সাইট এবং প্রতিটি মডিউল README-তে উপলব্ধ। অবদানগুলিতে সঙ্গীত তত্ত্ব পরিবর্তনের জন্য রেফারেন্স, ডকুমেন্টেশন আপডেট এবং পরীক্ষা অন্তর্ভুক্ত করার আশা করা হয়। লাইব্রেরিটি MIT লাইসেন্সযুক্ত এবং অনুপ্রেরণা হিসেবে বেশ কয়েকটি সঙ্গীত তত্ত্ব লাইব্রেরি তালিকাভুক্ত করে, সাথে এটি ব্যবহার করে এমন প্রকল্পগুলির একটি শোকেসও রয়েছে।