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

Waveform Playlist হলো ব্রাউজারের জন্য একটি মাল্টিট্র্যাক অডিও এডিটর ও প্লেয়ার, যা React, Tone.js এবং Web Audio API-এর উপর নির্মিত। এটি ক্যানভাসে ওয়েভফর্ম রেন্ডার করে এবং ড্র্যাগ-অ্যান্ড-ড্রপ ক্লিপ এডিটিং সমর্থন করে, ফলে এটি Audacity-এর মতো ডেস্কটপ এডিটরগুলোর একটি ওয়েব-ভিত্তিক বিকল্প। README-তে বর্ণিত মূল সক্ষমতাগুলো: - মাল্টি-ট্র্যাক এডিটিং: প্রতি ট্র্যাকে একাধিক ক্লিপ, ড্র্যাগ-টু-মুভ এবং ট্রিম হ্যান্ডেলসহ। - ওয়েভফর্ম ভিজ্যুয়ালাইজেশন: জুম কন্ট্রোলসহ ক্যানভাস রেন্ডারিং, এবং দ্রুত লোডিংয়ের জন্য ঐচ্ছিক পূর্ব-গণনা করা পিকস। - ইফেক্ট: Tone.js ইফেক্টের একটি লাইব্রেরি (রিভার্ব, ডিলে, ফিল্টার, ডিস্টরশন এবং অন্যান্য), রিয়েল-টাইম প্যারামিটার কন্ট্রোল এবং একটি মাস্টার ইফেক্ট চেইনসহ। - রেকর্ডিং: AudioWorklet-ভিত্তিক ক্যাপচার, লাইভ ওয়েভফর্ম প্রিভিউ, VU মিটারিং, ওভারডাব এবং Web Components ভ্যারিয়েন্টে পাঞ্চ-ইন রিপ্লেসসহ। - এক্সপোর্ট: পৃথক ট্র্যাক বা সম্পূর্ণ মিক্সের WAV এক্সপোর্ট, অগ্রগতি রিপোর্টিংসহ। - অ্যানোটেশন: কীবোর্ড নেভিগেশন ও ড্র্যাগ এডিটিংসহ সময়-সিঙ্কড টেক্সট অ্যানোটেশন। - MIDI: MIDI ফাইল পার্সিং, পিয়ানো-রোল ভিজ্যুয়ালাইজেশন এবং SoundFont বা PolySynth প্লেব্যাক। - থিমিং: ডার্ক ও লাইট মোডসহ কাস্টমাইজযোগ্য থিম। - TypeScript: টাইপ ডেফিনিশন অন্তর্ভুক্ত। ব্যবহার কম্পোনেন্ট-ভিত্তিক। একটি সাধারণ সেটআপে UI-কে WaveformPlaylistProvider-এ মোড়ানো হয়, createTrack এবং createClipFromSeconds-এর মাধ্যমে তৈরি ট্র্যাক সরবরাহ করা হয়, এবং PlayButton, PauseButton, StopButton ও Waveform কম্পোজ করা হয়। হুকগুলো অডিও লোডিং (useAudioTracks), ট্রান্সপোর্ট কন্ট্রোল (usePlaylistControls), প্লেব্যাক অ্যানিমেশন, জুম, ডাইনামিক ইফেক্ট এবং WAV এক্সপোর্ট কভার করে। Tone.js এবং @dnd-kit/react হলো পিয়ার ডিপেন্ডেন্সি, যা আলাদাভাবে ইনস্টল করতে হয়। প্রকল্পটি কয়েকটি প্যাকেজের সেট হিসেবে সংগঠিত: ব্রাউজার কম্পোনেন্ট ও হুক, কোর টাইপ ও ইউটিলিটি, একটি ফ্রেমওয়ার্ক-অজ্ঞেয় টাইমলাইন ইঞ্জিন, স্টাইলড UI কম্পোনেন্ট, একটি Tone.js প্লেআউট ইঞ্জিন, এবং পিক এক্সট্র্যাকশন। ঐচ্ছিক প্যাকেজগুলো MIDI, অ্যানোটেশন, রেকর্ডিং, শেয়ার্ড AudioWorklet প্রসেসর, স্পেকট্রোগ্রাম রেন্ডারিং এবং পিচ-সংরক্ষণকারী প্লেব্যাক রেটসহ একটি HTMLMediaElement-ভিত্তিক প্লেআউট যোগ করে। একটি পরীক্ষামূলক Web Components স্তর (Lit-ভিত্তিক, React প্রয়োজন নেই) ডিক্লারেটিভ daw-track এবং daw-clip এলিমেন্ট, একটি ইম্পারেটিভ এডিটর API, নেটিভ Web Audio ও Tone.js-এর মধ্যে অ্যাডাপ্টার পছন্দ, কোলিশন ডিটেকশনসহ ক্লিপ মুভ/ট্রিম/স্প্লিট, আনডু/রিডু, কীবোর্ড শর্টকাট, ফাইল ড্রপ, মিক্সড মিটার ও টেম্পো পরিবর্তনসহ মেট্রোনোম, টেম্পো অটোমেশন, এবং ঐচ্ছিক ইন-ব্রাউজার Faust DSP কম্পাইলেশনসহ WAM 2.0 প্লাগইন হোস্টিং প্রদান করে। একটি স্পেক ডকুমেন্ট এলিমেন্ট ক্যাটালগ এবং মাইগ্রেশন ফেজ বর্ণনা করে। ডকুমেন্টেশনে লাইভ ইন্টারঅ্যাকটিভ উদাহরণ, গেটিং-স্টার্টেড গাইড এবং একটি API রেফারেন্স রয়েছে। ব্রাউজার সমর্থনের জন্য একটি আধুনিক Web Audio API ইমপ্লিমেন্টেশন প্রয়োজন (Chrome, Firefox, Safari, Edge)। প্রকল্পটি MIT লাইসেন্সের অধীন এবং Sourcefabric-এর Airtime প্রকল্প থেকে উদ্ভূত।