সুচিপত্র:

টিউনার: 9 টি ধাপ
টিউনার: 9 টি ধাপ

ভিডিও: টিউনার: 9 টি ধাপ

ভিডিও: টিউনার: 9 টি ধাপ
ভিডিও: শিখন অভিজ্ঞতার চারটি ধাপ | নতুন পদ্ধতিতে শ্রেনী কার্য পরিচালনা || Learning Cycle || Education & Exam 2024, জুলাই
Anonim
Image
Image
সরঞ্জাম তালিকা (বোর্ড এবং কেভিনের কম্পের একটি ছবি নিন)
সরঞ্জাম তালিকা (বোর্ড এবং কেভিনের কম্পের একটি ছবি নিন)

এই প্রকল্পটি ভিভাডো এবং 7-সেগমেন্ট ডিসপ্লে ব্যবহার করে একটি গিটার টিউনার তৈরি করার জন্য ডিজাইন করা হয়েছিল। একবার টিউনার ইনপুট করা শব্দের ফ্রিকোয়েন্সি খুঁজে পেলে, টিউনার সেই মানটিকে হার্ড-কোডেড ভ্যালুর তালিকার সাথে সঠিক ফ্রিকোয়েন্সিগুলির সাথে তুলনা করবে যা একটি নোটের সঠিক পিচের জন্য স্ট্যান্ডার্ড ফ্রিকোয়েন্সি হিসাবে পরিচিত। তারপর টিউনারটি দেখাবে যে আপনার ইনপুট করা শব্দটি আপনার কাঙ্খিত নোট থেকে কতটা কাছাকাছি বা দূরে। মজার বিষয় হল যে শব্দ তরঙ্গ হল বাস্তব এবং কাল্পনিক উপাদানগুলির সাথে একাধিক সাইনোসয়েডাল তরঙ্গাকৃতির সমন্বয়। যদিও এইগুলি অপরিচিতদের সাথে কাজ করা কঠিন মনে হতে পারে, তবে কয়েকটি উপায় রয়েছে যা আমরা এখনও বাস্তব এবং কাল্পনিক মূল্যবোধের সাথে একটি তরঙ্গ বিশ্লেষণ করতে পারি।

ডেমো:

ধাপ 1: সরঞ্জাম তালিকা (বোর্ড এবং কেভিনের কম্পের ছবি নিন)

প্রথমে আমাদের একটি বেসিস 3 বোর্ড এবং একটি কম্পিউটার প্রয়োজন যা নিম্নলিখিত প্রোগ্রামগুলিকে সমর্থন করে।

পাইথন - স্যাম্পলিং এবং এফএফটির জন্য পাইলাব এবং স্কাইপি ব্যবহার করতে সক্ষম

ভিভাদো - বেসিস 3 বোর্ডের সাথে সংযোগ স্থাপন এবং দৃশ্যত ফলাফল দেখুন

ধাপ 2: ওভারভিউ

ওভারভিউ
ওভারভিউ

একটি টিউনার কয়েকটি গুরুত্বপূর্ণ উপাদান নিয়ে গঠিত: মাইক্রোফোন, স্যাম্পলার, এফএফটি (ফাস্ট ফুরিয়ার ট্রান্সফর্ম), তুলনাকারী, ডিকোডার এবং ডিসপ্লে। মাইক্রোফোনের উদ্দেশ্য ইনপুট তরঙ্গাকৃতি ক্যাপচার করা। স্যাম্পলার মাইক্রোফোনের আউটপুট সিগন্যাল গ্রহণ করে এবং FFT ব্যবহার করে সংকেতকে ফ্রিকোয়েন্সি আকারে আউটপুটে রূপান্তর করে। তারপর FFT এর আউটপুট ব্যবহার করে এবং সর্বোচ্চ মাত্রা এবং এর সাথে যুক্ত ফ্রিকোয়েন্সি 2 দ্বারা ভাগ করলে তরঙ্গাকৃতির পিচের সাথে সম্পর্কিত ফ্রিকোয়েন্সি পাওয়া যাবে। সেই মান তখন তুলনাকারীর মধ্যে যেতে পারে। এটি তখন একটি লুক-আপ টেবিলের সাথে তুলনা করা হয়, যা ইতিমধ্যে সমস্ত নোটের নিখুঁত পিচের জন্য ফ্রিকোয়েন্সি মান নির্ধারণ করেছে। তুলনাকারীকে কাঙ্খিত নোটের জন্য একটি ইনপুট দেওয়া হয়, যা তারপর এটি পছন্দসই নোটটিকে তার সঠিক ফ্রিকোয়েন্সি থেকে লুক-আপ টেবিলের সাথে মেলে। তারপর তুলনাকারী সর্বোচ্চ ফ্রিকোয়েন্সি থেকে নিকটতম ফ্রিকোয়েন্সি সহ নোট নির্বাচন করবে। তুলনাকারী দুটি মান তুলনা করবে এবং ফ্রিকোয়েন্সিটির মানটি পছন্দসইটির কাছাকাছি দেখবে এবং তারপরে সেই ডেটাটিকে একটি সংকেতে রাখবে। তুলনাকারী সেই সংকেতটি ডিকোডারে পাঠাবে, যেখানে ডিকোডার নোটের যথার্থতা দেখানোর জন্য 7-সেগমেন্ট ডিসপ্লের অ্যানোডগুলির জন্য ইনপুট নির্বাচন করবে।

ধাপ 3: Wav ফাইল

Wav ফাইল
Wav ফাইল

এই ধাপে, আমরা একটি পিচের একটি wav ফাইল গ্রহণ করব এবং সেই পিচের ফ্রিকোয়েন্সি আউটপুট করার চেষ্টা করব।

প্রথমে আপনার একটি নোটের একটি wav ফাইল দরকার। এই উদাহরণে আমরা একটি 16 বিট স্টিরিও ওয়েভ ফাইল ব্যবহার করব যার নমুনা হার 44.1kHz। এটি হয় DAW তে তৈরি করা যেতে পারে যেমন গ্যারেজব্যান্ড বা ডাউনলোড। এই উদাহরণের জন্য, গ্যারেজব্যান্ডে আমাদের দ্বারা উত্পন্ন A4 440Hz সাইন ওয়েভ এখানে ডাউনলোড করা যাবে।

ধাপ 4: পাইথন- পাইলাব এবং স্কিপির ব্যবহার

পাইথন- পাইলাব এবং স্কিপির ব্যবহার
পাইথন- পাইলাব এবং স্কিপির ব্যবহার

আমরা "ফাস্ট ফুরিয়ার ট্রান্সফর্ম" করার জন্য পাইথন লাইব্রেরি ব্যবহার করেছি। অনলাইন রিসোর্স আমাদের অনুকরণ করতে এবং পাইল্যাব এবং স্কিপিতে কী উপকারী তা দেখতে দেয়।

1. আপনি যদি পাইল্যাব বা স্কাইপি ইনস্টল না করে থাকেন, তাহলে আপনাকে এটি করতে হবে। অথবা, পাইচার্মের একটি খুব ভাল বৈশিষ্ট্য আছে, যখন পাইল্যাব বা স্কাইপি আমদানি করার চেষ্টা করা হয়, সেখানে একটি স্কুইগলি আন্ডারলাইন আপনাকে বলছে যে আপনি এখনও লাইব্রেরি ইনস্টল করেননি। তারপরে আপনি সরাসরি লাল আলো-বাল্ব টিপে সেগুলি ইনস্টল করতে পারেন (যখন আপনি আপনার কার্সারটি স্কুইগলি আন্ডারলাইনের কাছে রাখবেন তখন এটি প্রদর্শিত হবে)।

2. scipy.io.wavfile.read ফাংশন ব্যবহার করে, নমুনা wav ফাইল থেকে ডেটা পড়ুন এবং বের করুন। Pylab.fft দ্বারা ডেটা দিয়ে চালান, এটি আপনাকে শক্তির মাত্রার একটি তালিকা ফিরিয়ে দেবে।

3. তারপর তালিকা থেকে নির্গত শক্তি সর্বোচ্চ খুঁজে। তালিকার সূচকটি দেখুন যেখানে সর্বাধিক শক্তি দেখা যায় কারণ সেই শক্তির সাথে কোন ফ্রিকোয়েন্সি যুক্ত তা দ্রুত খুঁজে বের করার উপায়। অবশেষে সর্বোচ্চ ফ্রিকোয়েন্সি ফেরত দিন। যেহেতু আমাদের পরে VHDL কোডে একটি বাইনারি ফ্রিকোয়েন্সি সিগন্যাল ইনপুট করতে হবে, তাই আমরা ফ্লোটের ফ্রিকোয়েন্সিটিকে বাইনারিতে রূপান্তর করতে পারি, এবং এটি ফেরত দিতে পারি।

