فهرست مطالب:

سینتی سایزر Wii Nunchuck: 4 مرحله
سینتی سایزر Wii Nunchuck: 4 مرحله

تصویری: سینتی سایزر Wii Nunchuck: 4 مرحله

تصویری: سینتی سایزر Wii Nunchuck: 4 مرحله
تصویری: Nunchuk module prototype 2024, نوامبر
Anonim
سینتی سایزر Wii Nunchuck
سینتی سایزر Wii Nunchuck

دنیای موسیقی Wii:

تصمیم گرفتم سرانجام عشقم به موسیقی را با اندکی تجربه برنامه نویسی که در چند سال گذشته به دست آورده ام ترکیب کنم. از زمانی که سخنرانی تاد ماچوور را در مدرسه ام دیدم ، علاقه مند به ساختن ساز خودم بودم. اگر با کارهای او آشنایی ندارید ، به او گوگل بدهید ، زیرا او سالهاست که مرزهای موسیقی ، فناوری و همچنین تلاقی آنها را پیش می برد (آزمایشگاه های رسانه ای MIT ، گروه راک ، Guitar Hero و غیره.))

من Nunchuck خود را به Arduino Uno که در کتابخانه سنتز صدای Mozzi اجرا می شود متصل کرده ام ، به دلیل استفاده مستند از هر دو به صورت آنلاین. برای سهولت ، از آداپتور تخته نان WiiChuck استفاده می کنم که مستقیماً به آردوینو متصل می شود. این پروژه نسبتاً ساده مجموعه ای از زمین ها را بسته به زمین (YZ-Plane) اندازه گیری شده از شتاب سنج Nunchuck انجام می دهد. مقدار Y جوی استیک با افزایش نگاشت می شود تا گام بلندتر یا نرم تر شود. همچنین بسته به دکمه Z آکوردها را تغییر می دهد و هنگامی که دکمه C را فشار می دهید ، پاکت مدولاسیون فاز را روشن می کند. سپس فرکانس پاکت با رول اندازه گیری شده از Nunchuck (تصویر در حال چرخاندن یک دستگیره) تغییر می کند.

منابع:

  • 1 عدد آردوینو Uno
  • 1 عدد Wii Nunchuck
  • 1 عدد آداپتور WiiChuck
  • 1 عدد جک استریو زنانه 3.5 میلی متری سازگار با نان بردی
  • 1 کابل 3.5 میلی متری صدا
  • 1 عدد بلندگو (می توانید در ابتدا زنگ را وصل کنید تا آزمایش شود
  • 4-5 سیم از رنگهای مختلف

اختیاری اما توصیه می شود:

  • مقاومت 1 x 330 اهم
  • 1 x.1 خازن uF

مرحله 1: اتصال NunChuck خود

اتصال NunChuck خود
اتصال NunChuck خود
اتصال NunChuck خود
اتصال NunChuck خود
اتصال NunChuck خود
اتصال NunChuck خود

کلاس WiiChuck را در Arduino Playground کپی/جایگذاری کنید. ما به نسخه با اعلام پین های PWR و GND نیاز داریم. آن را به عنوان WiiChuck.h ذخیره کرده و در همان فهرست پروژه خود نگه دارید.

حالا موارد زیر را در Arduino IDE کپی/جایگذاری کرده و بارگذاری کنید.

#شامل "Wire.h" //#شامل "WiiChuckClass.h" // به احتمال زیاد WiiChuck.h آن برای بقیه ما. #شامل "WiiChuck.h" WiiChuck chuck = WiiChuck ()؛

void setup () {

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

حلقه خالی () {

تأخیر (20) ؛ chuck.update ()؛

Serial.print (chuck.readPitch ()) ؛

Serial.print ("،") ؛ Serial.print (chuck.readRoll ()) ؛ Serial.print ("،") ؛

Serial.print (chuck.readJoyX ()) ؛

Serial.print ("،") ؛ Serial.print (chuck.readJoyY ()) ؛ Serial.print ("،") ؛

if (chuck.buttonZ) {

Serial.print ("Z") ؛ } else {Serial.print ("-")؛ }

Serial.print ("،") ؛

// تابع نیست // if (chuck.buttonC ()) {

if (chuck.buttonC) {Serial.print ("C") ؛ } else {Serial.print ("-")؛ }

Serial.println ()؛

}

Arduino خود را از برق جدا کرده و آداپتور WiiChuck خود را به پین های آنالوگ 2-5 در Arduino خود وصل کنید.

دوباره به برق متصل شوید و اطمینان حاصل کنید که مقادیر Nunchuck به Arduino شما ارسال شده و در Serial Monitor چاپ می شود. اگر تغییری در اعداد مشاهده نمی کنید ، مطمئن شوید که ارتباطات شما خوب است و Nunchuck در حال کار است. من چند روز تلاش کردم تا نرم افزار را تعمیر کنم قبل از اینکه بفهمم سیم Nunchuck من به طور داخلی شکسته است!

در مرحله بعد ، همه چیز را به Mozzi وصل می کنیم. به به

مرحله 2: آشنایی با موزی

آشنایی با موزی
آشنایی با موزی

ابتدا باید آخرین نسخه Mozzi را بارگیری کنید. آنها با کمک های مالی تأمین می شوند ، بنابراین اگر تمایل زیادی دارید و کتابخانه را بارگیری کنید ، اهدا کنید. با انتخاب Sketch> Libraries> Add. ZIP Library … از Arduino IDE می توانید آن را به آسانی به کتابخانه های خود اضافه کنید.

حالا ما جک هدفون 3.5 میلی متری را به نان برد و آردوینو متصل می کنیم تا بعداً بتوانیم به راحتی به آن متصل شویم (فعلا می توانید Nunchuck و آداپتور را از برق بکشید).

  1. جک خود را به گوشه پایین سمت چپ تخته وصل کنید تا برای بقیه جا باز شود. جک باید 5 پین عرض داشته باشد.
  2. ردیف وسط را با سیم بلوز به زمین وصل کنید.
  3. بالاترین ردیف جک را به یک ردیف خالی در بالا وصل کنید (ردیف 10 در تصویر). این سیم حامل سیگنال صوتی است.
  4. پین دیجیتال ~ 9 را نیز به ردیف 10 وصل کنید.
  5. Ground را روی آردوینو خود به ریل زمینی روی تخته نان متصل کنید.
  6. لزوماً هنوز نیازی به استفاده از مقاومت و خازن ندارید ، اما اگر این کار را نکنید ، ممکن است متوجه صدای جیغ شدید شوید. به عنوان یک فیلتر کم گذر عمل می کند تا فرکانس های بالاتر از 15 کیلوهرتز را از بین ببرد.

با انتخاب File> Examples> Mozzi> Basics> Sinewave ، طرح Mozzi's Sinewave را در Arduino IDE باز کنید. این در اصل معادل موزی با "سلام جهان" است.

طرح را بارگذاری کرده و بلندگو را به تخته نان متصل کنید. اگر هنوز تخته نان را به جک صوتی وصل نکرده اید ، می توانید از زنگ صدا استفاده کنید.

اگر صدای بلند A4 (440 هرتز) را از بلندگوی خود نمی شنوید ، مطمئن شوید همه اتصالات شما خوب است و دوباره امتحان کنید.

بعد ، ما Nunchuck را به آردوینو متصل می کنیم!

مرحله 3: همه چیز را با هم ترکیب کنید

همه اش را بگذار کنار هم
همه اش را بگذار کنار هم

اکنون ما قصد داریم از مقدار رول از Nunchuck برای تغییر فرکانس یک Sinewave استفاده کنیم.

از Arduino IDE فایل> مثالها> Mozzi> حسگرها> فرکانس Piezo را انتخاب کنید

ما باید چند خط به این کد اضافه کنیم تا بتواند با Nunchuck کار کند. یک Includ به کتابخانه WiiChuck اضافه کنید و یک شی WiiChuck به نام chuck را مثال بزنید. همچنین می توانید اظهارنامه PIEZO_PIN را کامنت کنید یا فقط آن را حذف کنید زیرا ما از آن استفاده نمی کنیم.

#شامل "WiiChuck. H"

WiiChuck chuck = WiiChuck ()؛ // const int PIEZO_PIN = 3؛ // پین ورودی آنالوگ را برای پیزو تنظیم کنید

در حال حاضر در راه اندازی ، ما باید موارد زیر را اضافه کنیم:

chuck.begin ()؛ chuck.update ()؛

و در نهایت ما باید چند مورد را در updateControl () تغییر دهیم:

void updateControl () {

chuck.update ()؛ // دریافت آخرین داده های nunchuck // خواندن piezo // int piezo_value = mozziAnalogRead (PIEZO_PIN) ؛ // مقدار 0-1023 int piezo_value = map (خطی را که piezo_value را تنظیم می کند ، کامنت کنید و زیر را زیر آن اضافه کنید:

void updateControl () {chuck.update ()؛ // دریافت آخرین داده های nunchuck // خواندن piezo // int piezo_value = mozziAnalogRead (PIEZO_PIN) ؛ // مقدار 0-1023 است // ما به خط بالا نیاز نداریم اما چرا رول را در همان محدوده ترسیم نمی کنیم؟ int piezo_value = map (chuck.readRoll () ، -180 ، 180 ، 0 1023) ؛

کد را بارگذاری کنید و فرکانس باید با رول Nunchuck شما مطابقت داشته باشد. سعی کنید آن را در محدوده فرکانس های مختلف ترسیم کنید. اگر در شکل زیر توجه بیشتری نکرده اید ، مقدار سنسور در 3 ضرب می شود ، بنابراین ما در حال حاضر آهنگ هایی را از 0 هرتز تا حدود 3000 هرتز پخش می کنیم.

مرحله 4: لمس نهایی

لمس نهایی
لمس نهایی

اکنون شما آماده بارگذاری آخرین نسخه از کدی هستید که از مرحله قبل با هم ترکیب کرده ام و چند نمونه دیگر از موزی (به طور دقیق Phase_Mod_Envelope و Control_Gain). برای سهولت زندگی من همچنین یک فایل به نام pitches.h را اضافه کردم که به سادگی مقادیر فرکانس را با نام یادداشت های آشنا (به عنوان مثال NOTE_A4) تعریف می کند.

من پیشنهاد می کنم اسناد Mozzi را بخوانید زیرا بیشتر کد مستقیماً از مثالها به جز کد Nunchuck است.

در اینجا پیوندی به مخزن Git من وجود دارد. همه فایلهای مهم به جز کتابخانه Mozzi که باید از وب سایت آنها دریافت کنید تا به روز باشد ، گنجانده شده است. WiiMusic.ino را بارگیری کرده و آن را در دستگاه خود بارگذاری کنید تا بفهمید چگونه به نظر می رسد. پیشنهاد می کنم با پارامترهایی که در حال تغییر آن هستم (تغییر محدوده نقشه ، تقسیم/ضرب اعداد و …

بازتاب

من احساس نمی کنم که کاملاً تمام شده ام. این بدان معنا نیست که من از پروژه یا صدای آن راضی نیستم ، اما احساس می کنم انگشتان پای خود را در دنیای جدیدی فرو برده ام که می خواهم در آن جستجو کنم ، بنابراین در ادامه شاخه جدیدی از این پروژه اضافه خواهم کرد. برای کار.

با این وجود ، گفته می شود این اولین سفر واقعی من به دنیای میکروکنترلرها بود ، بنابراین من از تجربه یادگیری بسیار سپاسگزارم. حدود بیست ساعت که روی آن کار کردم ایده های کریسمس را برای خودم و عملاً برای همه اعضای خانواده ام به من داد. من تا حدودی متأسفم که در این پروژه با شخص دیگری کار نکرده ام زیرا می توانستم از راهنمایی ها و راهنمایی های زیادی در این راه استفاده کنم. با این حال ، من شخصاً از طریق آزمایشات خود چیزهای زیادی آموختم ، از جمله سه روز کشیدن موهایم برای رفع اشکال نرم افزاری که هرگز وجود نداشت (سیم داخلی Nunchuck شکسته بود).

هنوز تعدادی احتمال وجود دارد که به جلو حرکت می کنند. به عنوان مثال ، من دوست دارم از Arduino به عنوان یک نوع رابط MIDI بین کنترلر MIDI و هدفون استفاده کنم تا پارامترهای یادداشت MIDI را تغییر دهم زیرا تعداد زیادی از آنها وجود دارد (حجم ، قطع ، فرکانس پاکت ، خم زمین) ، مدولاسیون ، ویبراتو ، شما نام آن را بگذارید). این امر به شما امکان می دهد انعطاف پذیری بیشتری از جمله تغییر پارامترها با دکمه ها و پخش آکوردی که در آرایه C ++ کدگذاری نشده است را انجام دهید.

توصیه شده: