আমি বহু বছর ধরে পলিফোনিক সংগীতে পিচ সনাক্তকরণ নিয়ে গবেষণা করতে ব্যয় করেছি - এমপি 3 রেকর্ডিংয়ের মধ্যে গিটারের একক নোট সনাক্ত করার মতো। আমি উইকিপিডিয়ায় একটি বিভাগও লিখেছিলাম যা প্রক্রিয়াটির একটি সংক্ষিপ্ত বিবরণ দেয় (নীচের লিঙ্কে "পিচ সনাক্তকরণ" উপবিধানটি দেখুন)।
যখন একটি একক কী পিয়ানোতে চাপানো হয়, আমরা যা শুনি তা কেবলমাত্র শব্দ কম্পনের একটি ফ্রিকোয়েন্সি নয়, বিভিন্ন গাণিতিকভাবে সম্পর্কিত ফ্রিকোয়েন্সিগুলিতে সংঘটিত একাধিক শব্দ কম্পনের সংমিশ্রণ । বিভিন্ন ফ্রিকোয়েন্সিগুলিতে এই সংমিশ্রনের কম্পনের উপাদানগুলিকে সুরেলা বা পার্টিয়াল হিসাবে উল্লেখ করা হয়। উদাহরণস্বরূপ, আমরা পিয়ানোতে মিডিল সি কী টিপলে, সংমিশ্রনের সুরেলাগুলির পৃথক ফ্রিকোয়েন্সিগুলি 261.6 হার্জ হার্ট থেকে মৌলিক ফ্রিকোয়েন্সি হিসাবে শুরু হবে, 523 হার্জ 2 য় হারমোনিক হবে, 785 হার্জ 3 য় হারমোনিক হবে, 1046 হার্জ হবে চতুর্থ হারমোনিক হোন ইত্যাদি The
আমি শীর্ষ স্তরের ফ্রিকোয়েন্সি সন্ধান করে সম্ভাব্য হারমোনিকগুলি সনাক্ত করতে প্রথমে একটি পরিবর্তিত ডিএফটি লোগারিদমিক ট্রান্সফর্ম ব্যবহার করি (নীচের চিত্রটি দেখুন)। আমি আমার পরিবর্তিত লগ ডিএফটির জন্য যেভাবে ডেটা সংগ্রহ করি সে কারণে, আমাকে সিগন্যালে উইন্ডোইং ফাংশন প্রয়োগ করতে হবে না, সংযোজন এবং ওভারল্যাপ করতে হবে না । এবং আমি ডিএফটি তৈরি করেছি যাতে এর ফ্রিকোয়েন্সি চ্যানেলগুলি লগারিথ্মিকভাবে অবস্থিত যাতে ফ্রিকোয়েন্সিগুলির সাথে সরাসরি প্রান্তিককরণের জন্য যেখানে গিটার, স্যাক্সোফোন ইত্যাদির নোটগুলির দ্বারা সুরেলা তৈরি হয় etc.
এখন অবসর গ্রহণের পরে, আমি পিচস্কোপ প্লেয়ার নামে একটি নিখরচায় অ্যাপ্লিকেশনটির মধ্যে আমার পিচ সনাক্তকরণ ইঞ্জিনের উত্স কোডটি প্রকাশ করার সিদ্ধান্ত নিয়েছি । পিচস্কোপ প্লেয়ার ওয়েবে উপলভ্য, এবং আপনি আপনার পছন্দের একটি এমপি 3 ফাইলে আমার অ্যালগরিদমকে কাজ করতে উইন্ডোজের জন্য এক্সিকিউটেবল ডাউনলোড করতে পারেন। গিটহাব ডট কমের নীচের লিঙ্কটি আপনাকে আমার সম্পূর্ণ উত্স কোডে নিয়ে যাবে যেখানে আপনি দেখতে পাচ্ছেন যে আমি কীভাবে কাস্টম লোগারিদমিক ডিএফটি ট্রান্সফর্মের মাধ্যমে সুরেলাগুলি সনাক্ত করতে পারি এবং তারপরে পার্টিয়ালগুলি (হারমোনিকস) সন্ধান করি যার ফ্রিকোয়েন্সিগুলি সঠিক সংখ্যার সম্পর্ককে সন্তুষ্ট করে যা একটি 'সংজ্ঞা দেয়' পিচ '।
আমার পিচ সনাক্তকরণ অ্যালগরিদম আসলে একটি দুটি পর্যায় প্রক্রিয়া: ক) প্রথমে স্কেলপিচ সনাক্ত করা হয় ('স্কেলপিচ' এর 12 টি পিচের মান রয়েছে: {ই, এফ, এফ #, জি, জি #, এ, এ #, বি, সি, সি #, ডি , ডি #}) খ) ও পরে ScalePitch নির্ধারিত হয়, তারপর অক্টেভ 4 সম্ভব অক্টেভ-প্রার্থীদের নোট জন্য সব সুরবিজ্ঞান পরীক্ষা দ্বারা গণনা করা হয়। অ্যালগরিদমটি একটি পলিফোনিক এমপি 3 ফাইলের মধ্যে সময়ে যে কোনও মুহুর্তে সর্বাধিক প্রভাবশালী পিচ (একটি সংগীতের নোট) সনাক্ত করতে ডিজাইন করা হয়েছে। এটি সাধারণত একটি যন্ত্রের একক নোটের সাথে মিলে যায়। আমার 2 স্টেজ পিচ সনাক্তকরণ অ্যালগরিদমের সি ++ উত্স কোডে যারা আগ্রহী তারা গিটহাব ডট কমের এসপিচালেকসিপিপি ফাইলের মধ্যে এসিমেট_স্কেলপিচ () ফাংশন থেকে শুরু করতে চাইতে পারেন।
https://github.com/CreativeDetectors/PitchScope_Player
https://en.wikipedia.org/wiki/Transcription_(music)#Pitch_detection
নীচে একটি পলিফোনিক এমপি 3 রেকর্ডিংয়ে গিটার একক এর 3 সেকেন্ডের জন্য লগারিদমিক ডিএফটি (আমার সি ++ সফ্টওয়্যার দ্বারা নির্মিত) এর চিত্র দেওয়া আছে। এটি দেখায় যে কীভাবে একক বাজানোর সময় গিটারে স্বতন্ত্র নোটগুলির জন্য সুরেলাগুলি প্রদর্শিত হয়। এই লোগারিদমিক ডিএফটি-র প্রতিটি নোটের জন্য আমরা এর একাধিক সুরেলা উল্লম্বভাবে প্রসারিত দেখতে পাচ্ছি, কারণ প্রতিটি সুরেলা একই সময়-প্রস্থের হবে। নোটটির অক্টাভা নির্ধারিত হওয়ার পরে আমরা ফান্ডামেন্টালের ফ্রিকোয়েন্সি জানি।
নীচের চিত্রটি অক্টেভে সনাক্তকরণের অ্যালগরিদমটি দেখায় যা আমি সঠিক অষ্টাভ-প্রার্থী নোট (যা সঠিক ফান্ডামেন্টাল) বাছাই করতে বিকাশ করেছি, একবার সেই নোটের জন্য স্কেলপিচ নির্ধারণ করা হয়েছে। সি ++ তে এই পদ্ধতিটি দেখতে ইচ্ছুকদের ফিনড্যাঙ্কিডিডালসারসিপি নামে পরিচিত ফাইলের ভিতরে থাকা ক্যালস_বেস্ট_অ্যাকটা_ক্যানডিট () ফাংশনে যেতে হবে, যা গিটহাবের আমার উত্স কোডে রয়েছে।