সুচিপত্র:

MIDI কনভার্টার থেকে রিয়েল-টাইম অডিও।: 7 টি ধাপ
MIDI কনভার্টার থেকে রিয়েল-টাইম অডিও।: 7 টি ধাপ

ভিডিও: MIDI কনভার্টার থেকে রিয়েল-টাইম অডিও।: 7 টি ধাপ

ভিডিও: MIDI কনভার্টার থেকে রিয়েল-টাইম অডিও।: 7 টি ধাপ
ভিডিও: প্রফেশনাল মোড থেকে টাকা ইনকামের পদ্ধতি | Facebook Professional Mode Bangla 2024, জুলাই
Anonim
MIDI কনভার্টার থেকে রিয়েল টাইম অডিও।
MIDI কনভার্টার থেকে রিয়েল টাইম অডিও।

নমস্তে মানুষ! এটি এমন একটি প্রকল্প যা আমি আমার স্নাতক প্রোগ্রামে আমার একটি কোর্সের (রিয়েল-টাইম ডিজিটাল সিগন্যাল প্রসেসিং) জন্য কাজ করেছি। প্রকল্পটির লক্ষ্য হল একটি DSP সিস্টেম তৈরি করা যা অডিও ডেটা "শোনে" এবং UART এর সাথে সংশ্লিষ্ট নোটের MIDI বার্তাগুলি আউটপুট করে। এই উদ্দেশ্যে Arduino Nano ব্যবহার করা হয়েছিল। দীর্ঘ গল্প সংক্ষিপ্ত মাইক্রো-কন্ট্রোলার আগত অডিও ডেটার উপর একটি FFT করে এবং শিখরগুলির কিছু বিশ্লেষণ করে এবং উপযুক্ত MIDI বার্তা পাঠায়। MOSFETs নিয়ে বিরক্ত হবেন না যদিও তারা অন্য কিছু প্রকল্পের জন্য (যা পরে নির্দেশাবলীর উপরও রাখা হবে) এবং এই প্রকল্পের জন্য প্রয়োজন হয় না। তাহলে আগে থেকেই শুরু করা যাক !!

ধাপ 1: প্রয়োজনীয় উপাদান

প্রয়োজনীয় উপাদান
প্রয়োজনীয় উপাদান

এই প্রকল্পটি তৈরি করতে আমাদের নিম্নলিখিত উপাদানগুলির প্রয়োজন হবে যদিও এর মধ্যে অনেকগুলি জেনেরিক এবং তাদের সমতুল্য দ্বারা প্রতিস্থাপিত হতে পারে। কাজ করার জন্য সার্কিট ডায়াগ্রামটি দেখুন এবং আরও ভাল বাস্তবায়নের জন্য অনুসন্ধান করুন।

উপাদান পরিমাণ

1. ইলেক্ট্রেট মাইক্রোফোন। ঘ

2. 30 কিলো ওহম প্রতিরোধক। ঘ

3. 150 কিলো ওহম প্রতিরোধক। ঘ

4. 100 ওহম প্রতিরোধক। ঘ

5. 2.2 কিলো ওহম প্রতিরোধক 3

6. 10 কিলো ওহম প্রিসেট পাত্র। ঘ

7. 10 কিলো ওহম ট্রিমার পাত্র। ঘ

8. 47 কিলো ওহম স্টিরিও পাত্র। ঘ

9. 470 Ohms প্রতিরোধক। 2

10. 0.01uF ক্যাপাসিটার। 2

11. 2.2uF ক্যাপাসিটার। 3

12. 47uF ক্যাপাসিটার। 2

13. 1000uF ক্যাপাসিটর। ঘ

14. 470uF ক্যাপাসিটর। ঘ

15. 7805 ভোল্টেজ নিয়ন্ত্রক। ঘ

16. মহিলা এবং পুরুষ হেডার স্ট্রিপ। 1 টি

17. ব্যারেল জ্যাক সংযোগকারী ঘ

18. 12 V 1 Amp DC Adapter। ঘ

19. SPST সুইচ। (Alচ্ছিক) 1

20. পারফোর্ড। ঘ

ধাপ 2: প্রযুক্তিগত বিশেষ উল্লেখ।

প্রযুক্তিগত বিবরণ
প্রযুক্তিগত বিবরণ

নমুনা ফ্রিকোয়েন্সি: 3840 নমুনা/সেকেন্ড

প্রতি FFT নমুনার সংখ্যা: 256

ফ্রিকোয়েন্সি রেজোলিউশন: 15Hz

রিফ্রেশ হার: প্রায় 15 Hz

মিউজিক্যাল নোটের নিম্ন এবং উচ্চতর স্কেলগুলি সঠিকভাবে ধরা যায় না। নিম্ন নোটগুলি কম ফ্রিকোয়েন্সি রেজোলিউশনে ভোগে যেখানে উচ্চ ফ্রিকোয়েন্সি কম নমুনা হারে ভোগে। আরডুইনো ইতিমধ্যেই মেমরির বাইরে তাই ভাল রেজোলিউশন পাওয়ার কোন উপায় নেই। এবং কম রেজফ্রেশ রেটের খরচে আরও ভালো রেজোলিউশন আসবে তাই ট্রেড-অফ অনিবার্য। হাইজেনবার্গের অনিশ্চয়তা নীতির লেম্যান সংস্করণ।

প্রাথমিক অসুবিধা হল নোটের মধ্যে সূচকীয় ব্যবধান এলএফটি এর মতো অ্যালগরিদম সাহায্য করতে পারে কিন্তু এটি আরডুইনো ন্যানোর মতো ডিভাইসের জন্য কিছুটা উন্নত এবং একটু জটিল।

ধাপ 3: সার্কিট ডায়াগ্রাম।

সার্কিট ডায়াগ্রাম।
সার্কিট ডায়াগ্রাম।
সার্কিট ডায়াগ্রাম।
সার্কিট ডায়াগ্রাম।
সার্কিট ডায়াগ্রাম।
সার্কিট ডায়াগ্রাম।
সার্কিট ডায়াগ্রাম।
সার্কিট ডায়াগ্রাম।

দ্রষ্টব্য: তিনটি MOSFETs এবং ছবিতে স্ক্রু টার্মিনাল দ্বারা বিরক্ত হবেন না। এই প্রকল্পের জন্য তাদের প্রয়োজন নেই। লক্ষ্য করুন যে মাইক্রোফোন ইনপুট বোর্ডটি অপসারণযোগ্য বা তারা এটিকে মডুলার বলে। বিভিন্ন ব্লকের একটি ছোট বিবরণ নিচে দেওয়া হল।

1) দুটি 470 ওহম প্রতিরোধক স্টেরিও অডিও সিগন্যালকে মনো অডিও সিগন্যালে একত্রিত করে। নিশ্চিত করুন যে সিগন্যালের স্থল ভার্চুয়াল গ্রাউন্ডে (সার্কিট ডায়াগ্রামে ভিজি) যায় এবং সার্কিটের মাটিতে নয়।

2) পরের ব্লকটি হল ২ য় অর্ডার স্যালেন-কি লো পাস ফিল্টার যা এলিয়াসিং এড়ানোর জন্য ব্যান্ড ইনপুট সিগন্যাল সীমিত করার জন্য দায়ী। যেহেতু আমরা শুধুমাত্র +12v সাপ্লাই দিয়ে কাজ করছি আমরা একটি RC ভোল্টেজ ডিভাইডার তৈরি করে op-amp এর পক্ষপাতিত্ব করি। যে অপ -অ্যাম্পকে এই ভেবে বোকা বানায় যে সাপ্লাই হল 6 0 -6 ভোল্ট সাপ্লাই (ডুয়েল রেল) যেখানে vg হল op amp এর গ্রাউন্ড রেফারেন্স।

3) তারপর আউটপুট কম পাস ফিল্টার করা হয় ডিসি 6 ভোল্টের অফসেট ব্লক করার জন্য এবং প্রায় 0.55 ভোল্টের ডিসি এর সাথে মিলিত হয় কারণ ADC অভ্যন্তরীণ 1.1 v কে Vref হিসাবে ব্যবহার করার জন্য কনফিগার করা হবে।

দ্রষ্টব্য: ইলেক্ট্রেট মাইক্রোফোনের জন্য প্রাক-পরিবর্ধক ইন্টারনেটের সেরা সার্কিট নয়। অপ-এমপি যুক্ত একটি সার্কিট একটি ভাল পছন্দ হত। আমরা ফ্রিকোয়েন্সি প্রতিক্রিয়া যতটা সম্ভব সমতল হতে চাই। 47 কিলো ওহম স্টিরিও পট কাট-অফ ফ্রিকোয়েন্সি সংজ্ঞায়িত করতে ব্যবহৃত হয় যা সাধারণত নমুনার ফ্রিকোয়েন্সি অর্ধেক হওয়া উচিত। 10 কিলো ওহম প্রিসেট (সাদা মাথার ছোট পাত্র) ফিল্টারটির লাভ এবং Q মান টিউন করতে ব্যবহৃত হয়। 10 কিলো ওহম ট্রিমার পাত্র (একটি ধাতব টিউনিং নোব যা একটি ছোট সমতল হেড স্ক্রুর মতো দেখাচ্ছে) ভোল্টেজটি অর্ধেক ভ্রেফের মতো সেট করতে ব্যবহৃত হয়।

দ্রষ্টব্য: যখন আপনি ন্যানোকে পি.সি. এসপিএসটি সুইচ খোলা রাখুন অন্যটি বন্ধ। এটি করতে ব্যর্থ হলে বিশেষ সতর্কতা অবলম্বন করুন যাতে সার্কিট/কম্পিউটার/ভোল্টেজ রেগুলেটর বা উপরের কোন সংমিশ্রণ ক্ষতি করতে পারে।

ধাপ 4: প্রয়োজনীয় অ্যাপ্লিকেশন এবং আইডিই।

প্রয়োজনীয় অ্যাপ্লিকেশন এবং আইডিই।
প্রয়োজনীয় অ্যাপ্লিকেশন এবং আইডিই।
প্রয়োজনীয় অ্যাপ্লিকেশন এবং আইডিই।
প্রয়োজনীয় অ্যাপ্লিকেশন এবং আইডিই।
প্রয়োজনীয় অ্যাপ্লিকেশন এবং আইডিই।
প্রয়োজনীয় অ্যাপ্লিকেশন এবং আইডিই।
প্রয়োজনীয় অ্যাপ্লিকেশন এবং আইডিই।
প্রয়োজনীয় অ্যাপ্লিকেশন এবং আইডিই।
  1. আরডুইনো ন্যানো কোডিংয়ের জন্য আমি আদিম AVR স্টুডিও 5.1 এর সাথে গিয়েছিলাম কারণ এটি আমার জন্য কাজ করে বলে মনে হচ্ছে। আপনি এখানে ইনস্টলার খুঁজে পেতে পারেন।
  2. Arduino Nano প্রোগ্রাম করার জন্য আমি Xloader ব্যবহার করেছি। আরডুইনোসে.hex ফাইলগুলি বার্ন করার জন্য হালকা ওজনের টুল ব্যবহার করা সত্যিই সহজ। এটা আপনি এখানে পাবেন.
  3. সামান্য বোনাস মিনি প্রকল্প এবং সার্কিট টিউন করার জন্য আমি প্রসেসিং ব্যবহার করেছি। আপনি এটি এখান থেকে পেতে পারেন যদিও প্রতিটি পুনর্বিবেচনায় বড় পরিবর্তন করা হয় যাতে আপনাকে স্কেচ কাজ করার জন্য অপ্রচলিত ফাংশনগুলির সাথে বেদনা হতে পারে।
  4. FL স্টুডিও বা অন্য কোন MIDI প্রসেসিং সফটওয়্যার। আপনি এফএল স্টুডিও সীমিত অ্যাক্সেস সংস্করণ এখান থেকে বিনামূল্যে পেতে পারেন।
  5. লুপ MIDI একটি ভার্চুয়াল MIDI পোর্ট তৈরি করে এবং FL স্টুডিও দ্বারা সনাক্ত করা হয় যেন এটি একটি MIDI ডিভাইস। এখান থেকে একই কপি পান।
  6. হেয়ারলেস MIDI COM পোর্ট থেকে MIDI বার্তা পড়তে এবং লুপ MIDI পোর্টে পাঠাতে ব্যবহৃত হয়। এটি MIDI বার্তাগুলিকে রিয়েল-টাইম ডিবাগ করে যা ডিবাগিংকে সুবিধাজনক করে তোলে। এখান থেকে চুলহীন MIDI পান।

ধাপ 5: সবকিছুর জন্য প্রাসঙ্গিক কোড।

আমি এই প্রকল্পে ব্যবহৃত নির্দিষ্ট বিন্দু FFT লাইব্রেরির জন্য ইলেকট্রনিক লাইফস MFG (ওয়েবসাইট এখানে !!) কে ধন্যবাদ জানাতে চাই। লাইব্রেরিটি মেগা এভিআর পরিবারের জন্য অনুকূলিত। এটি লাইব্রেরির ফাইল এবং কোডগুলির লিঙ্ক যা তিনি ব্যবহার করেছিলেন। আমি নিচে আমার কোড সংযুক্ত করছি। এতে প্রসেসিং স্কেচ এবং AVR C কোডও রয়েছে। অনুগ্রহ করে মনে রাখবেন যে এই কনফিগারেশনটি আমার জন্য কাজ করেছে এবং এই কোডগুলির কারণে আপনি যদি কোনও জিনিস ক্ষতিগ্রস্ত করেন তবে আমি কোনও দায়িত্ব নেব না। এছাড়াও, কোড কাজ করার চেষ্টা করে আমার অনেক সমস্যা ছিল। উদাহরণস্বরূপ, ডিডিডিআরডি (ডেটা ডাইরেকশন রেজিস্টার) -এ প্রচলিত ডিডিআরডিএক্স (x = 0-7) এর পরিবর্তে বিট মাস্ক হিসেবে DDDx (x = 0-7) আছে। কম্পাইল করার সময় এই ত্রুটিগুলির জন্য সতর্ক থাকুন। এছাড়াও মাইক্রো-কন্ট্রোলার পরিবর্তন করা এই সংজ্ঞাগুলিকে প্রভাবিত করে তাই সংকলন ত্রুটিগুলি মোকাবেলা করার সময় এই বিষয়েও নজর রাখুন। এবং যদি আপনি ভাবছেন যে কেন প্রকল্প ফোল্ডারটিকে DDT_Arduino_328p.rar বলা হয়, আচ্ছা শুধু বলি যে যখন আমি শুরু করি তখন সন্ধ্যায় খুব অন্ধকার ছিল এবং আমি লাইট চালু না করার জন্য যথেষ্ট অলস ছিলাম।: পি

প্রসেসিং স্কেচে আসছি, আমি এই স্কেচটি লেখার জন্য 3.3.6 প্রক্রিয়াকরণ ব্যবহার করেছি। আপনাকে ম্যানুয়ালি স্কেচে COM পোর্ট নম্বর সেট করতে হবে। আপনি কোডে মন্তব্যগুলি পরীক্ষা করতে পারেন।

যদি কেউ আমাকে Arduino IDE এবং সর্বশেষ প্রক্রিয়াকরণ সংস্করণে কোডগুলি পোর্ট করতে সাহায্য করতে পারে, আমি খুশি হব এবং ডেভেলপার -অবদানকারীদেরও ক্রেডিট দেব।

ধাপ 6: এটি সেট আপ।

  1. কোডটি খুলুন এবং #define pcvisual uncommented এবং #define midi_out মন্তব্য দিয়ে কোড কম্পাইল করুন।
  2. Xloader খুলুন এবং কোড সহ ডিরেক্টরিতে ব্রাউজ করুন,.hex ফাইলটি ব্রাউজ করুন এবং উপযুক্ত বোর্ড এবং COM পোর্ট নির্বাচন করে ন্যানোতে বার্ন করুন
  3. প্রসেসিং স্কেচ খুলুন এবং উপযুক্ত COM পোর্ট ইনডেক্স দিয়ে চালান। যদি সবকিছু ঠিকঠাক থাকে তবে আপনার পিন A0 তে সংকেতের বর্ণালী দেখতে সক্ষম হওয়া উচিত।
  4. একটি স্ক্রু ড্রাইভার পান এবং বর্ণালী সমতল না হওয়া পর্যন্ত ট্রিমার পাত্রটি চালু করুন (ডিসি উপাদান শূন্যের কাছাকাছি হওয়া উচিত)। তখন বোর্ডে কোন সংকেত প্রবেশ করাবেন না। (মাইক্রোফোন মডিউল সংযুক্ত করবেন না)।
  5. এখন মাইক্রোফোন থেকে বোর্ডে ইনপুট দিতে এবং বর্ণালী পর্যবেক্ষণ করতে এই জাতীয় যে কোনও সুইপ জেনারেটর সরঞ্জাম ব্যবহার করুন।
  6. যদি আপনি ফ্রিকোয়েন্সিগুলির একটি সুইপ দেখতে না পান, 47 কিলো ওহম প্রতিরোধের পরিবর্তন করে কাট-অফ ফ্রিকোয়েন্সি হ্রাস করুন। এছাড়াও 10 কিলো ওহম প্রিসেট পট ব্যবহার করে লাভ বাড়ান। এই পরামিতিগুলি পরিবর্তন করে একটি সমতল এবং বিশিষ্ট সুইপ আউটপুট পাওয়ার চেষ্টা করুন। এটি মজার অংশ (ছোট বোনাস!), আপনার প্রিয় গানগুলি বাজান এবং তাদের রিয়েল-টাইম বর্ণালী উপভোগ করুন। (ভিডিওটি দেখুন)
  7. এখন এমবেডেড সি কোডটি আবার কম্পাইল করুন #ডিফাইন পিসিভিজুয়াল মন্তব্য এবং #ডিফাইন মিডি_আউট অসম্পূর্ণ।
  8. নতুন সংকলিত কোডটি আরডুইনো ন্যানোতে পুনরায় লোড করুন।
  9. লুপমিডি খুলুন এবং একটি নতুন পোর্ট তৈরি করুন।
  10. FL স্টুডিও বা অন্যান্য MIDI ইন্টারফেস সফটওয়্যার খুলুন এবং নিশ্চিত করুন যে MIDI পোর্ট সেটিংসে লুপ মিডি পোর্ট দৃশ্যমান।
  11. Arduino সংযুক্ত সঙ্গে চুলহীন MIDI খুলুন। লুপমিডি পোর্ট হতে আউটপুট পোর্ট নির্বাচন করুন। সেটিংসে যান এবং বাউড রেট 115200 নির্ধারণ করুন। এখন আরডুইনো ন্যানোর সাথে সম্পর্কিত COM পোর্ট নির্বাচন করুন এবং পোর্টটি খুলুন।
  12. মাইক্রোফোনের কাছে কিছু "বিশুদ্ধ" টোন বাজান এবং আপনার MIDI সফটওয়্যারেও সংশ্লিষ্ট নোট হিট শুনতে হবে। যদি কোন প্রতিক্রিয়া না থাকে তবে C কোডে সংজ্ঞায়িত up_threshold কমানোর চেষ্টা করুন। যদি নোটগুলি এলোমেলোভাবে ট্রিগার করা হয় তবে up_threshold বাড়ান।
  13. আপনার পিয়ানো পান এবং পরীক্ষা করুন আপনার সিস্টেম কত দ্রুত !! সেরা জিনিস হল যে নোটের গোল্ডি-লক জোনটিতে এটি সহজেই একাধিক যুগপৎ কী প্রেস সহজে সনাক্ত করতে পারে।

দ্রষ্টব্য: যখন একটি অ্যাপ্লিকেশন দ্বারা COM পোর্টটি অ্যাক্সেস করা হয় তখন এটি অন্যটি পড়তে পারে না। উদাহরণস্বরূপ যদি হেয়ারলেস MIDI COM পোর্ট পড়ছে, Xloader বোর্ড ফ্ল্যাশ করতে পারবে না।

ধাপ 7: ফলাফল/ভিডিও

আপাতত এটাই বন্ধুরা! আশা করি এটা আপনার ভালো লেগেছে. প্রকল্পে আপনার কোন পরামর্শ বা উন্নতি থাকলে আমাকে মন্তব্য বিভাগে জানান। শান্তি!

প্রস্তাবিত: