چگونه با دستان خود یک کنترلر MIDI مبتنی بر آردوینو ارزان بسازید. چگونه با دستان خود یک کنترلر MIDI ارزان بر اساس آردوینو بسازیم خواندن موقعیت های پتانسیومتر

مدتهاست که می خواستم آهنگساز درونم را بیدار کنم و شروع به ساخت موسیقی الکترونیک خودم کنم. با این حال، من (به بیان ملایم) از قیمت بالای کنترلرهای MIDI دلسرد شدم. اما پس از جستجو در اینترنت، به این فکر افتادم که با استفاده از آردوینو Uno و رنگ های رسانا، کنترلر خود را بسازم!

بیا شروع کنیم)

مرحله 1: انتخاب قطعات

می‌توانید کمی از مواد ارائه‌شده منحرف شوید و کنترل‌کننده MIDI که مونتاژ کرده‌اید همچنان کار می‌کند (منظورم از «کمی انحراف» این است که می‌توانید یک مقاومت با مقدار کمی متفاوت نصب کنید یا یکی از پایه‌ها را جدا کنید).

از الکترونیک ما نیاز داریم:

  • 1 آردوینو Uno با کابل USB.

  • 1 شیشه رنگ رسانا؛

  • 1 صفحه نصب به اندازه 5x7 سانتی متر؛

  • 3 دکمه؛

  • مقاومت با مقاومت 2.2 کیلو اهم؛

  • 1 LED؛

  • مقاومت با مقاومت 10 کیلو اهم؛

  • 1 حسگر LDR؛

  • مقاومت با مقاومت 4.7 کیلو اهم؛

  • 1 جامپر؛

  • 12 عدد مقاومت 2.7 MΩ؛

  • 30 پین مستقیم؛

  • 12 پین خم شده؛

  • 12 آداپتور؛

  • 12 گیره کاغذ.

علاوه بر وسایل الکترونیکی، به ابزارهای زیر نیز نیاز خواهید داشت:

  • آهن لحیم کاری و لحیم کاری;
  • سیم بر، دم باریک؛
  • پایه برای لحیم کاری قطعات (دست سوم)؛
  • مولتی متر؛
  • چندین سیم و/یا سیم فلزی نازک.

مرحله 2: پین ها را لحیم کنید

بیایید ساخت تخته را با لحیم کردن پین ها شروع کنیم. بیایید پست کنیم پین های خم شدهدر مرکز ردیف اول روی تخته. آنها متعاقباً به عنوان پین‌های «حساس» عمل خواهند کرد که صفحه‌کلید به آن‌ها متصل می‌شود.

پس از نصب پین ها، توجه کنید که پین ​​های کوتاه از روی تخته بیرون زده اند. روی آنها فشار می دهیم تا همه چیز یکدست شود. حالا آنها را لحیم می کنیم و بلافاصله اتصالات را از نظر اتصال کوتاه بررسی می کنیم.

توجه: پین ها را برای مدت طولانی لحیم نکنید، در غیر این صورت گرم می شوند و پلاستیک را ذوب می کنند.

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

هنگامی که برد را با موفقیت روی پین ها نصب کردید، مطمئن شوید که پین ​​ها با لبه بالایی برد همسطح هستند. پس از آن می توان آنها را لحیم کرد.

مرحله 3: جامپرها را لحیم کنید

حالا بیایید برد را از آردوینو جدا کرده و به سمت عقب برگردانیم. بیایید جامپرهایی را که بعداً اجزا به آنها وصل می شوند لحیم کنیم. دو راه برای انجام این کار وجود دارد:

  • تمام سوراخ های لازم را با لحیم کاری پر کنید و سپس آنها را به یکدیگر وصل کنید.
  • از سیم نازک استفاده کنید.

من به شما توصیه می کنم از روش دوم استفاده کنید زیرا ساده تر و سریعتر است. اگر این روش را انتخاب کردید، سیم را مطابق تصویر روی تخته قرار دهید.

  • نقطه قرمز به معنای لحیم کردن سیم به سوراخ است.
  • نقطه زرد - سیم نازک را به پین ​​طرف دیگر تخته وصل کنید (مانند تصویر سوم).

همانطور که می بینید، گوشه پایین سمت چپ را با لحیم کاری زیاد کمی به هم ریختم، پس مراقب باشید!

نکته: اگر سیم نازک ندارید، از تکه‌های سرنخ‌های مقاومت‌هایی که استفاده می‌کنید استفاده کنید.

مرحله 4: مقاومت های خازنی لمسی را لحیم کنید

ما اجزاء را نصب می کنیم، یعنی 2.7 MOhmمقاومت ها، که عملکردهای حسی- خازنی را انجام خواهند داد.

توجه: اگر می خواهید در مورد مبانی نظری و کاربردهای عملی حسگرهای خازنی لمسی بیشتر بدانید، به شما توصیه می کنم لینک های زیر را بررسی کنید:

بیایید یکی را قرار دهیم 2.7 MOhmمقاومتاز پایین سمت راست ترین پین خم شده و پاها را از سوراخ ها عبور دهید (مانند تصویر اول). حالا بیایید تخته را برگردانیم و یک سرب مقاومت را به سوراخ بعدی برگردانیم (همانطور که در تصویر دوم نشان داده شده است). پایه پایینی مقاومت را به سوراخ و پایه بالایی مقاومت را به ترمینال پین لحیم کنید. سپس ضمیمه خواهیم کرد 7 سیم سانتی مترروی این پین (همانطور که در تصویر سوم مشاهده می شود).

بیایید این روند را با تمام مقاومت ها و سیم ها تکرار کنیم و آنها را در جای خود لحیم کنیم. پایه های پایینی مقاومت ها باید یک اتصال طولانی تشکیل دهند.

مشاوره: رنگ های متناوب را برای سیم ها انتخاب کنید - این کار اتصالات را در مراحل بعدی آسان تر می کند.

مرحله 5: دکمه ها را لحیم کنید

بیایید مانند تصویر اول و دوم با قرار دادن دکمه ها و مقاومت ها روی برد شروع کنیم. در مورد من استفاده کردم 2.2 مقاومت های کیلو اهم، اما می توانید از هر مقاومتی با مقدار بین 2 کیلو اهم تا 10 کو اهم استفاده کنید.

بیایید تخته را برگردانیم و همه چیز را در جای خود لحیم کنیم. تصویر 3 اتصالات مختلفی را که باید ایجاد کنید توضیح می دهد:

  • نقطه آبی - نشان دهنده پایه دکمه است که باید روی تخته لحیم شود.
  • نقطه صورتی - پایه مقاومت را نشان می دهد که باید به تخته لحیم شود.
  • خط قرمز به این معنی است که باید دو نقطه را به یک اتصال لحیم کنید.
  • خط مشکی سیمی را نشان می دهد که از یک پایه دکمه از سوراخ تخته عبور می کند و سپس به پین ​​طرف دیگر متصل می شود.

اگر همه چیز به درستی لحیم شده باشد، دو دکمه سمت چپ به شما امکان می دهند اکتاو را تغییر دهید، در حالی که سمت راست ترین دکمه فعال خواهد شدسنسور LDR

مرحله 6: LDR و LED را لحیم کنید

پس از لحیم شدن دکمه ها، نصب LDR، LED و مقاومت های مربوطه را ادامه می دهیم. قبل از انجام این کار، عاقلانه است که مقادیر مقاومت هایی را که به LED می روند آزمایش کنید. شاید امتیاز من برای روشن کردن LED شما خیلی بالا باشد. کمی آزمایش کنید تا مقدار مقاومت صحیح را بیابید.

نکته: هر مقاومتی بین 330اهم و 5کیلو اهمراه حل خوبی برای 5 خواهد بودمیلی متررهبری.

اکنون LED، LDR و مقاومت ها را مرتب می کنیم ( 4.7 K برایLDR) در مکان های مناسب. بیایید تخته را برگردانیم و همه چیز را لحیم کنیم. تصویر سوم اتصالات مختلفی را که باید ایجاد شوند توضیح می دهد:

  • نقاط قهوه ای پین های LDR هستند که باید به برد لحیم شوند.
  • نقطه صورتی پایه مقاومتی است که باید به تخته لحیم شود.
  • نقطه های نارنجی پین های LED هستند که باید روی تخته لحیم شوند.
  • نوار قرمز - باید دو نقطه را به یک اتصال لحیم کنید.
  • نوار مشکی سیمی است که از خروجی مقاومت از سوراخ برد عبور می کند و سپس به پین ​​متصل می شود.

توجه: قبل از لحیم کاری LED، از درست بودن قطبیت LED اطمینان حاصل کنید. ترمینال مثبت LED باید به یک مقاومت و ترمینال منفی به زمین متصل شود.

مرحله 7: تمام اتصالات را تست کنید

اکنون زمان خوبی است تا بررسی کنید که آیا اتصالات دکمه ها، LDR و LED با موفقیت لحیم شده اند یا خیر. این آخرین فرصت برای رفع خطاهاست، به شما توصیه می کنم کد پیوست را دانلود کرده و برنامه را اجرا کنید. و دانلود کنید Arduino_Test_Fixture_Codeبه برد آردوینو

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

مرحله 8: پایان هیئت

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

بیایید تخته را برگردانیم و سیم ها را به طول لازم برش دهیم. آنها را به پین ​​هایی که به کانکتورهای آردوینو می روند لحیم کنید. قبل از شروع استفادهکنترلر MIDI، ابتدا باید اتصالات آن را با استفاده از یک طرح آزمایشی تست کنید. طرح را آپلود کنید، پورت سریال را باز کنید و پین های "حساس" روی برد را لمس کنید. اگر هنگام لمس هر پین، متن "Note x فعال است" را مشاهده کردید، همه پین ​​ها به درستی کار می کنند.

مرحله 9: آردوینو را به دستگاه MIDI تبدیل کنید

هنگامی که برد آماده شد، زمان تبدیل آردوینو به یک کنترلر MIDI است که توسط برنامه های موسیقی مانند Ableton و Fl Studio یا حتی سایر دستگاه های MIDI قابل شناسایی است. فرآیند شامل دو مرحله است:

  1. سیستم عامل فعلی Arduino Uno را به برنامه های سازگار با MIDI تغییر دهید.
  2. طرح MIDI را در آردوینو آپلود کنید.

بیایید از اولین نکته شروع کنیم. بر اساس شرایط در آردوینو بارگذاری می شود سیستم عاملپورت سریال USB، که به آردوینو اجازه می دهد تا با رایانه شخصی و آردوینو IDE پیام رد و بدل کند. با برنامه جدید DualMoco، یک حالت دوم اضافه خواهد شد که به آردوینو اجازه می دهد به عنوان عمل کند دستگاه های MIDI.

ما از برنامه FLIP استفاده می کنیم و دستورالعمل ها را برای تغییر سیستم عامل آردوینو دنبال می کنیم. شما یک فایل کار را در آرشیو در پوشه Firmware پیدا خواهید کرد - فایل DualMoco.hex.

پس از دانلود سیستم عامل جدید، آردوینو را دوباره به رایانه شخصی متصل کنید. اگر همه چیز خوب پیش برود، Arduino نباید توسط Arduino IDE شناسایی شود زیرا برنامه جدید در ( MIDIحالت). یک برنامه موسیقی که قابلیت ضبط MIDI را دارد باز کنید و بررسی کنید که آردوینو نامگذاری شده باشد MIDI/ MOCOبرایلوفاهمانطور که در تصویر اول می بینید در بالای تنظیمات MIDI نمایش داده شد.

مرحله 10: آماده سازی نهایی

خصوصیات عجیب و غریب DualMocoاین است که حالت دوم دارد - پورت سریال USB، که به شما امکان می دهد مانند سیستم عامل معمولی، طرح هایی را از Arduino IDE آپلود کنید. برای قرار دادن آردوینو در حالت دوم، دو پایه ISCP را مطابق تصویر 1 و 2 به هم وصل کنید. همانطور که در تصاویر نشان داده شده است می توانید از یک تکه سیم یا یک سیم بلوز کوچک استفاده کنید. حالا کابل USB را برای چند ثانیه از آردوینو جدا کرده و دوباره وصل کنید، آردوینو باید در آردوینو IDE نشان داده شود.

توجه: زمانی که می خواهید از حالت تغییر حالت دهیدیو اس بی-درگاه سریالVحالت MIDI، جامپر را از آن جدا کنیدپین های ISCP را همانطور که در تصویر سوم نشان داده شده است و دوباره وصل کنیدآردوینو به کامپیوتر.

زمان آپلود طرح فعلی در آردوینو است، آردوینو_نهایی_کد. آن را دانلود کنید، آردوینو را به آن تبدیل کنید یو اس بیدرگاه سریالحالت داده و کد را دانلود کنید. اگر نیاز به تنظیم دقیق آستانه دارید، با مقادیر آزمایش کنید آستانهو RES. هنگامی که همه چیز همانطور که انتظار می رود کار کرد، خط فعلی 17 را از زیر تغییر دهید:

بولی midiMode = false; // اگر midiMode = false باشد، آردوینو به عنوان یک دستگاه USB-to-Serial عمل می کند

بولی midiMode = درست;// اگر midiMode = true باشد، آردوینو به عنوان یک دستگاه MIDI بومی عمل خواهد کرد.

پس از اعمال تغییرات نهایی در کد، نوبت به آزمایش یک برنامه موسیقی می رسد که می تواند دستگاه های MIDI را پشتیبانی کند. ابتدا، اجازه دهید آردوینو را به حالت MIDI تغییر دهیم، برای این:

  1. بیایید کد نهایی را در آردوینو آپلود کنیم.
  2. بیایید کابل USB را از آردوینو جدا کنیم.
  3. با حذف جامپر از پین های ISCP، آردوینو را به حالت MIDI تغییر دهید.
  4. بیایید کابل USB را در آردوینو نصب کنیم.

اگر همه چیز خوب پیش رفت، برنامه موسیقی را باز کنید و شروع به لمس پین ها کنید. صداهای جادویی باید به گوش برسد...

مرحله 11: گیره های کاغذ را روی جامپرها لحیم کنید

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

فرآیند لحیم کاری گیره کاغذ به سیم بسیار ساده است:

  1. دوشاخه یک طرف سیم را قطع کنید.
  2. سیم عایق را 5 میلی متر از بین می بریم.
  3. سیم جدا شده را به یک گیره کاغذ لحیم کنید.
  4. این کار را برای هر 12 گیره کاغذ تکرار کنید.

نکته: منگنه ها نباید با هیچ پوششی (رنگ یا پلاستیک) پوشیده شوند.

مرحله 12: رنگ آمیزی الگو

در حالی که می توان صفحه کلید MIDI آردوینو را تنها با لمس گیره های کاغذ پخش کرد، ساخت شابلون خود و استفاده از آن بسیار سرگرم کننده تر است. قالب چاپ شده را رنگ آمیزی کرد. قالب در آرشیو پروژه موجود است.

رنگ آمیزی قالب بسیار ساده است، فقط مطمئن شوید که بین خطوط فاصله بگذارید و از رنگ های مناسب استفاده کنید، در غیر این صورت کار نمی کند. پس از خشک شدن رنگ، گیره های کاغذ را به "کلیدها" وصل کنید و می توانید شروع به ساخت موسیقی کنید.

با تشکر از توجه شما!)

صفحه کلید برای اتصال به یک ماژول صدای خارجی یا رایانه (در صورت وجود رابط مناسب) با استفاده از پروتکل MIDI - برای ضبط موسیقی در یک برنامه ترتیب دهنده یا اجرای زنده طراحی شده است. تعداد کلیدها در نسخه پیشنهادی 48 عدد است، اما می توان بدون تغییر مدار آن را به 64 عدد افزایش داد.

تاریخچه دستگاه

مدتی پیش، در رابطه با خرید یک آپارتمان، من مجبور شدم یک ابزار مجلل را که به عنوان یک صفحه کلید MIDI برای من خدمت می کرد را از دست بدهم - آن YAMAHA DX-7 افسانه ای بود. وقتی غم فروکش کرد، این سوال با شدت و زشتی تمام شد: روی چه چیزی کار کنیم؟ در همین لحظه بود که با تلاش دوستم یک مدار نیمه مونتاژ شده برای KR1816BE39 (در حریف این پردازنده 8048 نامیده می شود) به دستان من افتاد. مونتاژ و راه اندازی مدار آسان است و مهمتر از همه، در زمان مناسب به دست می آید. من صفحه کلید را در قالب یک ماتریس 8x6 با استفاده از KR1533ID7 و KR1533KP7 مونتاژ کردم. همچنین یک مگس در پماد وجود داشت - دو اشکال این طرح تمام مزایای آن را از بین می برد: عدم حساسیت به سرعت ضربه زدن به کلید (بلندگوها) و چرخ PITCH WEEL. خوب، من یک بار روی Z-80 برنامه‌نویسی کردم (و حتی یک ترتیب‌دهنده کار درست کردم) و تصمیم گرفتم روزهای گذشته را کنار بگذارم. من قاطعانه Z-80 را به عنوان یک CPU به عنوان منسوخ اخلاقی رد کردم. علاوه بر این، من نمی خواستم لحیم کاری زیادی انجام دهم و تصمیم گرفتم همین دستگاه را روی KR1816BE39 به عنوان پایه استفاده کنم و آن را با یک مالتی پلکسر دیگر برای شکستن کنتاکت های (بالایی) کلیدها تجهیز کنم. من مستنداتی (باورتان نمی‌شود - در کتابخانه، کتاب «طراحی دستگاه‌های دیجیتال روی ریزپردازنده‌های تک‌تراشه») برای اسمبلر KR1816BE39 پیدا کردم و برنامه‌ای را خط زدم... و بعد معلوم شد که برنامه‌نویس رام یکی از دوستانم مرد، و به سادگی چیزی برای فلش کردن برنامه وجود نداشت... از غم و اندوه کاملاً عقلم را از دست دادم و تصمیم گرفتم همان الگوریتم را برای PIC بازنویسی کنم. در نیم روز پروگرامر (LUDIPIPO) به هم لحیم شد، سپس نمونه اولیه از یک سوکت KR1533ID7 و یک جفت KR1533KP7 ساخته شد و کل نصب توسط MGTF بدون هیچ مهری انجام شد. و روند شروع شد...

ابتدا یک نسخه غیر پویا از برنامه راه اندازی شد (برای کسانی که صفحه کلید دارند با هر کلید یک مخاطب هم ارائه می کنم). سپس نسخه پویا شروع شد. و سپس ایده اضافه کردن دکمه ها و یک نشانگر به وجود آمد. واقعیت این است که من یک WAVEBLASTER (یک سینتی سایزر قابل امواج دختر برای سیستم های صوتی بسیار قدیمی) داشتم که برای مدت طولانی بیکار بود. با اتصال آن به ساخته‌ام، چیزی به دست آوردم که می‌توانید (در حد توانایی و استعداد خود) بدون رایانه بازی کنید، که گاهی اوقات بسیار راحت است. این مجموعه عملکردها را روی دکمه ها تعیین می کند - می تواند هنگام اتصال به ماژول های صدا در حین پخش "زنده" مفید باشد. عملکرد دکمه ها با نوشتن کنترل کننده های خود و استفاده از روش های نظرسنجی و نمایش من به راحتی قابل تغییر است. به نوعی ، صفحه کلید مونتاژ شده در یک جعبه آهنی راحت تر از YAMAHA PSS بود (کلیدهای با اندازه کامل ، پدال و مهمتر از همه پویایی!). در میانه فرآیند خلاقانه، میل دشواری برای ساختن نسخه ای از صفحه کلید MIDI صرفاً برای رایانه ایجاد شد - نشانگر و دکمه ها اختیاری هستند، اما چرخ های PITCH WEEL و MODULATION مورد نیاز هستند. مدتی با آن مبارزه کردم، اما در نهایت منصرف شدم و دوباره آهن لحیم کاری را روشن کردم. مونتاژ قطعات الکترونیکی دشوار نیست، اما مکانیک آن تا حدودی دشوارتر است، و من شروع به چروک شدن ابرویم روی طرح چرخ کردم. پس از کمی فکر، تصمیم گرفتم چرخ دوم را رها کنم - به هر حال، من هرگز هر دو را یکجا نمی چرخانم، معمولا ابتدا یادداشت می نویسم و ​​زیر و بم می نویسم، سپس مدولاسیون را اضافه می کنم. کمترین توجهی که به آن می شد نصف شدن حجم کارهای مکانیکی بود که خیلی دوستش داشتم. برای افرادی که کمتر تنبل هستند، در زیر نحوه ساخت دو چرخ تقریباً بدون پیچیدگی را توضیح خواهم داد. برای اینکه بتوانم مدولاسیون بنویسم، تصمیم گرفتم سه حالت کار چرخ را سازماندهی کنم: گام برای 2 نیم‌تن، گام برای 1 نیم‌تون (راحت)، و مدولاسیون. می توانید همه اینها را با یک دکمه تغییر دهید و حالت را با یک جفت LED نشان دهید. برای ساده کردن مدار، دکمه ها و نشانگرهای باقیمانده را حذف کردم، همه اینها برای کار با برنامه های توالی سنجی مدرن مورد نیاز نیست.

چرخ را البته باید روی محور پتانسیومتر گذاشت، این قابل درک است، اما باید به چه چیزی وصل شود؟ اولین فکر من استفاده از یک شات بر روی تایمر 555 بود، اما محاسبات نشان داد که هنگام تلاش برای ارائه نرخ نمونه برداری چرخ قابل قبول، دستیابی به دقت و ثبات در اندازه گیری عرض پالس دشوار خواهد بود، زیرا پردازنده عمدتاً مشغول اندازه گیری است. زمان تعویض مخاطبین صفحه کلید تنها راه باقی مانده استفاده از مبدل آنالوگ به دیجیتال (ADC) است. از آنجایی که من از یک Pic16F84 بدون ADC داخلی استفاده کردم، پیشینه مهندسی خود را به یاد آوردم (و کارخانه بومی خود) و یک ADC از چندین مقاومت با یک مقایسه کننده (و یک قطعه برنامه) ساختم. ساده، ارزان و کاملا دقیق معلوم شد.

من هر دو نمودار را ارائه می دهم - هم با دکمه ها و هم با چرخ، و همچنین برنامه هایی برای آنها. در صورت تمایل، هر دو مدار را می توان با تغییر جزئی آدرس های دستگاه های خارجی به راحتی ترکیب کرد، فقط باید به خاطر داشته باشید که حالت CHORUS (STEREO) از pitch برای به دست آوردن تنظیم استفاده می کند و شما باید آن را حذف کنید، یا نگران انتقال گام با جداسازی باشید. در سراسر کانال ها

بنابراین - صفحه کلید واقعی

نمودار دستگاه

اولین نسخه ای که ظاهر شد یک نسخه غیر دینامیک بود که به نیروی ضربه روی کلید حساس نبود - برای آزمایش عملکرد طرح.

من از PIC16F84 به‌عنوان یک پردازنده به چند دلیل استفاده کردم: این تراشه در دسترس، ارزان و آسان برای برنامه‌نویسی است، و همان چیزی بود که در دست داشتم. توجه: PIC16C84 مناسب نیست - فقط 36 سلول رم دارد و برنامه کار نخواهد کرد. با این حال، مدار چرخ از سلول‌های RAM کمتری استفاده می‌کند و برنامه آن را می‌توان با کاهش چند سلول دیگر، برای مثال MIDCH (با اختصاص یک کانال MIDI ثابت به همه داده‌های ارسالی) در PIC16C84 فشرده کرد.

نمودار یک صفحه کلید پویا با نشانه در زیر نشان داده شده است:

مدار از بسیاری جهات سنتی است - اختراع مجدد یک دوچرخه بدون پدال و چرخ دشوار است - پورت B برای انتقال کار می کند - 7 بیت پایین آدرس کلید را در ماتریس یا داده های دستگاه های خارجی (نشانگر و چرخ DAC) خروجی می دهد. مهم ترین بیت برای خروجی داده های MIDI در کد سریال استفاده می شود - تبدیل و خروجی در نرم افزار انجام می شود. بنابراین کریستال باید در 4 مگاهرتز باشد مگر اینکه بخواهید روال خروجی بایت MIDI را بازنویسی کنید. دو بیت کم اهمیت پورت A برای دریافت کار می کنند - آنها سیگنال هایی را از مالتی پلکسرهای مخاطبین کلید "رها شده" و "فشرده شده" دریافت می کنند و سه بیت مهم آدرس دستگاه خارجی را تعیین می کنند (از طریق رمزگشای KR1533ID7 دیگر). در مدار با چرخ، رمزگشای آدرس دستگاه خارجی را رها کردم تا مدار را ساده کنم و بیت بالای پورت PA4 را برای ورودی داده از مقایسه کننده آزاد کنم، بنابراین آدرس های صفحه کلید و دکمه ها متفاوت است. هنگام ترکیب مدارها، این ریزمدار باید برگردانده شود، برای رمزگشایی آدرس، استفاده از بیت های پورت PA2 و PA3، و آدرس 4 دستگاه: صفحه کلید، دکمه ها، ثبت داده های نشانگر پویا و ثبت آشنایی با نشانه های پویا. نشانگر حالت چرخ باید بازنویسی شود.

مدار با چرخ PITCH WEEL / MODULATION به شکل زیر است:

روی هر کلید یک دیود برای جداسازی نصب شده است. مقاومت در ورودی مالتی پلکسرها نباید بیشتر از 8k باشد، در غیر این صورت به دلیل ظرفیت نصب ممکن است اشکالاتی ایجاد شود. نشانگر - هر یک با یک آند مشترک برای 3 رقم، اگر پایانه های بخش های هر رقم به طور جداگانه خروجی شوند، پایانه های بخش های همنام باید ترکیب شوند - نشانگر پویا است و ارقام به طور متوالی روشن می شوند. هر دکمه، بدون قفل، پرش تماس توسط نرم افزار کنترل می شود. LED ها در نزدیکی دکمه هایی با همین نام نصب می شوند و نشان می دهند که حالت های مربوطه فعال می شوند، دکمه های "+" و "-" LED ندارند. ترانزیستورهای روی نشانگر دارای رسانایی معکوس با توان کم و فرکانس بالا هستند. دو رجیستر KR1533IR23 برای بستن متناوب آدرس و کد رقم نشانگر فعلی استفاده می شود (ال ای دی ها نیز به دو شبه رقم گروه بندی می شوند). من از یک صفحه کلید استاندارد از ارگان های برق شوروی با 48 کلید استفاده کردم (همچنین به طور جداگانه به عنوان طراح رادیو "START" تولید شد و کاملاً گسترده است). برای کاهش ارتفاع کیبورد و ضخامت ساز، دو گروه از شش گروه تماس زیر هر کلید باقی مانده و کل آن بریده شده و دوباره چسب زده شده است. به طور کلی، یک گروه سوئیچینگ برای هر کلید کافی است، اما چسباندن آن به این روش راحت تر بود. باسبار مخاطبین "رها شده" و "فشرده شده" 8 کلید طول دارند. در صورت تمایل، می توانید از صفحه کلیدی نیز استفاده کنید که به جای یک گروه سوئیچینگ از مخاطبین، از دو جفت کنتاکت بسته استفاده می شود - یک جفت در ابتدای حرکت کلید بسته می شود، دیگری در پایان (مانند ابزارهای YAMAHA). در این حالت، سیگنال PA0 باید از خروجی معکوس مالتی پلکسر (پایه 6) تامین شود. بدون تغییر در مدار، می توانید از یک صفحه کلید با 64 کلید (استاندارد - 61، یعنی 5 اکتاو) استفاده کنید. در صورت لزوم، تعداد کلیدها را می توان به حداقل 127 افزایش داد، برای انجام این کار، باید رمزگشای KR1533ID7 دیگری را وارد مدار کنید.

بسیار مهم است که مکانیک ها را به خوبی تنظیم کنید - هنگام رها شدن کلیدها، کنتاکت های بالایی باید بسته شوند. اگر این کار انجام نشود، برنامه چنین کلیدهایی را فشار داده شده در نظر می گیرد و سعی می کند آنها را پردازش کند، بنابراین با فشار دادن مجدد این کلیدها صدایی تولید نمی شود. علاوه بر این، حداکثر تعداد نت هایی که می توان همزمان پخش کرد 10 نت است (اگر شخصی تعداد انگشتان دست خود را بیشتر کرده باشد، این تعداد به راحتی قابل تغییر است) و رها نکردن کلیدها این تعداد را کاهش می دهد. به همین دلایل، تعداد کلیدهای مشخص شده در روش نظرسنجی صفحه کلید باید با تعداد کلیدهای واقعی مطابقت داشته باشد. پرش تماس توسط نرم افزار سرکوب می شود.

برای یک ماتریس مقاومتی R-2R ADC، توصیه می شود مقاومت هایی با دقت 1-2٪ انتخاب کنید و مقادیر مطلق ممکن است متفاوت باشند، نسبت مهم است. با این حال، شما نباید مقدار اسمی را تا حد زیادی افزایش دهید، این به دلیل ظرفیت ورودی مقایسه کننده، زمان تبدیل را افزایش می دهد. من از مقاومت‌های SMD بدون تطابق استفاده کردم، اگرچه اندازه‌گیری‌ها نشان داد که در یک نوار نصب، مقاومت‌ها معمولاً با دقت بالای 1٪ مطابقت دارند. من مطمئن هستم که مدار با مقاومت های غیر دقیق کار می کند، اما خطی بودن مشخصه بدتر می شود. خود چرخ از دستگیره یک تلویزیون قدیمی ساخته شده است و دارای یک فنر در محور پتانسیومتر است که آن را به موقعیت وسط باز می گرداند. برای راحتی راه اندازی مکانیک، هنگامی که با فشار دادن دکمه حالت، برق را روشن می کنید، یک برنامه اشکال زدایی فعال می شود که زمانی که چرخ در موقعیت وسط قرار دارد LED را روشن می کند، این به شما امکان می دهد موقعیت صفر را به خوبی تنظیم کنید. چرخ روی محور پتانسیومتر اگر نیاز و تمایل به ساخت یک چرخ MODULATION جداگانه وجود دارد، باید به یک عنصر مقایسه کننده آزاد متصل شود (چهار مورد از آنها وجود دارد) و ماتریس R-2R برای هر دو چرخ مشترک است. برای تغییر خروجی مقایسه کننده ها، بهتر است از یک میکرو مدار اضافی استفاده کنید و از PA2 به عنوان سیگنال کنترل استفاده کنید.

در صورت تمایل، می توانید یک نسخه پویا از صفحه کلید را بدون نشانگر، دکمه ها و چرخ PITCH WEEL / MODULATION مونتاژ کنید - به سادگی بدون مونتاژ قسمت استفاده نشده مدار. تمام پارامترهای قابل تغییر با روشن شدن برق روی پیش فرض تنظیم می شوند...

همه اینها را می توان از هر چیزی تغذیه کرد. من یک استابلایزر 7805 دقیقا روی برد بدون هیت سینک دارم (در عکس به وضوح مشخص است). یک رادیاتور کوچک در صورتی که بیش از 9 ولت به آن عرضه شود مورد نیاز است. مقایسه کننده با ولتاژ 9 - 12 ولت تغذیه می شود، ترجیحا تثبیت شده است. بله، من از ریز مدارهای ساخت شوروی از سهام قدیمی استفاده کردم - تعداد زیادی آنالوگ مدرن آنها وجود دارد، جایگزینی امکان پذیر است و حتی مطلوب است - آنالوگ های مدرن مصرف کمتری دارند.

برنامه

الگوریتم پردازش کلیدهای فشرده از الگوریتم پیشنهادی در مجله "ابزارها و سیستم‌های ریزپردازنده" شماره 5، 1986 آمده است. این انتشار (یا بهتر است بگوییم، یک خطا در برنامه پیشنهادی) بود که من را بر آن داشت تا اسمبلر را مطالعه کنم. در واقع، تنها ایده گرفته شده از آنجا این بود که تعداد هر کلید فشار داده شده را در یک ناحیه اختصاص داده شده از RAM (CHAN) ثبت کنیم، به طوری که وقتی صفحه کلید دوباره نظرسنجی می شود، دوباره کلید پردازش شده قبلی را پردازش نکند. من دو سلول رم برای هر یک از کلیدهای فشرده شده اختصاص داده ام (در مجموع بیش از 10 عدد): در اولی، تعداد کلید فشرده شده ثبت می شود، در دومی - VELOCITY آن (سرعت فشار دادن). تکرار می کنم - فقط 20 تا از این سلول ها وجود دارد و آدرس شروع با نام CHAN داده می شود. علامت جفت آزاد، مهم‌ترین بیت خانه اول مجموعه است. مهم ترین بیت سلول دوم در حال تنظیم به این معنی است که NOTE ON برای این کلید قبلاً ارسال شده است و نیازی به پردازش بیشتر ندارد.

من کل برنامه را با جزئیات شرح نمی دهم. برای بقیه فورا فریمور آماده را در فایل Dinamic.hex و Pitchmod.hex قرار می دهم. من فقط چند نکته غیر بدیهی را توضیح می دهم. خوب، اول از همه، در مورد پویایی: در لحظه باز شدن مخاطبین بالای یک کلید، شماره آن در اولین سلول اولین جفت آزاد از ناحیه CHAN نوشته می شود و همزمان علامت جفت آزاد را بازنشانی می کند. مقدار اولیه VELOCITY = 127 در سلول دوم نوشته می شود. حساسیت صفحه کلید با فرکانس وقفه تعیین می شود، زیرا پردازش وقفه مقادیر VELOCITY را برای همه کلیدهایی که NOTE ON هنوز برای آنها ارسال نشده است، کاهش می دهد. وقفه ها توسط یک تایمر داخلی ایجاد می شوند. در لحظه بسته شدن کنتاکت های پایین کلید، علامت "انتقال" در سلول CHAN مربوطه تنظیم می شود و NOTE ON با VELOCITY فعلی منتقل می شود. برای بهبود منحنی حساسیت، مقادیر VELOCITY طبق قانون لگاریتمی کاهش می یابد: 1/16 قسمت آن، کاهش 1، از مقدار VELOCITY فعلی کم می شود، بنابراین، در حالی که کلید از تماس بالایی به پایین حرکت می کند یک، مقدار VELOCITY در سلول CHAN مربوطه طبق قانون لگاریتمی کاهش می یابد و هر چه کلید سریعتر حرکت کند، در لحظه بسته شدن کنتاکت های پایین کلید و ارسال NOTE ON، VELOCITY بیشتر می شود. وقفه ها همچنین نمایش پویا را کنترل می کنند، این کار برای حذف سوسو زدن نشانگر انجام می شود.
عملکردهای دکمه: TRANSPOSE - همه کلیدها به یک مینور مورد علاقه شما کاهش می یابند: محدوده +/- 15 نیم صدا. PRG یک تامبر (ابزار) را به یک پیش تنظیم داده شده (UP1-UP5) اختصاص می دهد و VOL حجم آن را اختصاص می دهد. پارامتر فعلی روی نشانگر نمایش داده می‌شود و می‌توان آن را با استفاده از دکمه‌های «+» و «-» تغییر داد. صدا به طور همزمان STEREO صدای از پیش تعیین شده فعلی را با یک "جلوگیری" جزئی (اثر "کر") به کانال های استریو راست و چپ ارسال می کند. دکمه SPLIT فعال نیست. پدال SUSTAIN از نظر مدار طراحی شده است، زیرا ظرفیت سیم آن نباید خیلی زیاد باشد. آدرس های کنترل کننده های دکمه در ابتدای برنامه در جدولی جمع آوری می شوند، هنگام تغییر عملکرد دکمه ها، می توانید آن را جایگزین کنید.

ADC چرخ نیم نرم افزار است، با استفاده از یک الگوریتم تقریب متوالی کار می کند، ماتریس R-2R تبدیل دیجیتال به آنالوگ را انجام می دهد. ابتدا یک عدد 1 در مهم ترین رقم به ماتریس R-2R اعمال می شود و مقایسه کننده تعیین می کند که آیا زیاد است یا کم. اگر مقدار کمی وجود داشته باشد، 1 در مهم ترین بیت باقی می ماند، اگر مقدار زیادی وجود داشته باشد - 0. سپس همین اتفاق با هر بیت مرتبه پایین بعدی (در مجموع 6 مرحله) رخ می دهد و یک عدد شش بیتی مربوط به آن را دریافت می کنیم. زاویه چرخش چرخ این دقت به نظر من کافی است، اما می توانید با افزایش ماتریس و برنامه تبدیل، یک بیت دیگر اضافه کنید.

طرح

به عنوان صفحه کلید واقعی، من از یک سازنده "Start" ساخت شوروی استفاده کردم، شاید پیدا کردن یک یاماها یا کاسیو قدیمی و غیرقابل استفاده آسان تر باشد، این مشکل ساخت کیس را نیز حل می کند - البته اگر ساز قدیمی نسبتا سالم است ...

یک برد مدار چاپی ساخته نشده بود - من صرف زمان برای سیم کشی و ساخت یک برد برای تولید یک کپی از دستگاه نامناسب می دانستم، و طرح بندی بر روی یک برد مدار با استفاده از جامپرهای MGTF ساخته شد. به عنوان یک اتصال دهنده و کابل به صفحه کلید، ما از یک کابل از درایوهای فلاپی از رایانه با یک رابط مربوطه در هر طرف استفاده کردیم - این امر مونتاژ/جدا کردن دستگاه نهایی را آسان تر می کند.

در مورد من، بدنه از ورق فولادی نازک (آنچه در دست بود) خم شده بود - با کناره های چوبی (مانند سازهای قدیمی شوروی).

خوب، به طور خلاصه، این همه است. موفقیت خلاقانه!

فهرست عناصر رادیویی

تعیین تایپ کنید فرقه تعداد توجه داشته باشیدخرید کنیددفترچه یادداشت من
طرح شماره 1.
میکروکنترلرPIC16F841 به دفترچه یادداشت
تراشهKR1533ID71 به دفترچه یادداشت
تراشهKR1533KP71 به دفترچه یادداشت
تنظیم کننده خطی

LM7805

1 به دفترچه یادداشت
دیود

KD522A

64 به دفترچه یادداشت
خازن22 pF2 به دفترچه یادداشت
خازن0.1 µF2 به دفترچه یادداشت
100μF2 به دفترچه یادداشت
مقاومت

220 اهم

2 به دفترچه یادداشت
مقاومت

6.8 کیلو اهم

8 به دفترچه یادداشت
تشدید کننده کوارتز4 مگاهرتز1 به دفترچه یادداشت
دکمه صفحه کلید 64 به دفترچه یادداشت
طرح شماره 2.
میکروکنترلرPIC16F841 به دفترچه یادداشت
تراشهKR1533ID72 به دفترچه یادداشت
تراشهKR1533KP72 به دفترچه یادداشت
تراشهKR1533IR232 به دفترچه یادداشت
تنظیم کننده خطی

LM7805

1 به دفترچه یادداشت
ترانزیستور دوقطبی

KT315A

5 به دفترچه یادداشت
دیود

KD522A

80 به دفترچه یادداشت
خازن22 pF2 به دفترچه یادداشت
خازن0.1 µF2 به دفترچه یادداشت
خازن الکترولیتی100μF2 به دفترچه یادداشت
مقاومت

180 اهم

7 به دفترچه یادداشت
مقاومت

220 اهم

2 به دفترچه یادداشت
مقاومت

6.8 کیلو اهم

16 به دفترچه یادداشت
مقاومت

8 کیلو اهم

1 به دفترچه یادداشت
تشدید کننده کوارتز4 مگاهرتز1 به دفترچه یادداشت
نشانگر دیجیتال 3 رقمی LED، با آندهای مشترک. 1 به دفترچه یادداشت
دیود ساطع نورقرمز12 به دفترچه یادداشت
کلید سوئیچ 64 به دفترچه یادداشت
دکمه 16 به دفترچه یادداشت
طرح شماره 3.
میکروکنترلرPIC16F841 به دفترچه یادداشت
تراشهKR1533ID71 به دفترچه یادداشت
تراشهKR1533KP72 به دفترچه یادداشت
مقایسه کننده

مدت زیادی است که برای تولیدکنندگان و مهندسان صدا، یک کنترلر MIDI به یک ویژگی مهم تبدیل شده است که به ایجاد موسیقی زیبا کمک می کند. سازهای مجازی همیشه صدای خاصی دارند، بنابراین تزئین هر ملودی هستند.

با توجه به اینکه بسیاری از نوازندگان به شدت نگران کیفیت محصولات خود هستند، این سوال پیش می آید که چگونه یک کنترلر نوع MIDI انتخاب کنیم؟ این مقاله نکات و معیارهای اساسی انتخاب را شرح خواهد داد.

کنترلر MIDI چیست؟

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

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

مزایای کنترلر MIDI چیست؟ واضح ترین: همه کاره و قابل حمل است. به لطف آن، می توانید تمام جلوه های مجازی را اعمال کنید و نرم افزارهای مدرن را کنترل کنید. به راحتی می توان آن را با استفاده از کیف لپ تاپ حمل کرد.

هنگام خرید به دنبال چه چیزی باشیم؟

قبل از خرید هر کنترلر، باید به این فکر کنید که برای چیست. پاسخگویی به سؤالات زیر مفید خواهد بود.

کنترلر برای چه مواردی استفاده خواهد شد؟ وسیله ای که برای اجراهای صحنه ای در نظر گرفته شده است باید دارای موادی باشد که در برابر فشارهای مکانیکی مقاوم باشد. با توجه به اینکه اکثر کنترلرها از پلاستیک ساخته شده اند، باید به گزینه های فلزی توجه کنید. همچنین باید در مورد نوع مکانیسم و ​​تعداد کلیدها تصمیم بگیرید. اگر تعداد آنها خیلی زیاد باشد، احتمال اشتباه گرفتن هدف هر یک از آنها در طول اجرای زنده وجود دارد.

یک کنترلر MIDI کوچک برای یک دی جی خوب عمل می کند. اگر شخصی الکترونیک را بفهمد، ساختن آن با دستان خود اصلاً دشوار نیست. این بدان معناست که دی جی ها اغلب از تجهیزات خانگی استفاده می کنند. در زیر می توانید در این مورد بیشتر بخوانید. شما باید چنین دستگاهی را با در نظر گرفتن این واقعیت خریداری کنید که به دستگیره و لغزنده نیز نیاز دارید. بدون آنها، برنامه (کنترل کننده MIDI فقط با آن کار می کند) عملکردهای مورد نظر را انجام نخواهد داد.

اگر یک نوازنده آهنگ‌ها را در رختخواب، هواپیما، ماشین یا مکان‌های دیگر ویرایش کند، مهم‌ترین نکته در انتخاب قابلیت حمل است. با توجه به اینکه دستگاه برقی است، باید به مواردی که می توان از گذرگاه USB شارژ کرد توجه کنید.

کنترلرهای MIDI از پایونیر

کنترلر MIDI پایونیر دستگاهی است که همیشه مورد تقاضا بوده است. این سازنده مدت هاست که در بین سه پیشرو برتر در بازار چنین تجهیزاتی قرار دارد. چه چیزی مدل های "مرتبط" پایونیر را از یکدیگر متمایز می کند؟ فقط وجود عملکردهای اضافی که شبیه دکمه های مکانیکی معمولی در کنترل پنل هستند. هر کنترل کننده ای از این برند دارای چرخ های دویدن عالی است. ظاهر جدی و ظریف است. اندازه چشمگیر دستگاه با حداکثر عملکرد آن جبران می شود.

نیازی به تعجب نیست که کدام مدل را انتخاب کنید. شما باید بلافاصله نگاه دقیق تری به DDJ-T1 بیندازید. این دستگاه توسط بسیاری توصیه می شود. نسبت قیمت به کیفیت بسیار خوب است. کنترل پنل راحت است، دکمه ها را می توان بدون مشکل فشار داد، و دستگاه حمل آسان است.

Novation Launchpad Controller

کنترلر MIDI Novation Launchpad به طور خاص برای کار با Ableton Live طراحی شده است. این دستگاه هم برای فعالیت های صحنه و هم برای فعالیت های استودیو خانگی مناسب است. همچنین نگهداری دیسکو با آن آسان خواهد بود. شبکه دستگاه از 64 دکمه تشکیل شده است. مجهز به جلوه های اضافی و همچنین عملکردهایی برای کار با نرم افزار است. این دستگاه می تواند به رایانه متصل شود و با خانواده ویندوز و برخی از سیستم عامل های دیگر کار می کند.

کنترلر MIDI DIY - واقعیت یا افسانه؟

کنترلرهای MIDI خانگی برای مدت طولانی مورد تقاضا بوده اند. برای تحقق بخشیدن به ایده شما چه چیزی لازم است؟ شما نیاز به نموداری دارید که بر اساس آن دستگاه لحیم و مونتاژ می شود، بودجه، یک فیزیکدان یا یک برق کار خبره در این زمینه.

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

مدل برند آکای

آکای ​​اخیرا یک کنترلر جدید به نام MPC Touch منتشر کرده است. برخلاف دستگاه های مرتبط، این صفحه نمایش ۷ اینچی دارد. این کار با آن را بسیار آسان تر می کند. بر اساس بررسی ها، باید گفت که این مدل توصیف شده است که به عنوان نمونه در مورد کنترل کننده های حرفه ای استفاده می شود. با نگاه کردن به آن و با توجه به عملکرد، این سوال که چگونه چنین دستگاهی را انتخاب کنید بلافاصله ناپدید می شود. این نرم افزار بسیار سریع و کارآمد کار می کند، مشکلاتی ایجاد نمی شود و خرابی ها بسیار نادر است.

تنها عیب این است که کنترلر قادر به کار بدون منبع تغذیه نیست، زیرا باتری ندارد. برند آکای مدت زیادی است که در بازار شناخته شده است. کنترلر MIDI آن یک دستگاه قدرتمند و با کیفیت است که می تواند بارهای سنگین را تحمل کند. اغلب برخی از مدل ها در صحنه استفاده می شود.

کنترلر MIDI دستگاهی است که فرآیند فیزیکی خاصی را به مجموعه ای از دستورات دیجیتال در فرمت MIDI تبدیل می کند. فرآیند فیزیکی می تواند هر چیزی باشد، از فشار دادن یک کلید با انگشت گرفته تا چرخاندن دکمه صدا. جریان فرمان حاصل از طریق پروتکل MIDI به دستگاه‌های دیگر - رایانه، نمونه‌برداران سخت‌افزار، سینت سایزرها یا ترتیب‌دهنده‌های خارجی منتقل می‌شود و در آنجا به روش خاصی رمزگشایی می‌شود. رایج ترین نوع کنترلر MIDI صفحه کلید MIDI است - معادل الکترونیکی صفحه کلید پیانو. همچنین بسیاری از انواع دیگر کنترلرها از جمله کیت های درام الکترونیکی وجود دارد.

بازار مدرن تعداد زیادی از کنترل کننده های MIDI مختلف را برای تاسیسات الکترونیکی ارائه می دهد که در معیارهای مختلفی مانند قیمت، کیفیت، مشخصات فنی و غیره متفاوت هستند. چندین دستگاه کاربر نهایی نیز وجود دارد که به عنوان پروژه های تجاری (eDrum، megaDrum) پیاده سازی می شوند. اما، با وجود همه اینها، تمایل به ایجاد چنین وسیله ای با دستان خود هنوز در ذهن کولیبین های مدرن زندگی می کند.

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

به موازات نواختن سازهای زنده، موسیقی الکترونیک می نوشتم و مخصوصاً از سازهای VST و پلاگین ها برای ساخت قطعات درام استفاده می کردم، درام های اعتیادآور و ezDrums را ترجیح می دادم که قابلیت کار با رابط MIDI را دارند. حتی بدون گوگل کردن این موضوع، من با سر و صدا وارد ساخت کنترلر MIDI خودم روی یک میکروکنترلر مقرون به صرفه ATMega32 در یک بسته DIP شدم که دارای 8 کانال ADC بود. من نمی خواستم مدار را حصار کنم و تصمیم گرفتم خودم را به 8 ورودی محدود کنم. از آنجایی که ATMega32 USB سخت افزاری ندارد، من از اتصال استاندارد به کامپیوتر از طریق USB مجازی استفاده کردم. پس از چند روز درگیر برنامه نویسی، توانستم دستگاه را راه اندازی کنم. تعجب من را تصور کنید وقتی در اینترنت یک دستگاه آماده با نمودار مدار و سیستم عامل (MegaDrum) را کشف کردم. اما تمام کارهایی که انجام نمی شود برای بهتر شدن است.


USB کامل

من از نظر حرفه ای برنامه نویس هستم، اما از لحاظ شغلی برنامه نویس الکترونیک هستم، داوطلب رشته های فنی و همانطور که سرپرست سابقم می گفت سوئیسی، دروگر و نوازنده شیپور هستم. همانطور که اغلب اتفاق می افتد، من روی AVR ها متمرکز شدم، نه به این دلیل که نسبت به آنها احساس داشتم، بلکه به این دلیل که کاملاً از عملکرد آنها با ویژگی های فنی آنها راضی بودم. اما زمانی فرا رسید که آنها دیگر کافی نبودند. و سپس stm32 جایگزین آن شد، در میان چیزهای دیگر، داشتن یک رابط USB تمام عیار در هیئت مدیره. اینجا بود که ایده ساخت یک کنترلر MIDI تمام عیار مطرح شد. علاوه بر این، من قبلاً تجربه کار با رابط MIDI را داشتم.

از کجا شروع کنیم؟ ما stm32 را در بسته های DIP نداشتیم (اگر آنها حتی در طبیعت وجود داشته باشند)، بنابراین ایده لحیم کاری روی برد مدار بلافاصله ناپدید شد. درست در آن زمان، بردهای توسعه ارزان قیمت مبتنی بر میکروکنترلرهای stm32، مانند DISCOVERY، شروع به ظاهر شدن کردند. و اکنون من صاحب خوشحال برد اشکال زدایی STM32F407DISCOVERY هستم که شامل یک برنامه نویس ST-Link نیز می شود. پردازنده STM32F407 دارای 16 کانال ADC است، اگرچه 4 کانال توسط دستگاه های جانبی اشغال شده است که برد اشکال زدایی به سادگی با آنها پر شده است. اما برای اهداف من، 12 کانال کافی بود.


پس از گذراندن مدتی برای مطالعه محیط برنامه نویسی Keil، معماری ریزپردازنده STM32F407، و همچنین کتابخانه های استاندارد محیطی برای کار با USB، برنامه ای برای نظرسنجی همه کانال های ADC با استفاده از یک کانال دسترسی مستقیم به حافظه و همچنین یک USB ترکیبی ایجاد کردم. دستگاهی که شامل MIDI Audio Device و HID برای تغییر تنظیمات دستگاه است.

به عنوان سنسور برای درام ها، من از زنگ پیزو ZP-1 استفاده کردم که می توان آن را با قیمت ارزان در فروشگاه خریداری کرد.


من نمودار سیم کشی را از MegaDrum گرفتم.


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


این دستگاه بر روی ویندوز و لینوکس با استفاده از ردیاب Renoise آزمایش شد. هیچ مشکل خاصی در کار پیدا نشد.
اما تصمیم گرفتم به این نتیجه بسنده نکنم. STM32F407 یک پردازنده نسبتاً پیچیده است، بنابراین نسبتاً گران است. ساخت دستگاه با استفاده از STM32F103 ارزانتر بود. eBay به کمک آمد. من یک برد توسعه با STM32F103RBT6 روی برد خریدم.


درست است که برنامه نویس داخلی ندارد. من خوش شانس بودم زیرا هنوز یک برنامه نویس ST-Link از شغل قبلی خود داشتم.


من مجبور شدم سیستم عامل را کاملاً بازنویسی کنم ، زیرا اصول عملکرد پردازنده های 407 و 103 ، اگرچه به طور اساسی نیست ، اما متفاوت است.
سپس در اینترنت با یک برد اشکال زدایی مواجه شدم که در واقع یک پنی هزینه داشت و تصمیم گرفتم که از این طریق می توانم هزینه قطعات را به حداقل برسانم.

بیشتر مقالات موجود در اینترنت در مورد ساخت کیبورد MIDI، کنترلر، ریموت و ... می باشد. مبتنی بر استفاده از کانکتورهای MIDI هستند که اتصال آنها به یک رایانه مدرن می تواند مشکل ساز باشد. کارت‌های صوتی قدیمی‌تر دارای یک درگاه بازی بودند که می‌توانید یک جوی استیک یا دستگاه MIDI را به آن وصل کنید:

با این حال، تمام مادربردهای جدید دارای یک کنترلر صوتی داخلی هستند و کارت های صدا اغلب فاقد قابلیت اتصال دستگاه های MIDI هستند.
تنها چیزی که باقی می ماند این است که یک صفحه کلید MIDI مدرن، کنسول DJ و غیره بخرید. دارای خروجی USB برای اتصال به کامپیوتر یا خرید/لحیم کردن آداپتور یا خرید کارت صدای مخصوص با قابلیت اتصال دستگاه های MIDI. خرید، البته، مشکلی نیست، اما به این دلیل نیست که ما به این سایت آمدیم، درست است؟

در این مقاله می خواهم نشان دهم که چگونه می توانید از یک کنترلر ارزان قیمت آردوینو برای ساخت یک صفحه کلید MIDI ساده با اتصال USB برای 8 کلید و یک چرخ اسکرول استفاده کنید.

بنابراین من استفاده کردم:
کنترلر آردوینو UNO
8 عدد دکمه ها
8 مقاومت 10 کیلو اهم
انکودر چرخشی 25LB22-Q
تخته نان و جامپر

نمودار اتصال به شرح زیر است:

برای اتصال از ساده ترین گزینه استفاده کردم: 1 کلید - 1 ورودی. با این حال، با تعداد کلیدهای بیشتر، کنترلرهای مختلف و غیره. ممکن است ورودی‌های کافی وجود نداشته باشد، بنابراین باید از خواندن داده‌ها یا از طریق ورودی‌های آنالوگ (با افزودن مقاومت‌هایی با مقادیر مختلف) یا از طریق مالتی پلکس کردن استفاده کنید. با این حال، اگر چندین کلید را به ورودی آنالوگ متصل کنید، ممکن است هنگام فشردن چند کلید به طور همزمان، مشکلی در خواندن وضعیت ایجاد شود. بنابراین به نظر من مالتی پلکس گزینه قابل قبول تری است.

نرم افزار آردوینو

من ساختار داده های MIDI را در نظر نخواهم گرفت، زیرا ... این در مقاله توضیح داده شده است:

رمزگذار به ورودی های وقفه سخت افزاری متصل است، من شرحی از کار با آن را در نظر نخواهم گرفت این برنامه ساده است و از وب سایت رسمی آردوینو گرفته شده است.

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

داده های MIDI از رمزگذار، از آردوینو، با خط زیر ارسال می شود:
noteOn(0xB0، 0x01، encoder0Pos)؛
که در آن 0xB0 پیام کنترل کننده است (تغییر کنترل)
0x01 - کد کنترلر (در مورد ما مدولاسیون)
encoder0Pos - مقدار کنترل کننده (در مورد ما 0-127).
با تغییر کدهای کنترلر می توانید از چرخ اسکرول (رمزگذار) برای انواع کنترلرها استفاده کنید.

Pitch Bend نیز قابل ذکر است. از مشخصات MIDI چنین است که لازم است یک پیام سه بایتی ارسال شود: 0xE0 (کد Pitch Bend)، MSB (بایت بالا)، LSB (بایت کم).

دو بایت بیرونی یک مقدار گام 14 بیتی را ذخیره می کنند که می تواند از 0...16383 (0x3FFF) متغیر باشد. وسط 0x2000 است، همه چیز بالاتر از این مقدار باعث می شود که گام به سمت بالا تغییر کند، اگر پایین تر باشد، گام به سمت پایین تغییر می کند.
در کد برنامه، اگر به طور ناگهانی می خواهید به جای مدولاسیون از Pitch Bend استفاده کنید، خطوط را کامنت کردم (وسط مقدار، تجزیه به 2 بایت و غیره)

کد تشخیص فشار کلید شامل سه حالت است: یک کلید فشار داده می شود، یک کلید نگه داشته می شود و یک کلید آزاد می شود. این کار به این منظور انجام شد که مقدار مدت زمان فشار دادن کلید قابل انتقال باشد. اگر این لازم نیست، می توانید تنها یک حالت (فشردن کلید) را ترک کنید، برنامه در این مورد به طور قابل توجهی ساده می شود.
برای کنترل وضعیت هر یک از هشت کلید، از کد زیر استفاده می شود:

اگر (buttonState_C == HIGH && note_C_send_on == false) // کلید فشار داده شده است ( noteOn(0x90, note_C, 0x7F)؛ note_C_send_on = true؛ // Note On دستور ارسال note_C_send_off = نادرست؛ // Note Off اگر دستور دیگر ارسال نشد) (buttonState_C == HIGH && note_C_send_on == true) // اگر کلید نگه داشته شود ( noteOn(0x00, note_C, 0x7F)؛ note_C_send_on = true; note_C_send_off = false; ) در غیر این صورت اگر (buttonState &_OW) = false&_C ==L // اگر کلید آزاد شد ( noteOn(0x90, note_C, 0x00); note_C_send_on = false; note_C_send_off = true؛ encoder0Pos = 0؛ // موقعیت چرخ را به صفر برگردانید ....... ..... .. ... .... // تابعی برای ارسال پیام MIDI به پورت سریال void noteOn(int cmd, int pitch, int velocity) ( Serial.write(cmd); Serial.write(pitch); Serial. نوشتن (سرعت)؛

لطفاً توجه داشته باشید که اگر از pitch bend استفاده شود، باید encoder0Pos نه به صفر، بلکه به 0x2000 برگردانده شود (یا بهتر است تعریف را در ابتدای برنامه تنظیم کنید).

بنابراین، مدار مونتاژ می شود، طرح به کنترلر آپلود می شود، Serial Monitor را راه اندازی می کنیم، سرعت انتقال را به 115200 تغییر می دهیم و کلیدها را فشار می دهیم یا انکودر را می چرخانیم و مقادیر را نگاه می کنیم.
اگر همه چیز خوب است، به قسمت بعدی بروید. فوراً می گویم که برای من مشکل سازترین بود و اگر یک مبدل USB -> Midi مجازی پیدا نمی کردم ، این مقاله وجود نداشت.

نرم افزار کامپیوتر (ویندوز)

برای دریافت داده ها از طریق پورت COM مجازی USB از آردوینو و انتقال آن به هر برنامه ترتیب دهنده MIDI، به یک ابزار ویژه نیاز دارید: Serial MIDI Converter V2D (سایت اداری)

این برنامه چند پلتفرم است، برای من تحت ویندوز 7 x64 کار می کرد، البته با برخی مشکلات.

ما آن را راه اندازی می کنیم، پورت USB، نرخ باود (115200) و پورت ورودی MIDI و پورت خروجی MIDI را انتخاب می کنیم.

اکنون، تمام داده های MIDI که به پورت COM مجازی USB 12 می آیند به درگاه MIDI Yoke 6 هدایت می شوند (من از برنامه MIDI Yoke برای ایجاد پورت های MIDI مجازی استفاده کردم). می توانید آنها را به Microsoft GS Wavetable Synth و سایر پورت ها هدایت کنید.
برنامه باید همیشه روشن باشد. هنگامی که کلیدها را فشار می دهید یا دکمه رمزگذار را می چرخانید، نشانگر Serial RX در پایین باید چشمک بزند.

برای نمایش بصری داده های MIDI ورودی از پورت، برنامه MIDI-OX (سایت اداری) را بسیار مفید یافتم:

لطفاً توجه داشته باشید که در تنظیمات MIDI Devices باید پورت ورودی MIDI را تنظیم کنید.

اکنون، هنگامی که کلیدهای یادداشت را فشار می دهید یا چرخ را می چرخانید، داده های MIDI را در Monitor-Output مشاهده خواهید کرد.

که با کمک نرم افزار و سخت افزار توانستیم یک صفحه کلید MIDI ساده روی کنترلر آردوینو با انتقال داده ها به کامپیوتر برای پردازش های بعدی مثلا در Cubase و غیره بسازیم. شامل در زمان واقعی.
بر اساس این پروژه، می توانید یک کنسول DJ، یک صفحه کلید MIDI تمام عیار و غیره بسازید.

در زیر می توانید طرح INO، Serial MIDI Converter V2D، MIDI-OX و MIDI Yoke را دانلود کنید.