ধাপ 5: পাইথন-নমুনা এবং এফএফটি (কোড এবং এর ফলাফল দেখান)

এই ধাপে, সম্পূর্ণ ক্রেডিট স্যাম্পলিং এবং FFT এর জন্য নীচের এই লিঙ্কে যান।

আমাদের কোড:

পাইল্যাব এবং স্কাইপি ইনস্টল করার পরে, wav ফাইলগুলি আমদানি এবং পড়তে সক্ষম।

pylab আমদানি থেকে*scipy.io আমদানি wavfile থেকে

sampFreq, snd = wavfile.read ('440_sine.wav')

তারপর snd.shape নমুনা পয়েন্ট এবং চ্যানেলের সংখ্যা উপস্থাপন করে। আমাদের ক্ষেত্রে, নমুনা পয়েন্টগুলি wavfile কতক্ষণ এবং চ্যানেলের # 2 এর উপর নির্ভর করে কারণ এটি স্টেরিও।

তারপর snd = snd / (2। ** 15) …… xlabel ('Time (ms)')

একটি অ্যারের মধ্যে সময় সংকেত সংগঠিত করে।

তারপর FFT ফ্রিকোয়েন্সি এবং পরিমাপে একটি অ্যারে তৈরি করে (পাওয়ার)

তারপর কিছুক্ষণ লুপের মাধ্যমে সর্বোচ্চ মাত্রা এবং এর সাথে যুক্ত ফ্রিকোয়েন্সি পাওয়া যায়।

তারপরে আমাদের নিজস্ব কোড ব্যবহার করে, ফ্রিকোয়েন্সি প্রতিনিধিত্বকারী পূর্ণসংখ্যা একটি 12 বিট বাইনারি সংখ্যায় রূপান্তরিত হয়েছিল এবং সেই সংখ্যাটির সাথে একটি পাঠ্য ফাইল তৈরি করা হয়েছিল।

ধাপ 6: ভিভাদো (তুলনাকারী)

ভিভাদো (তুলনাকারী)
ভিভাদো (তুলনাকারী)

প্রক্রিয়ার এই অংশে, দুটি ইনপুট ফ্রিকোয়েন্সি তুলনা করার জন্য আমাদের একটি তুলনাকারীর প্রয়োজন।

1. ইনপুট (রিসিভার) ফ্রিকোয়েন্সি বেশি, কম বা 2 Hz মার্জিন পরিসরের সংজ্ঞায়িত নোটের মধ্যে তুলনা করার জন্য একটি তুলনাকারী তৈরি করা হয়েছে। (সাধারণত গিটার টিউনার e2 থেকে g5, 82 Hz থেকে 784 Hz পর্যন্ত)

2. 2 Hz এর মার্জিন তৈরি করার সময়, আমরা রিসিভার ফ্রিকোয়েন্সি তে "000000000010" যোগ করার জন্য RCA ব্যবহার করেছি এবং ব্যবহারকারীর ইনপুটের জন্য এটি এখনও খুব কম কোথায় তা পরীক্ষা করে দেখুন। যদি এমন হয়, একক বিট সংকেত "উচ্চ" <= '0', "নিম্ন" <= '1'। তারপরে আমরা ব্যবহারকারীর ইনপুটে "000000000010" যোগ করি রিসিভারের ইনপুট তার চেয়ে বেশি কিনা তা দেখুন। যদি এমন হয়, "উচ্চ" <= '1', "নিম্ন" <= '0'। উভয় ক্ষেত্রেই '0' ফিরবে না।

3. যেহেতু মডিউলের পরবর্তী অংশে রিসিভার নোট কী তা বলার জন্য একটি নির্দিষ্ট 4-বিট ডেটার প্রয়োজন, কেবল 2 টি তুলনামূলক আউটপুট (কম এবং উচ্চ) ফেরত দেওয়া নয়, আমাদের কোড সহযোগীকে নোটের সাথে ফেরত দিতে হবে, যার সাথে যুক্ত কম্পন টা. অনুগ্রহ করে নিচের চার্টটি দেখুন:

গ | 0011

সি# | 1011

ডি | 0100

ডি# | 1100

ই | 0101

চ | 0110

F# | 1110

জি | 0111

G# | 1111

এ | 0001

একটি# | 1001

খ | 0010

নোটের মধ্যে শ্রেণীবদ্ধ করার জন্য কয়েকটি বিবৃতি ব্যবহার করে এবং সেভমেন্ট ডিকোডারের জন্য যা প্রয়োজন তাদের এনকোড করুন।

ধাপ 7: বেস 3 বোর্ডের ছবি

বেস 3 বোর্ডের ছবি
বেস 3 বোর্ডের ছবি

ধাপ 8: ভিভাদো (মাল্টিপ্লেক্সিং সহ 7 সেগমেন্ট ডিকোডার)

ভিভাদো (মাল্টিপ্লেক্সিং সহ 7 সেগমেন্ট ডিকোডার)
ভিভাদো (মাল্টিপ্লেক্সিং সহ 7 সেগমেন্ট ডিকোডার)

সবকিছুরই একটা ডিসপ্লে দরকার। এটি একটি গুরুত্বপূর্ণ ফ্যাক্টর যা একটি ডিজাইনের মান নির্ধারণ করে। অতএব, আমাদের সাত-সেগমেন্ট ডিকোডার ব্যবহার করে একটি ডিসপ্লে তৈরি করতে হবে, যা আমাদের B বোর্ডে একটি টিউনার ডিজাইন করার ক্ষমতা প্রদর্শন করতে পারবে। এছাড়াও, এটি আমাদের পরীক্ষা এবং ডিবাগিংয়ে সাহায্য করবে।

সাত সেগমেন্টের ডিকোডারে SSEG, AN, এবং Fiz_Hz আউটপুট করার সময় নোট, লো, হাই এবং CLK নামে ইনপুট থাকে। আমাদের নকশা বুঝতে সাহায্য করার জন্য উপরে ব্লক ডায়াগ্রামের একটি ছবি আছে।

নিম্ন এবং উচ্চ ইনপুট দুটি পৃথক করার উদ্দেশ্য হল তুলনাকারীর ডিজাইনারকে ইনপুট ফ্রিকোয়েন্সি (Fix_Hz) এর তুলনায় শব্দ বা তরঙ্গের ফ্রিকোয়েন্সি বেশি বা কম কিনা তা ম্যানিপুলেট করার স্বাধীনতা প্রদান করা। এছাড়াও, আউটপুট এসএসইজি সাতটি সেগমেন্ট ডিসপ্লে এবং পরবর্তী ডটকে প্রতিনিধিত্ব করে যখন এএন অ্যানোডগুলিকে প্রতিনিধিত্ব করে যার জন্য সাতটি সেগমেন্টের সেট আলোতে প্রদর্শিত হয়।

এই সাত বিভাগের ডিকোডারে, ঘড়ি (CLK) দুই বা ততোধিক ভিন্ন অ্যানোডে দুটি ভিন্ন মান প্রদর্শনে গুরুত্বপূর্ণ ভূমিকা পালন করে। যেহেতু বোর্ড আমাদের একই সময়ে দুটি ভিন্ন মান প্রদর্শন করার অনুমতি দেয় না, তাই আমাদের একটি সময়ে একটি মান প্রদর্শন করার জন্য মাল্টিপ্লেক্সিং ব্যবহার করতে হবে, অন্য একটি মানকে এত দ্রুত স্যুইচ করতে হবে যে আমাদের চোখ তা ধরতে পারবে না। এখানেই CLK ইনপুট খেলার মধ্যে আসে।

আরো তথ্যের জন্য, দয়া করে সোর্স কোড পড়ুন।

ধাপ 9: ভিভাদো (সংমিশ্রণ উপাদান)

প্রতিটি মডিউল (পাইথন রিসিভার, তুলনাকারী, সাত সেগমেন্ট ডিকোডার, ইত্যাদি) সম্পন্ন করার পরে, আমরা একটি বড় মডিউল ব্যবহার করে একত্রিত করি। দেখানো "ওভার ভিউ" বিভাগের অধীনে ছবির মতো, আমরা সেই অনুযায়ী প্রতিটি সংকেত সংযুক্ত করি। রেফারেন্সের জন্য, দয়া করে আমাদের সোর্স কোড "SW_Hz.vhd" চেক করুন।

ধন্যবাদ. আশা করি তুমি উপভোগ কর.

প্রস্তাবিত: