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

TastyTunes হলো একটি ডেস্কটপ অ্যাপ্লিকেশন যা StreamMagic প্ল্যাটফর্মের ওপর ভিত্তি করে তৈরি Cambridge Audio নেটওয়ার্ক প্লেয়ারগুলোর জন্য রিমোট কন্ট্রোল হিসেবে কাজ করে। README-তে সমর্থিত মডেল হিসেবে Evo 75/150, CXN100 এবং CXN (V2), MXN10, AXN10, EXN100, Edge NQ এবং 851N-এর নাম উল্লেখ করা হয়েছে, যার উন্নয়ন এবং দৈনিক পরীক্ষা Evo 150-এর মাধ্যমে চালানো হয়। অ্যাপটি লোকালি চলে, ব্যবহারকারীর নিজস্ব নেটওয়ার্কের মাধ্যমে স্ট্রিমারের সাথে যোগাযোগ করে এবং এর জন্য কোনো অ্যাকাউন্ট বা ক্লাউড সার্ভিসের প্রয়োজন হয় না। macOS 11+ (ইউনিভার্সাল, সাইনড এবং নোটারাইজড), Windows 10+ (x64 এবং arm64 কভার করা একটি একক সাইনড ইনস্টলার) এবং Linux (x64 বা arm64 AppImage, যার মধ্যে 64-বিট Raspberry Pi OS অন্তর্ভুক্ত) এর জন্য ইনস্টলার প্রকাশিত হয়েছে। লঞ্চ করার সময় অ্যাপটি SSDP-এর মাধ্যমে নেটওয়ার্কে StreamMagic ডিভাইসগুলো খুঁজে বের করে, এবং যদি কিছু খুঁজে না পাওয়া যায় তবে ম্যানুয়ালি IP অ্যাড্রেস প্রবেশ করানো যায়। একটি ডেমো মোড কোনো হার্ডওয়্যার ছাড়াই বিল্ট-ইন ভার্চুয়াল স্ট্রিমার এবং দুটি স্যাম্পল লাইব্রেরির মাধ্যমে পুরো অ্যাপ্লিকেশনটি পরিচালনা করে। 'Now Playing' সেকশনে ব্লার করা আর্ট ব্যাকড্রপের ওপর বড় অ্যালবাম আর্টওয়ার্ক, ট্র্যাকের বিবরণ, কোডেক, স্যাম্পল রেট, বিট ডেপথ, লসলেস এবং MQA-এর জন্য ফরম্যাট ব্যাজ এবং একটি সিগন্যাল-কোয়ালিটি ইন্ডিকেটর প্রদর্শিত হয়, যার অবস্থা রঙ এবং আকৃতি উভয় দিক থেকেই ভিন্ন হয়। মূল উইন্ডোর পাশাপাশি একটি ফুলস্ক্রিন Display মোড, একটি ফ্রেমলেস অলওয়েজ-অন-টপ মিনি প্লেয়ার এবং একটি ঐচ্ছিক মেনু বার বা সিস্টেম ট্রে প্যানেল অফার করা হয়েছে। লাইব্রেরি ফিচারটি প্রতিটি লোকাল UPnP মিডিয়া সার্ভার এবং স্ট্রিমারের USB স্টোরেজকে Artists, Albums এবং Tracks ভিউতে একত্রিত করে, যা একটি রিবিল্ডেবল লোকাল ইনডেক্স দ্বারা সমর্থিত এবং সব সোর্স জুড়ে 'সার্চ-অ্যাজ-ইউ-টাইপ' সুবিধা প্রদান করে। ফিল্টারিং এবং সর্টিং-এর মধ্যে জেনার, দশক, ফরম্যাট, ডাইনামিক রেঞ্জ এবং অ্যালবাম বনাম কম্পাইলেশনের পার্থক্য অন্তর্ভুক্ত। অ্যালবাম হ্যান্ডলিং-এ ফিচারড গেস্টদের নির্দিষ্ট স্থানে রাখা হয়, কম্পাইলেশনগুলোকে Various Artists-এর অধীনে গ্রুপ করা হয়, মাল্টি-ডিস্ক সেটের জন্য ডিস্ক ডিভাইডার দেখানো হয় এবং মাল্টি-ভলিউম বক্স সেটগুলোকে একটি ভলিউম সিলেক্টরের পেছনে রাখা হয়। অনুপস্থিত আর্টওয়ার্ক Cover Art Archive থেকে পূরণ করা যেতে পারে। লাইব্রেরি প্লেব্যাকের বাইরে এখানে ফেভারিটস, কন্টেন্ট ডেফিনিশনের ওপর ভিত্তি করে লোকালি সংরক্ষিত প্লেলিস্ট, মাল্টি-সিলেক্ট এবং ড্র্যাগ রি-অর্ডারিং সহ একটি কিউ, স্ট্রিমারের ৯৯টি প্রিসেট স্লট (নাম্বার কি-র মাধ্যমে রিকল করা যায়, যার প্রতিটির নিজস্ব ভলিউম থাকতে পারে), টিল্ট এবং ব্যালেন্স সহ একটি সেভেন-ব্যান্ড EQ, সোর্স সুইচিং এবং জেনার ও দশক ক্যাটাগরি সহ radio-browser.info ডিরেক্টরি ব্রাউজিং সুবিধা রয়েছে। সিঙ্কড লিরিক্স LRCLIB থেকে আসে এবং লাইন বাই লাইন হাইলাইট করা হয়; কোনো লাইনে ক্লিক করলে গানটি সেই অংশে চলে যায়। আর্টিস্ট বায়োগ্রাফি এবং অ্যালবামের তথ্য MusicBrainz এবং Wikipedia থেকে নেওয়া হয়, সাথে অ্যাট্রিবিউশন লিঙ্ক দেওয়া থাকে। অডিও অ্যানালাইসিস লোকাল মিডিয়া সার্ভার থেকে ফাইল পড়ে সিক বারে এবং আর্টওয়ার্কের নিচে একটি ওয়েভফর্ম তৈরি করে এবং DR ডাটাবেসের TT-DR পদ্ধতি অনুসরণ করে একটি ডাইনামিক রেঞ্জ ভ্যালু গণনা করে, যা পরবর্তীতে লাইব্রেরিতে ফিল্টার এবং সর্ট অপশন হিসেবে ব্যবহৃত হয়। একটি ক্যাপড রিসেন্টলি-প্লেড লগ এবং বার্ষিক JSON Lines ফাইল হিসেবে লেখা একটি লিসেনিং রেকর্ড ট্র্যাক করে যে কী বাজানো হয়েছে এবং কতক্ষণ; উভয়ই মুছে ফেলা সম্ভব এবং নিষ্ক্রিয় করা যায়। ListenBrainz স্ক্রোবলিং শুধুমাত্র প্রকৃত প্লে-টাইমের পর লিসেন সাবমিট করে এবং ব্যর্থ সাবমিশনগুলো পুনরায় চেষ্টা করে। অটোমেশনের মধ্যে ১৫ মিনিট থেকে দুই ঘণ্টা বা ট্র্যাক শেষ হওয়া পর্যন্ত স্লিপ টাইমার (ঐচ্ছিক ভলিউম ফেড-আউট সহ) এবং সপ্তাহের প্রতিদিনের জন্য শিডিউল অন্তর্ভুক্ত, যা ডিভাইসটিকে ফেড-ইন সহ একটি প্রিসেটে জাগিয়ে তুলতে পারে অথবা স্ট্যান্ডবাই মোডে পাঠাতে পারে। একটি ঐচ্ছিক MCP সার্ভার, যা ডিফল্টভাবে বন্ধ থাকে, অ্যাপের সক্ষমতাগুলোকে Claude Code বা Claude Desktop-এর মতো লোকাল AI এজেন্টদের কাছে উন্মুক্ত করে, যার মধ্যে প্লেব্যাক এবং ভলিউম, প্রিসেট এবং সোর্স, লাইব্রেরি এবং রেডিও, ফেভারিটস, টোন এবং EQ, স্লিপ টাইমার, লিসেনিং রেকর্ড এবং অডিও অ্যানালাইসিস অন্তর্ভুক্ত। এডিটিং টুলগুলো আলাদা এবং চালু না করা পর্যন্ত নিষ্ক্রিয় থাকে, এবং এজেন্টরা UI-এর ভলিউম ক্যাপ, পাওয়ার সেফগার্ড এবং কানেকশন টগলগুলো উত্তরাধিকার সূত্রে পায়। README-তে একটি Home Assistant rest_command উদাহরণও দেখানো হয়েছে যা অতিরিক্ত ইন্টিগ্রেশন ছাড়াই MCP এন্ডপয়েন্টকে কল করে। প্রজেক্টটি স্পষ্টভাবে নথিভুক্ত করে যে কোন নেটওয়ার্ক ট্রাফিক মেশিন থেকে বাইরে যায়: স্ট্রিমার কন্ট্রোল বা লাইব্রেরি ব্রাউজিংয়ের জন্য লোকাল নেটওয়ার্কের বাইরে কিছু পাঠানো হয় না, তবে লিরিক্স, আর্টিস্ট এবং অ্যালবাম কনটেক্সট, মিসিং অ্যালবাম আর্ট, আপডেট চেক এবং রেডিও সার্চ টগল করা সম্ভব, এবং টোকেন যোগ না করা পর্যন্ত স্ক্রোবলিং বন্ধ থাকে। এখানে কোনো অ্যানালিটিক্স, টেলিম্যাট্রি বা অ্যাকাউন্ট সিস্টেম নেই এবং একটি রিকোয়েস্ট কনসোল এবং র-স্ট্রিমার-ট্রাফিক কনসোল বিল্ট-ইন করা হয়েছে। এর স্ট্যাক হলো Electron with electron-vite, React 19, TypeScript, Tailwind CSS v4 এবং Zustand, যেখানে মেইন প্রসেস SSDP এবং স্ট্রিমারের SMOIP WebSocket-এর মাধ্যমে ডিভাইস I/O পরিচালনা করে। স্ট্রিমারকে একক সত্যের উৎস (single source of truth) হিসেবে গণ্য করা হয়: কমান্ড পাঠানো হয়, স্টেট পুশ ব্যাক করা হয় এবং ইন্টারফেস সেই পুশ থেকে রেন্ডার হয়। প্রজেক্টটি GNU General Public License v3.0-এর অধীনে রিলিজ করা হয়েছে, যার উন্নয়ন একটি develop ব্রাঞ্চে চলে এবং CI-তে typecheck, ESLint এবং Prettier চেক চালানো হয়।