সুচিপত্র:

Wii Nunchuck Synthesizer: 4 টি ধাপ
Wii Nunchuck Synthesizer: 4 টি ধাপ

ভিডিও: Wii Nunchuck Synthesizer: 4 টি ধাপ

ভিডিও: Wii Nunchuck Synthesizer: 4 টি ধাপ
ভিডিও: [ $9 ] DIY modular synth Wii nunchuck controller and Multi LFO / Joystic , Acceleration sensor 2024, নভেম্বর
Anonim
Wii Nunchuck সিনথেসাইজার
Wii Nunchuck সিনথেসাইজার

ওয়াই মিউজিকের বিশ্ব:

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

আমি আমার নানচাককে একটি Arduino Uno- এর সাথে সংযুক্ত করেছি যা Mozzi সাউন্ড সিনথেসিস লাইব্রেরিতে চলছে এবং অনলাইনে উভয়ের ভালভাবে নথিভুক্ত ব্যবহারের কারণে। স্বাচ্ছন্দ্যের জন্য, আমি একটি WiiChuck ব্রেডবোর্ড অ্যাডাপ্টার ব্যবহার করছি যা সরাসরি Arduino এ প্লাগ করে। এই অপেক্ষাকৃত সহজ প্রকল্পটি নানচাকের অ্যাকসিলরোমিটার থেকে মাপা পিচ (YZ-Plane) এর উপর নির্ভর করে একটি পিচ সিরিজ খেলে। পিচকে জোরে বা নরম করার জন্য জয়স্টিকের Y মান লাভের জন্য ম্যাপ করা হয়। এটি Z-Button এর উপর নির্ভর করে chords পরিবর্তন করে এবং C-Button টিপে একটি ফেজ মডুলেশন খাম চালু করে। খামের ফ্রিকোয়েন্সি তারপর নানচাক থেকে মাপা রোল দিয়ে পরিবর্তন করা হয় (ছবিটি একটি গাঁট বাঁকানো)।

সম্পদ:

  • 1 x Arduino Uno
  • 1 x Wii Nunchuck
  • 1 x WiiChuck অ্যাডাপ্টার
  • 1 x ব্রেডবোর্ড সামঞ্জস্যপূর্ণ 3.5 মিমি মহিলা স্টেরিও জ্যাক
  • 1 x 3.5 মিমি অডিও কেবল
  • এক ধরণের স্পিকার
  • 4-5 বিভিন্ন রঙের তার

Ptionচ্ছিক কিন্তু প্রস্তাবিত:

  • 1 x 330 ওহম প্রতিরোধক
  • 1 x.1 uF ক্যাপাসিটর

ধাপ 1: আপনার NunChuck মধ্যে প্লাগিং

আপনার NunChuck মধ্যে প্লাগিং
আপনার NunChuck মধ্যে প্লাগিং
আপনার NunChuck মধ্যে প্লাগিং
আপনার NunChuck মধ্যে প্লাগিং
আপনার NunChuck মধ্যে প্লাগিং
আপনার NunChuck মধ্যে প্লাগিং

Arduino খেলার মাঠ থেকে WiiChuck ক্লাস কপি/আটকান। আমাদের PWR এবং GND পিনের ঘোষণার সাথে সংস্করণের প্রয়োজন হবে। এটি WiiChuck.h হিসাবে সংরক্ষণ করুন এবং আপনার প্রকল্পের মতো একই ডিরেক্টরিতে রাখুন।

এখন Arduino IDE তে নিচের কপি/পেস্ট করুন এবং আপলোড করুন।

#"Wire.h" অন্তর্ভুক্ত করুন //#"WiiChuckClass.h" // সম্ভবত আমাদের বাকিদের জন্য WiiChuck.h অন্তর্ভুক্ত করুন। #অন্তর্ভুক্ত "WiiChuck.h" WiiChuck চাক = WiiChuck ();

