معرفی
اگر هر یک از پروژه های buzzer را تکمیل کرده باشید، تا به حال خواهید فهمید که ایجاد صدا در آردوینو لذت زیادی دارد. تنها مشکلی که ممکن است داشته باشید کیفیت صدا است. از آنجایی که MIDI یک پروتکل سریال است و آردوینو میتواند پیامهایی را روی پورت سریال تولید کند، میتوانیم از آردوینو برای ارسال سیگنالهای MIDI به رایانه شخصی استفاده کنیم و رایانه شخصی نویزها را با استفاده از یک سینت سایزر MIDI پخش کند.
شما نیاز خواهید داشت
- مقاومت 1×220 اهم
- 1 عدد جک MIDI
- سیم های جامپر
- آداپتور USB MIDI
من از یک جک MIDI با پین ها برای نصب روی PCB استفاده کردم و آن را، یک مقاومت و تعدادی هدر را به یک قطعه کوچک نوار لحیم کردم. برخی از افراد سیم ها و مقاومت را مستقیماً به پین ها لحیم می کنند - همچنین راه حل خوبی است.
ساخت مدار
کابل MIDI آداپتور USB را به کانکتور MIDI وصل کنید و کابل USB را وصل کنید.
برنامه نویسی آردوینو
برای شنیدن یادداشت ها، باید نرم افزاری را روی رایانه شخصی خود نصب کنید. من از صفحه کلید مجازی پیانو میدی برای مشاهده/شنیدن صدای MIDI استفاده کردم. پس از نصب، باید مطمئن شوید که نرم افزار را برای دریافت ورودی MIDI تنظیم کرده اید. با اتصال آداپتور USB و نصب درایورها (معمولاً خودکار)، به منوی ویرایش بروید و اتصالات MIDI را انتخاب کنید . مطابق شکل زیر کامل کنید،
همچنین تنظیمات اکتاو پایه در پنجره اصلی را به 2 تغییر دادم . سپس کد تمام نتهایی را که میتوانید روی صفحه ببینید با سایر تنظیمات در مقادیر پیشفرضشان پخش میکند.
در این مرحله، بهتر است VMPK را ببندید. در واقع، زمانی که طرحی را در آردوینو آپلود می کنید، همیشه VMPK را ببندید یا جامپری را که در پین 1 دارید بیرون بیاورید.
کد زیر تمام نتهایی را که میتوانید روی صفحه مشاهده کنید به ترتیب پخش میکند و پس از اتمام، دنباله را تکرار میکند.
void setup() {
// Set MIDI baud rate:
Serial.begin(31250);
}
حلقه خالی () {
برای (int note = 0x18; note < 0x53; note ++) {
//Note on channel 1 (0x90), مقداری نت (note), Middle velocity (0x45):
noteOn(0x90, note, 0x45);
delay(300);
//Note on channel 1 (0x90), some note value (note), silent velocity (0x00):
noteOn(0x90, note, 0x00);
delay(100);
}
}
// یک نت MIDI را پخش می کند. بررسی نمی کند که
// cmd بزرگتر از 127 است یا اینکه مقادیر داده کمتر از 127 است:
void noteOn(int cmd, int pitch, int velocity) {
Serial .write(cmd);
سریال .write(pitch);
سریال .write( سرعت);
}
بخش کلیدی اسکچ رویه noteOn و پارامتر کلیدی همان pitch است . این مقادیر در این طرح به صورت هگزا دسیمال بیان میشوند - به نظر میرسد اکثر مراجع از هگز استفاده میکنند. مقدار از 0 تا 127 (یک مقدار 7 بیتی) است که هر عدد نشان دهنده یک یادداشت است.