অকার্যকর সেটআপ() {

// nunchuck_init (); Serial.begin (115200); chuck.begin (); chuck.update (); //chuck.calibrateJoy (); }

অকার্যকর লুপ () {

বিলম্ব (20); chuck.update ();

Serial.print (chuck.readPitch ());

সিরিয়াল.প্রিন্ট (","); Serial.print (chuck.readRoll ()); সিরিয়াল.প্রিন্ট (",");

Serial.print (chuck.readJoyX ());

সিরিয়াল.প্রিন্ট (","); Serial.print (chuck.readJoyY ()); সিরিয়াল.প্রিন্ট (",");

যদি (chuck.buttonZ) {

Serial.print ("Z"); } অন্য {সিরিয়াল.প্রিন্ট ("-"); }

সিরিয়াল.প্রিন্ট (",");

// একটি ফাংশন নয় // যদি (chuck.buttonC ()) {

যদি (chuck.buttonC) {Serial.print ("C"); } অন্য {সিরিয়াল.প্রিন্ট ("-"); }

Serial.println ();

}

আপনার Arduino কে বিদ্যুৎ থেকে সংযোগ বিচ্ছিন্ন করুন এবং আপনার WiiChuck অ্যাডাপ্টারটিকে আপনার Arduino এ এনালগ পিন 2-5 এর সাথে সংযুক্ত করুন।

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

পরবর্তীতে, আমরা সবকিছুকে মোজির সাথে সংযুক্ত করব। । ।

ধাপ 2: মোজিকে জানা

মোজির সাথে পরিচিত হওয়া
মোজির সাথে পরিচিত হওয়া

প্রথমে, আপনাকে মোজির সর্বশেষ সংস্করণটি ডাউনলোড করতে হবে। তারা অনুদানের দ্বারা ইন্ধনপ্রাপ্ত হয় তাই অনুগ্রহ করে অনুদান দিন এবং লাইব্রেরি ডাউনলোড করুন। আপনি Arduino IDE থেকে স্কেচ> লাইব্রেরি>. ZIP লাইব্রেরি যোগ করুন নির্বাচন করে আপনার লাইব্রেরিতে সহজেই এটি যুক্ত করতে পারেন।

এখন আমরা 3.5 মিমি হেডফোন জ্যাককে রুটিবোর্ড এবং আরডুইনোতে সংযুক্ত করব যাতে আমরা সহজেই এটির সাথে পরবর্তীতে সংযুক্ত হতে পারি (আপনি আপাতত নানচাক এবং অ্যাডাপ্টার আনপ্লাগ করতে পারেন)।

  1. বোর্ডের নিচের ডান কোণে আপনার জ্যাকটি প্লাগ করুন যাতে বাকিদের জন্য জায়গা তৈরি হয়। জ্যাকটি 5 পিন প্রশস্ত হওয়া উচিত।
  2. একটি জাম্পার তার দিয়ে মাটির মাঝের সারিটি সংযুক্ত করুন।
  3. জ্যাকের উপরের সারিকে উপরের একটি খালি সারিতে সংযুক্ত করুন (ছবিতে সারি 10)। এটি অডিও সংকেত বহনকারী তারের।
  4. সারি 10 এর সাথে ডিজিটাল পিন ~ 9 সংযুক্ত করুন।
  5. আপনার আরডুইনোতে গ্রাউন্ডকে ব্রেডবোর্ডের গ্রাউন্ড রেলের সাথে সংযুক্ত করুন।
  6. আপনার অগত্যা রোধকারী এবং ক্যাপাসিটর ব্যবহার করার প্রয়োজন নেই তবে আপনি যদি না করেন তবে আপনি একটি উচ্চ পিচযুক্ত চিৎকার লক্ষ্য করতে পারেন। এটি pass 15 kHz এর উপরে ফ্রিকোয়েন্সি দূর করতে লো পাস ফিল্টার হিসাবে কাজ করে।

ফাইল> উদাহরণ> মোজি> বেসিক> সাইনওয়েভ নির্বাচন করে Arduino IDE তে মোজির সাইনওয়েভ স্কেচ খুলুন। এটি মূলত মোজির "হ্যালো ওয়ার্ল্ড" এর সমতুল্য।

স্কেচ আপলোড করুন এবং রুটিবোর্ডে একটি স্পিকারে প্লাগ করুন। আপনি যদি ব্রেডবোর্ডটি এখনও অডিও জ্যাকের সাথে সংযুক্ত না করেন তবে আপনি একটি বুজার ব্যবহার করতে পারেন।

আপনি যদি আপনার স্পিকার থেকে ধ্রুবক A4 (440Hz) না শুনতে পান তবে নিশ্চিত করুন যে আপনার সমস্ত সংযোগ ভাল এবং আবার চেষ্টা করুন।

এরপরে, আমরা নানচাককে আরডুইনোতে সংযুক্ত করব!

ধাপ 3: সব একসাথে রাখা

সবগুলোকে একত্রে রাখ
সবগুলোকে একত্রে রাখ

এখন আমরা সাইনওয়েভের ফ্রিকোয়েন্সি পরিবর্তন করতে নানচুক থেকে রোল মান ব্যবহার করতে যাচ্ছি।

Arduino IDE থেকে File> Examples> Mozzi> Sensors> Piezo Frequency নির্বাচন করুন

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

#অন্তর্ভুক্ত "WiiChuck. H"

WiiChuck chuck = WiiChuck (); // const int PIEZO_PIN = 3; // পাইজোর জন্য এনালগ ইনপুট পিন সেট করুন

এখন সেটআপে, আমাদের নিম্নলিখিতগুলি যুক্ত করতে হবে:

chuck.begin (); chuck.update ();

এবং অবশেষে আপডেট কন্ট্রোল () এ আমাদের কিছু জিনিস পরিবর্তন করতে হবে:

void updateControl () {

chuck.update (); // সর্বশেষ নুনচাক ডেটা পান // পাইজো পড়ুন // int piezo_value = mozziAnalogRead (PIEZO_PIN); // মান 0-1023 int piezo_value = মানচিত্র (লাইনটি মন্তব্য করুন যা পাইজো_ভ্যালু সেট করে এবং নীচেরটি যোগ করুন:

অকার্যকর updateControl () {chuck.update (); // সর্বশেষ নুনচাক ডেটা পান // পাইজো পড়ুন // int piezo_value = mozziAnalogRead (PIEZO_PIN); // মান হল 0-1023 // আমাদের উপরের লাইনের দরকার নেই কিন্তু কেন একই পরিসরে রোল ম্যাপ করবেন না? int piezo_value = মানচিত্র (chuck.readRoll (), -180, 180, 0 1023);

কোড আপলোড করুন এবং ফ্রিকোয়েন্সিটি আপনার নানচাকের রোল এর সাথে সামঞ্জস্যপূর্ণ হওয়া উচিত। বিভিন্ন ফ্রিকোয়েন্সি রেঞ্জে এটি ম্যাপ করার চেষ্টা করুন। যদি আপনি স্কেচে আরও নীচে লক্ষ্য না করেন তবে সেন্সর থেকে মান 3 দ্বারা গুণিত হয় তাই আমরা বর্তমানে 0 Hz থেকে প্রায় 3000 Hz পর্যন্ত টোন খেলছি।

ধাপ 4: চূড়ান্ত স্পর্শ

চূড়ান্ত স্পর্শ
চূড়ান্ত স্পর্শ

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

আমি মোজ্জি ডকুমেন্টেশন পড়ার পরামর্শ দিচ্ছি কারণ নানচাকের কোড ব্যতীত কোডের বেশিরভাগ উদাহরণ থেকে সরাসরি।

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

প্রতিফলন

আমার মনে হয় না যে আমি বেশ শেষ হয়ে গেছি। এটা বলার অপেক্ষা রাখে না যে আমি প্রকল্প বা এটি যে শব্দ করে তা নিয়ে সন্তুষ্ট নই, কিন্তু আমি মনে করি আমি আমার পায়ের আঙ্গুলগুলিকে একটি নতুন জগতে ডুবিয়ে দিয়েছি যা আমি অন্বেষণ করতে চাই তাই আমি এই প্রকল্প থেকে একটি নতুন শাখা যুক্ত করব যেমন আমি চালিয়ে যাচ্ছি কাজ করতে.

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

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

প্রস্তাবিত: