O'z qo'lingiz bilan Arduino-ga asoslangan arzon MIDI kontrollerni qanday qilish kerak. Qanday qilib o'z qo'lingiz bilan Arduino asosida arzon MIDI kontroller yasash mumkin Potansiyometr pozitsiyalarini o'qish

Men ko'pdan beri ichimdagi bastakorni uyg'otishni va o'z elektron musiqamni yaratishni boshlashni xohlardim. Biroq, (yumshoq qilib aytganda) MIDI kontrollerlarining yuqori narxlaridan tushkunlikka tushdim. Ammo Internetni o'rganib chiqqanimdan so'ng, men Arduino Uno va o'tkazuvchan bo'yoqlardan foydalangan holda o'z kontrollerimni yaratish g'oyasini oldim!

Keling, boshlaymiz)

1-qadam: qismlarni tanlash

Siz taqdim etilgan materialdan biroz chetga chiqishingiz mumkin va siz yig'gan MIDI kontrolleri hali ham ishlaydi ("bir oz og'ish" bilan siz biroz boshqacha qiymatga ega rezistorni o'rnatishingiz yoki pinlardan birini uzib qo'yishingiz mumkin degani).

Elektronikadan bizga kerak:

  • USB kabeli bilan 1 Arduino Uno;

  • 1 kavanoz o'tkazuvchan bo'yoq;

  • 5x7 sm o'lchamdagi 1 ta o'rnatish plitasi;

  • 3 tugma;

  • qarshilik 2,2 kOm bo'lgan rezistorlar;

  • 1 LED;

  • 10 kOhm qarshilikka ega rezistorlar;

  • 1 LDR sensori;

  • qarshilik 4,7 kOm bo'lgan rezistorlar;

  • 1 jumper;

  • 12 dona 2,7 MŌ rezistorlar;

  • 30 ta tekis pin;

  • 12 egilgan pin;

  • 12 adapter;

  • 12 ta qog'oz qisqichlari.

Elektronikaga qo'shimcha ravishda sizga quyidagi vositalar ham kerak bo'ladi:

  • Lehimlash temir va lehim;
  • Tel kesgichlar;
  • Lehimlash qismlari uchun stend (uchinchi qo'l);
  • multimetr;
  • Bir nechta simlar va / yoki ingichka metall sim.

2-qadam: pinlarni lehimlang

Keling, pinlarni lehimlash orqali taxtani yaratishni boshlaylik. Keling, e'lon qilamiz egilgan pinlar taxtadagi birinchi qatorning markazida. Keyinchalik ular klaviatura ulanadigan "sezgir" pinlar bo'lib xizmat qiladi.

Pimlarni o'rnatgandan so'ng, qisqa pinlar taxtadan chiqib ketishiga e'tibor bering. Biz ularning ustiga bosamiz, shunda hamma narsa tekislanadi. Endi biz ularni lehimlaymiz va qisqa tutashuvlar uchun ulanishlarni darhol tekshiramiz.

Eslatma: Pimlarni uzoq vaqt lehimlamang, aks holda ular isitiladi va plastmassani eritib yuboradi.

Keyingi qadam uchun to'g'ri taroqlarni tirqishlarga joylashtiring Arduino. Keling, taxtani Arduino-ga o'rnatilgan pinlar ustiga o'rnatamiz. Bu harakat biroz kuch talab qildi, chunki pinlar taxtadagi teshiklarga to'liq mos kelmagan.

Doskani pinlarga muvaffaqiyatli o'rnatganingizdan so'ng, pinlar taxtaning yuqori chetiga teng ekanligiga ishonch hosil qiling. Shundan so'ng ularni lehimlash mumkin.

3-qadam: jumperlarni lehimlang

Endi Arduinodan taxtani olib tashlaymiz va uni teskari tomonga aylantiramiz. Keling, keyinchalik komponentlar biriktiriladigan jumperlarni lehimlaylik. Buning uchun ikkita usul mavjud:

  • Barcha kerakli teshiklarni lehim bilan to'ldiring va keyin ularni bir-biriga ulang.
  • Yupqa simdan foydalaning.

Men sizga ikkinchi usuldan foydalanishni maslahat beraman, chunki u oddiyroq va tezroq. Agar siz ushbu usulni tanlasangiz, simni rasmda ko'rsatilgandek taxtaga joylashtiring.

  • Qizil nuqta simni teshikka lehimlashni anglatadi.
  • Sariq nuqta - ingichka simni taxtaning boshqa tomonidagi pinga ulang (uchinchi rasmda bo'lgani kabi).

Ko'rib turganingizdek, men juda ko'p lehim qo'yganimda pastki chap burchakni biroz chalkashtirib yubordim, shuning uchun ehtiyot bo'ling!

Maslahat: Agar sizda yupqa sim bo'lmasa, siz foydalanayotgan rezistorlar simlarining qoldiqlaridan foydalaning.

4-qadam: Sensorli sig'imli rezistorlarni lehimlang

Biz komponentlarni o'rnatamiz, ya'ni 2.7 MOhmrezistorlar, bu sensorli-kapasitiv funktsiyalarni bajaradi.

Eslatma: Agar siz sensorli sig'imli sensorlarning nazariy asoslari va amaliy qo'llanilishi haqida ko'proq bilmoqchi bo'lsangiz, sizga quyidagi havolalarni ko'rib chiqishni maslahat beraman:

Keling, birini joylashtiraylik 2.7 MOhmqarshilik eng o'ngdagi egilgan pinning pastki qismidan va oyoqlarni teshiklardan (birinchi rasmda bo'lgani kabi) suring. Keling, taxtani ag'darib, bitta rezistorni keyingi teshikka surib qo'yamiz (ikkinchi rasmda ko'rsatilganidek). Rezistorning pastki oyog'ini teshikka, rezistorning yuqori oyog'ini esa pin terminaliga lehimlang. Keyin biz biriktiramiz 7 sm sim bu pin ustiga (uchinchi rasmda ko'rinib turganidek).

Keling, jarayonni barcha rezistorlar va simlar bilan takrorlaymiz, ularni joyida lehimlaymiz. Rezistorlarning pastki oyoqlari bitta uzun ulanishni tashkil qilishi kerak.

Maslahat: Simlar uchun o'zgaruvchan ranglarni tanlang - bu keyingi bosqichlarda ulanishlarni osonlashtiradi.

5-qadam: tugmachalarni lehimlang

Birinchi va ikkinchi tasvirlarda bo'lgani kabi, tugmachalarni va rezistorlarni taxtaga joylashtirishdan boshlaylik. Mening vaziyatimda men foydalanardim 2.2 kOhm rezistorlar, lekin siz 2kOhm dan 10KOhm gacha bo'lgan qiymatga ega har qanday qarshilikdan foydalanishingiz mumkin.

Keling, taxtani aylantiramiz va hamma narsani joyiga lehimlaymiz. 3-rasmda siz amalga oshirishingiz kerak bo'lgan turli xil ulanishlar tushuntiriladi:

  • ko'k nuqta - taxtaga lehimlanishi kerak bo'lgan tugma oyog'ini ko'rsatadi;
  • pushti nuqta - taxtaga lehimlangan bo'lishi kerak bo'lgan qarshilik oyog'ini ko'rsatadi;
  • qizil chiziq ikkita nuqtani bitta ulanishga lehimlashingiz kerakligini anglatadi;
  • qora chiziq tugmaning bir oyog'idan taxtadagi teshikdan o'tadigan simni ko'rsatadi, keyin u boshqa tarafdagi pinga ulanadi.

Agar hamma narsa to'g'ri lehimlangan bo'lsa, ikkita chap tugma oktavalarni o'zgartirishga imkon beradi, eng o'ngdagi tugma esa faollashadiLDR sensori.

6-qadam: LDR va LEDni lehimlang

Tugmalar lehimlangandan so'ng biz LDR, LED va mos keladigan rezistorlarni o'rnatishni davom ettiramiz. Buni amalga oshirishdan oldin, LEDga o'tadigan rezistorlarning qiymatlari bilan tajriba o'tkazish oqilona bo'ladi. Ehtimol, mening reytingim LEDni yoqish uchun juda yuqori. To'g'ri qarshilik qiymatini topish uchun biroz tajriba qiling.

Maslahat: 330 gacha bo'lgan har qanday qarshilikOhm va 5kOm5 uchun yaxshi yechim bo'ladimmLED.

Endi biz LED, LDR va rezistorlarni joylashtiramiz ( 4.7 uchun KLDR) kerakli joylarda. Keling, taxtani aylantiramiz va hamma narsani lehimlaymiz. Uchinchi rasmda amalga oshirilishi kerak bo'lgan turli xil ulanishlar tushuntiriladi:

  • jigarrang nuqta LDR pinlari bo'lib, ular taxtaga lehimlanishi kerak;
  • pushti nuqta - taxtaga lehimli bo'lishi kerak bo'lgan qarshilik oyog'i;
  • to'q sariq nuqta - bu taxtaga lehimlash kerak bo'lgan LED pinlari;
  • qizil chiziq - ikkita nuqtani bitta ulanishga lehimlashingiz kerak;
  • qora chiziq - rezistorning chiqishidan taxta teshigi orqali o'tadigan sim, keyin pinga ulanadi.

Eslatma: LEDni lehimlashdan oldin, LEDning polaritesining to'g'ri ekanligiga ishonch hosil qiling. LEDning ijobiy terminali rezistorga, salbiy terminali esa erga ulangan bo'lishi kerak.

7-qadam: Barcha ulanishlarni tekshiring

Endi tugmalar, LDR va LEDlarning ulanishlari muvaffaqiyatli lehimlanganligini tekshirish uchun yaxshi vaqt. Bu xatolarni tuzatish uchun oxirgi imkoniyat, men sizga biriktirilgan kodni yuklab olishingiz va dasturni ishga tushirishingizni maslahat beraman. va yuklab oling Arduino_Test_Fixture_Code Arduino taxtasiga.

Har bir narsa muvaffaqiyatli bo'lsa va sinov tugallangan bo'lsa, keyingi bosqichga o'tishingiz mumkin. Agar yo'q bo'lsa, taxtadagi lehimli ulanishlarni ikki marta tekshiring. Multimetrni qo'lda ushlab turish yaxshiroqdir, men buni o'z achchiq tajribamdan aytaman.

8-qadam: Kengashni tugatish

Birinchi rasmda ko'rsatilganidek, simlarni teshiklarga o'rnatishdan boshlaylik. Ushbu bosqich uchun turli rangdagi ikkita simni ishlatish qulay.

Keling, taxtani aylantiramiz va simlarni kerakli uzunlikka kesib tashlaymiz. Ularni Arduino ulagichlariga kiradigan pinlarga lehimlang. Foydalanishni boshlashdan oldin MIDI kontrolleri, avval siz uning ulanishlarini sinov eskizi yordamida sinab ko'rishingiz kerak. Eskizni yuklang, ketma-ket portni oching va doskadagi "sezgir" pinlarga teging. Har bir pin uchun "Eslatma x faol" yozuvini ko'rsangiz, unga teginsangiz, barcha pinlar to'g'ri ishlayapti.

9-qadam: Arduino-ni MIDI qurilmasiga aylantiring

Kengash tayyor bo'lgach, Arduino-ni Ableton va Fl Studio kabi musiqa dasturlari yoki hatto boshqa MIDI qurilmalari tomonidan tan olinadigan MIDI kontrolleriga aylantirish vaqti keldi. Jarayon ikki bosqichdan iborat:

  1. Arduino Uno-dagi joriy dasturiy ta'minotni MIDI-ga mos keladigan dasturlarga o'zgartiring;
  2. MIDI eskizini Arduino-ga yuklang.

Birinchi nuqtadan boshlaylik. Shart bo'yicha Arduino-ga yuklangan proshivkaUSB-seriyali port, bu Arduino-ga shaxsiy kompyuter va Arduino IDE bilan xabar almashish imkonini beradi. Yangi dastur bilan DualMoco, ikkinchi rejim qo'shiladi, bu Arduino rolini bajarishga imkon beradi MIDI qurilmalari.

Biz FLIP dasturidan foydalanamiz va Arduino proshivkasini o'zgartirish uchun ko'rsatmalarga amal qilamiz. Arxivda ishlaydigan faylni Firmware papkasida topasiz - DualMoco.hex fayli.

Yangi dasturiy ta'minotni yuklab olgandan so'ng, Arduino-ni kompyuterga qayta ulang. Agar hammasi yaxshi bo'lsa, Arduino Arduino IDE tomonidan aniqlanmasligi kerak, chunki yangi dastur (( MIDIrejimi). MIDI yozish imkoniyatiga ega bo'lgan musiqa dasturini oching va Arduino nomini tekshiring MIDI/ MOKOuchunLUFA 1-rasmda ko'rib turganingizdek, MIDI sozlamalari ustida ko'rsatilgan.

10-qadam: Yakuniy tayyorgarlikni amalga oshirish

O'ziga xoslik DualMoco bu ikkinchi rejimga ega - USB-seriyali port, bu oddiy proshivka kabi Arduino IDE-dan eskizlarni yuklash imkonini beradi. Arduino-ni ikkinchi rejimga o'tkazish uchun 1 va 2-rasmda ko'rsatilganidek, ikkita ISCP pinini bir-biriga ulang. Rasmlarda ko'rsatilganidek, siz sim yoki kichik o'tish simidan foydalanishingiz mumkin. Endi USB kabelini Arduino-dan bir necha soniya ajratib oling va uni qayta ulang, Arduino Arduino IDE-da paydo bo'lishi kerak.

Eslatma: Agar rejimdan o'tmoqchi bo'lsangizUSB-ketma-ket portVMIDI rejimi, jumperni olib tashlangUchinchi rasmda ko'rsatilganidek, ISCP pinlarini joylashtiring va qayta ulangArduino kompyuterga.

Joriy eskizni Arduino-ga yuklash vaqti keldi, Arduino_Final_Kod. Yuklab oling, Arduino-ni o'zgartiring USBketma-ket port rejimiga o'ting va kodni yuklab oling. Agar siz chegarani aniq sozlashingiz kerak bo'lsa, qiymatlar bilan tajriba o'tkazing Ostona Va RES. Hamma narsa kutilganidek ishlagandan so'ng, joriy qatorni 17 dan o'zgartiring:

mantiqiy midiMode = noto'g'ri; // agar midiMode = noto'g'ri bo'lsa, Arduino usb-dan seriyali qurilma sifatida ishlaydi

mantiqiy midiMode = rost;// agar midiMode = rost bo'lsa, Arduino mahalliy MIDI qurilmasi sifatida ishlaydi.

Kodga yakuniy o'zgartirishlar kiritilgandan so'ng, MIDI qurilmalarini qo'llab-quvvatlaydigan musiqa dasturini sinab ko'rish vaqti keldi. Birinchidan, Arduino-ni MIDI rejimiga o'tkazamiz, buning uchun:

  1. Yakuniy kodni Arduino-ga yuklaymiz.
  2. USB kabelini Arduino-dan olib tashlaymiz.
  3. Jumperni ISCP pinlaridan olib tashlash orqali Arduino-ni MIDI rejimiga o'tkazing.
  4. USB kabelini Arduino-ga o'rnatamiz.

Har bir narsa yaxshi bo'lsa, musiqa dasturini oching va pinlarga tegishni boshlang. Sehrli tovushlar yangrashi kerak...

11-qadam: Qog'oz qisqichlarini jumperlarga lehimlang

Arduino platasi to‘liq qurib bo‘lingandan so‘ng, asosiy e’tiborni klaviaturaga va uni doskaga ulashga o‘tish vaqti keldi. Buni qilishning millionlab usullari bor, lekin men bo'yalgan qog'ozga mahkamlanadigan qog'oz qisqichlarini tanladim (ularni mahkamlash oson va qayta ishlatilishi mumkin).

Qog'oz qisqichlarini simlarga lehimlash jarayoni juda oddiy:

  1. Telning bir tomonidagi vilkasini kesib oling;
  2. Biz izolyatsiya simini 5 mm ga olib tashlaymiz;
  3. Tozalangan simni qog'oz qisqichiga lehimlang;
  4. Barcha 12 ta qog'oz qisqichlari uchun takrorlang.

Eslatma: Shtapellar hech qanday qoplama (bo'yoq yoki plastmassa) bilan qoplanmasligi kerak.

12-qadam: Shablonni bo'yash

Arduino MIDI klaviaturasini shunchaki qog'oz qisqichlariga tegizish orqali o'ynash mumkin bo'lsa-da, o'zingizning trafaretingizni yasash va undan foydalanish ancha qiziqarli. Chop etilgan shablonni ranglang. Shablon loyiha arxivida.

Shablonni rang berish juda oddiy, shunchaki chiziqlar orasida bo'sh joy qoldirib, mos ranglardan foydalaning, aks holda u ishlamaydi. Bo'yoq quriganidan so'ng, "tugmachalar" ga qog'oz qisqichlarini ulang va siz musiqa qilishni boshlashingiz mumkin.

E'tiboringiz uchun rahmat!)

Klaviatura MIDI protokolidan foydalangan holda tashqi ovoz moduli yoki kompyuterga (agar tegishli interfeys mavjud bo'lsa) ulanish uchun mo'ljallangan - sekvenser dasturiga musiqa yozish yoki jonli ijro. Taklif etilayotgan versiyadagi tugmalar soni 48 tani tashkil etadi, lekin sxemani o'zgartirmasdan 64 tagacha oshirish mumkin.Taklif qilinayotgan klaviaturaning o'ziga xos xususiyati uning kalitga ta'sir qilish kuchiga sezgirligidir.

Qurilmaning tarixi

Bir muncha vaqt oldin, kvartira sotib olish munosabati bilan men uchun MIDI klaviaturasi bo'lib xizmat qilgan hashamatli asbobni yo'qotishga majbur bo'ldim - bu afsonaviy YAMAHA DX-7 edi. G'amginlik pasayganda, savol butun jiddiyligi va xunukligi bilan paydo bo'ldi: nima ustida ishlash kerak? Aynan shu vaqtda do'stimning sa'y-harakatlari bilan KR1816BE39 uchun yarim yig'ilgan sxema (dushmanda bu protsessor 8048 deb ataladi) mening qo'llarimga tushdi. Sxemani yig'ish va sozlash oson, va eng muhimi, u kerakli vaqtda qo'lga keldi. Men KR1533ID7 va KR1533KP7 yordamida klaviaturani 8x6 matritsa shaklida yig'dim. Malhamda pashsha ham bor edi - bu sxemaning ikkita kamchiliklari uning barcha afzalliklarini o'ldiradi: tugmachalarni bosish tezligiga (dinamiklar) va PITCH WEEL g'ildiragiga sezgirlikning yo'qligi. Xo'sh, men bir marta Z-80-da dasturlashtirdim (va hatto ishlaydigan sekvenser ham qildim) va eski kunlarni silkitishga qaror qildim. Men Z-80 ni protsessor sifatida ma'naviy jihatdan eskirgan deb qat'iy rad etdim. Bundan tashqari, men juda ko'p lehimlashni xohlamadim va men KR1816BE39-da xuddi shu qurilmani asos qilib olishga qaror qildim va uni kalitlarning uzilishi (yuqori) kontaktlari uchun boshqa multipleksor bilan jihozladim. Men KR1816BE39 assembler uchun hujjatlarni topdim (ishonmaysiz - kutubxonada "Yagona chipli mikroprotsessorlarda raqamli qurilmalarni loyihalash" kitobi) va dasturni yozdim ... Va keyin bir do'stimning ROM dasturchisi borligi ma'lum bo'ldi. vafot etdi va dasturni yoritadigan hech narsa yo'q edi ... Qayg'udan men butunlay aqlimni yo'qotdim va PIC uchun xuddi shu algoritmni qayta yozishga qaror qildim. Yarim kun ichida dasturchi (LUDIPIPO) bir-biriga lehimlandi, so'ngra KR1533ID7 rozetkasidan va KR1533KP7 juftidan prototip ishlab chiqarildi va butun o'rnatish MGTF tomonidan hech qanday muhrsiz amalga oshirildi. Va jarayon boshlandi ...

Birinchidan, dasturning dinamik bo'lmagan versiyasi ishga tushirildi (men uni har bir tugmachada bitta kontaktli klaviaturaga ega bo'lganlar uchun ham taqdim etaman). Keyin dinamik versiya boshlandi. Va keyin tugmalar va indikatorni qo'shish g'oyasi keldi. Gap shundaki, menda WAVEBLASTER (juda eski tovush tizimlari uchun to'lqinli jadval sintezatori) uzoq vaqt ishlamay qoldi. Uni o'zimning ijodimga ulab, men kompyutersiz o'ynashingiz mumkin bo'lgan narsaga ega bo'ldim (qobiliyatingiz va iste'dodingiz darajasida), bu ba'zan juda qulay. Bu tugmachalardagi funktsiyalar to'plamini aniqladi - bu "jonli" ijro paytida ovoz modullariga ulanishda foydali bo'lishi mumkin. Tugmalarning funktsiyalarini o'zingizning ishlov beruvchilaringizni yozish va mening so'rovlarim va ko'rsatish tartib-qoidalarimdan foydalanib o'zgartirish oson. Qanday bo'lmasin, temir qutiga yig'ilgan klaviatura YAMAHA PSS-ga qaraganda qulayroq bo'lib chiqdi (hali ham to'liq o'lchamli tugmachalar, pedal va eng muhimi, dinamika!). Ijodiy jarayonning o'rtasida MIDI klaviaturasining faqat kompyuter uchun versiyasini yaratish qiyin ishtiyoq paydo bo'ldi - indikator va tugmalar ixtiyoriy, ammo PITCH WEEL va MODULATION g'ildiraklari kerak. Men u bilan bir muddat kurashdim, lekin oxir-oqibat taslim bo'ldim va lehim dazmolini qayta yoqdim. Elektronikani yig'ish qiyin emas, lekin mexanika biroz qiyinroq va men g'ildirak dizayni ustida qoshlarimni burishtira boshladim. Biroz o'ylab, men ikkinchi g'ildirakdan voz kechishga qaror qildim - baribir, men hech qachon ikkalasini ham bir vaqtning o'zida aylantirmayman, men odatda eslatmalarni yozaman va avval pitch qilaman, keyin modulyatsiya qo'shaman. Menga juda yoqadigan mexanik ish hajmining ikki baravar kamayishi e'tiborga olinmagan. Kamroq dangasa uchun, men deyarli hech qanday murakkabliksiz ikkita g'ildirakni qanday qilishni quyida tushuntiraman. Modulyatsiyani hali ham yozish imkoniyatiga ega bo'lish uchun men g'ildirakning uchta ish rejimini tashkil etishga qaror qildim: 2 yarim tonna uchun pitch, 1 yarim tonna uchun pitch (qulay) va modulyatsiya. Bularning barchasini bitta tugma bilan almashtirishingiz va bir juft LED bilan rejimni ko'rsatishingiz mumkin. Sxemani soddalashtirish uchun men qolgan tugmalar va ko'rsatkichlarni o'chirib tashladim, bularning barchasi zamonaviy sekvens dasturlari bilan ishlash uchun kerak emas.

G'ildirak, albatta, potansiyometr o'qiga qo'yilishi kerak, bu tushunarli, lekin uni nimaga ulash kerak? Mening birinchi fikrim 555 taymerda bir martalik zarbadan foydalanish edi.Ammo hisob-kitoblar shuni ko'rsatdiki, qabul qilinadigan g'ildirak namuna olish tezligini ta'minlashga harakat qilganda, pulsning aniq va barqaror o'lchovlariga erishish qiyin, chunki protsessor asosan kommutatsiyani o'lchash bilan band. klaviatura kontaktlari vaqti. Qolgan yagona yo'l - analog-raqamli konvertordan (ADC) foydalanish. Men Pic16F84-ni o'rnatilgan ADCsiz ishlatganim sababli, men muhandislik bilimimni (va o'zimning fabrikamni) esladim va taqqoslagich (va dasturning bir qismi) bilan bir nechta rezistorlardan ADC yasadim. Bu oddiy, arzon va juda aniq bo'lib chiqdi.

Men ikkala diagrammani ham - tugmalar bilan ham, g'ildirak bilan ham, shuningdek ular uchun dasturlarni taqdim etaman. Agar so'ralsa, tashqi qurilmalarning manzillarini biroz o'zgartirish orqali ikkala sxemani ham osonlik bilan birlashtirish mumkin; shunchaki esda tutishingiz kerakki, CHORUS (STEREO) rejimi detuningni olish uchun ohangdan foydalanadi va siz uni olib tashlashingiz yoki ovoz balandligini detuning bilan uzatish haqida tashvishlanishingiz kerak. kanallar bo'ylab.

Shunday qilib - haqiqiy klaviatura

Qurilma diagrammasi

Birinchi bo'lib kalitga ta'sir qilish kuchiga sezgir bo'lmagan dinamik bo'lmagan versiya paydo bo'ldi - tartibning funksionalligini sinab ko'rish uchun.

Men PIC16F84 ni protsessor sifatida bir necha sabablarga ko'ra ishlatganman: bu chip mavjud, arzon va dasturlash oson va bu mening qo'limda bo'lgan. Diqqat: PIC16C84 mos kelmaydi - u atigi 36 ta operativ xotiraga ega va dastur ishlamaydi. Biroq, g'ildirak pallasida kamroq operativ xotira xujayralari ishlatiladi va uning dasturi yana bir nechta hujayralarni qisqartirish orqali PIC16C84-ga siqib chiqarilishi mumkin, masalan, MIDCH (barcha uzatiladigan ma'lumotlarga doimiy MIDI kanalini belgilash orqali).

Ko'rsatkichli dinamik klaviatura diagrammasi quyida ko'rsatilgan:

Sxema ko'p jihatdan an'anaviy - velosipedni pedallar va g'ildiraklarsiz qayta ixtiro qilish qiyin J Port B uzatish uchun ishlaydi - pastki 7 bit matritsadagi kalit manzilni yoki tashqi qurilmalar uchun ma'lumotlarni chiqaradi (ko'rsatkich va g'ildirak DAC). Eng muhim bit MIDI ma'lumotlarini ketma-ket kodda chiqarish uchun ishlatiladi - konvertatsiya va chiqish dasturiy ta'minotda amalga oshiriladi. Shuning uchun, agar siz MIDI bayt chiqish tartibini qayta yozishni xohlamasangiz, kristall 4 MGts da bo'lishi kerak. A portining ikkita eng kam ahamiyatli bitlari qabul qilish uchun ishlaydi - ular "bo'shatilgan" va "bosilgan" kalit kontaktlarining multipleksorlaridan signallarni oladi va uchta eng muhim bit tashqi qurilmaning manzilini aniqlaydi (boshqa KR1533ID7 dekoderi orqali). G'ildirakli sxemada sxemani soddalashtirish va komparatordan ma'lumotlarni kiritish uchun PA4 portining yuqori bitini bo'shatish uchun tashqi qurilma manzili dekoderidan voz kechdim, shuning uchun klaviatura va tugmalar manzillari boshqacha. Sxemalarni birlashtirganda, ushbu mikrosxemani qaytarish kerak, manzilni shifrlash uchun PA2 va PA3 port bitlaridan foydalaning va 4-qurilma manzili: klaviatura, tugmalar, dinamik ko'rsatkich ma'lumotlar registri va dinamik ko'rsatkichlar bilan tanishish registrlari. G'ildirak rejimi ko'rsatkichini qayta yozish kerak bo'ladi.

PITCH WEEL / MODULATION g'ildiragi bilan sxema quyidagicha ko'rinadi:

Dekuplaj uchun har bir kalitga bitta diod o'rnatilgan. Multiplekserlarning kirishlaridagi rezistorlar 8k dan oshmasligi kerak, aks holda o'rnatish sig'imi tufayli nosozliklar bo'lishi mumkin. Ko'rsatkich - 3 ta raqam uchun umumiy anodli har qanday, agar har bir raqam segmentlarining terminallari alohida chiqarilgan bo'lsa, bir xil nomdagi segmentlarning terminallari birlashtirilishi kerak - ko'rsatkich dinamik va raqamlar ketma-ket yonadi. Har qanday tugmalar, qulflanmagan holda, kontaktlarning o'nglanishi dasturiy ta'minot tomonidan boshqariladi. LEDlar bir xil nomdagi tugmalar yonida o'rnatiladi va tegishli rejimlarning faollashtirilganligini ko'rsatadi, "+" va "-" tugmalarida LED yo'q. Ko'rsatkichdagi tranzistorlar har qanday kam quvvatli, yuqori chastotali teskari o'tkazuvchanlikdir. Joriy indikator raqamining manzili va kodini navbat bilan yopish uchun ikkita KR1533IR23 registrlari ishlatiladi (svetodiodlar ikkita kvazi-raqamga guruhlangan). Men 48 ta tugmachali sovet elektr organlaridan standart klaviaturadan foydalandim (u "START" radio dizayneri sifatida alohida ishlab chiqarilgan va juda keng tarqalgan). Klaviatura balandligini va asbobning qalinligini kamaytirish uchun har bir tugma ostidagi oltita kontakt guruhidan ikkitasi qoldirildi va hamma narsa kesilib, qayta yopishtirildi. Umuman olganda, bitta kalit uchun bitta kommutatsiya guruhi etarli, ammo uni shu tarzda yopishtirish qulayroq edi. "Bo'shatilgan" va "bosilgan" kontaktlarning shinalari 8 ta tugmachani tashkil qiladi. Agar so'ralsa, siz klaviaturadan ham foydalanishingiz mumkin, bu erda kontaktlarning o'zgarishi o'rniga ikkita juft yopish kontaktlari ishlatiladi - bir juft kalit harakati boshida, ikkinchisi oxirida yopiladi (YAMAHA asboblarida bo'lgani kabi). Bunday holda, PA0 ga signal multipleksorning teskari chiqishidan (6-pin) berilishi kerak. Sxemadagi o'zgarishlarsiz siz 64 tugmachali klaviaturadan foydalanishingiz mumkin (standart - 61, ya'ni 5 oktava). Agar kerak bo'lsa, kalitlar soni kamida 127 tagacha oshirilishi mumkin, buning uchun kontaktlarning zanglashiga olib kirish uchun yana bir KR1533ID7 dekoderini kiritish kerak.

Mexanikani yaxshi o'rnatish juda muhim - kalitlar bo'shatilganda yuqori kontaktlar yopilishi KERAK. Agar bu bajarilmasa, dastur bunday tugmachalarni bosilgan deb hisoblaydi va ularni qayta ishlashga harakat qiladi, shuning uchun bu tugmachalarni qayta bosish ovoz chiqarmaydi. Bundan tashqari, bir vaqtning o'zida ijro etilishi mumkin bo'lgan maksimal notalar soni 10 ta (agar kimdir qo'llarida ko'proq barmoq o'stirgan bo'lsa, bu raqamni osongina o'zgartirish mumkin) va tugmachalarni bo'shatmaslik bu raqamni kamaytiradi. Xuddi shu sabablarga ko'ra, klaviatura so'rovi protsedurasida ko'rsatilgan tugmalar soni haqiqiy tugmalar soniga mos kelishi kerak. Kontaktni o'chirish dasturiy ta'minot tomonidan bostiriladi.

R-2R ADC rezistiv matritsasi uchun rezistorlarni 1-2% aniqlik bilan tanlash tavsiya etiladi va mutlaq qiymatlar boshqacha bo'lishi mumkin, nisbat muhimdir. Biroq, siz nominal qiymatni sezilarli darajada oshirmasligingiz kerak, bu komparatorning kirish sig'imi tufayli konversiya vaqtini oshiradi. Men SMD rezistorlarini mos kelmasdan ishlatdim, garchi o'lchovlar shuni ko'rsatdiki, bitta o'rnatish chizig'ida rezistorlar odatda 1% dan yuqori aniqlik bilan mos keladi. Ishonchim komilki, sxema aniq bo'lmagan rezistorlar bilan ishlaydi, ammo xarakteristikaning chiziqliligi yomonlashadi. G'ildirakning o'zi eski televizorning tutqichidan yasalgan va potansiyometr o'qida uni o'rta holatga qaytaradigan kamonga ega. Mexanikani sozlash qulayligi uchun rejim tugmachasini bosganingizda quvvatni yoqsangiz, g'ildirak o'rta holatda bo'lganda LEDni yoritadigan disk raskadrovka dasturi faollashadi, bu sizga nol holatini aniq sozlash imkonini beradi. potansiyometr o'qi ustidagi g'ildirakning. Agar alohida MODULYASYON g'ildiragini yaratish zarurati va xohishi bo'lsa, uni bepul taqqoslash elementiga ulash kerak (ularning to'rttasi bor) va R-2R matritsasi ikkala g'ildirak uchun ham keng tarqalgan. Komparatorlarning chiqishlarini almashtirish uchun qo'shimcha mikrosxemadan foydalanish va boshqaruv signali sifatida PA2 dan foydalanish yaxshiroqdir.

Agar so'ralsa, siz klaviaturaning dinamik versiyasini ko'rsatmasdan, tugmalarsiz va PITCH WEEL / MODULATION g'ildiragisiz yig'ishingiz mumkin - oddiygina sxemaning foydalanilmagan qismini yig'masdan. Quvvat yoqilganda barcha o'zgaruvchan parametrlar sukut bo'yicha o'rnatiladi...

Bularning barchasi har qanday narsadan quvvatlanishi mumkin, oqim iste'moli o'ziga xos ko'rsatkichga bog'liq va 100 mA dan oshmaydi. Bortda radiatorsiz 7805 stabilizatorim bor (uni fotosuratda aniq ko'rish mumkin). Agar unga 9v dan ortiq kuchlanish berilsa, kichik radiator kerak bo'ladi. Taqqoslash moslamasi 9 - 12 v kuchlanish bilan quvvatlanadi, tercihen stabillashadi. Ha, men eski zaxiralardan sovet ishlab chiqarilgan mikrosxemalardan foydalanardim - ularning zamonaviy analoglari juda ko'p, almashtirish mumkin va hatto maqsadga muvofiqdir - zamonaviy analoglar kamroq iste'molga ega.

Dastur

Bosilgan tugmachalarni qayta ishlash algoritmi 1986 yil 5-sonli "Mikroprotsessor asboblari va tizimlari" jurnalida taklif qilingan algoritmdan kelib chiqadi. Aynan shu nashr (aniqrog'i, taklif qilingan dasturdagi xatolik) meni assemblerni o'rganishga undadi. Aslida, u erdan olingan yagona g'oya har bir bosilgan tugmachaning sonini RAMning maxsus ajratilgan maydoniga (CHAN) yozib olish edi, shunda klaviatura yana so'ralganda, u qayta ishlangan kalitni qayta ishlamaydi. Menda bosilgan tugmalarning har biri uchun ikkita operativ xotira ajratilgan (jami 10 tadan ko'p bo'lmagan): birinchisida bosilgan tugmalar soni, ikkinchisida - uning VELOCITY (bosish tezligi) qayd etiladi. Takror aytaman - bu kataklarning atigi 20 tasi bor va boshlang'ich manzili CHAN nomi bilan berilgan. Erkin juftlik belgisi birinchi katakning eng muhim bitidir. O'rnatilgan ikkinchi katakning eng muhim biti bu kalit uchun QAYD ON allaqachon uzatilganligini va unga qo'shimcha ishlov berishni talab qilmasligini bildiradi.

Men butun dasturni batafsil tasvirlab bermayman, manba kodi sharhlar bilan to'ldirilgan va o'qitilgan odam uchun ochiqdir. Qolganlari uchun men darhol Dinamic.hex va Pitchmod.hex faylida tayyor dasturiy ta'minotni taqdim etaman. Men faqat ba'zi noaniq fikrlarni tushuntiraman. Xo'sh, birinchi navbatda, dinamika haqida: hozirda kalitning yuqori kontaktlari ochilganda, uning raqami CHAN maydonidan birinchi bo'sh juftlikning birinchi katakchasiga yoziladi va bir vaqtning o'zida erkin juftlik belgisini qayta tiklaydi. VELOCITY = 127 boshlang'ich qiymati ikkinchi katakchaga yoziladi. Klaviaturaning sezgirligi uzilish chastotasi bilan belgilanadi, chunki uzilishni qayta ishlash ESLATMA ON hali uzatilmagan barcha tugmalar uchun VELOCITY qiymatlarini pasaytiradi. Uzilishlar o'rnatilgan taymer tufayli yuzaga keladi. Ayni paytda kalitning pastki kontaktlari yopilgan bo'lsa, tegishli CHAN katakchasida "o'tkazilgan" belgisi o'rnatiladi va joriy VELOCITY bilan QAYD ON uzatiladi. Sezuvchanlik egri chizig'ini yaxshilash uchun LEVOCITY qiymatlari logarifmik qonun bo'yicha pasayadi: uning 1/16 qismi, 1 ga kamaytirilgan, joriy VELOCITY qiymatidan chiqariladi.Shunday qilib, kalit yuqori kontaktdan pastki qismga o'tadi. biri, tegishli CHAN katakchasidagi HIZLIK qiymati logarifmik qonunga muvofiq kamayadi va kalit qanchalik tez harakatlansa, kalitning pastki kontaktlari yopilgan va QAYD ON uzatilgan paytda VELOCITY shunchalik yuqori bo'ladi. Interruptlar dinamik displeyni ham boshqaradi, bu indikatorning miltillashini bartaraf etish uchun amalga oshiriladi.
Tugma funktsiyalari: TRANSPOSE - barcha tugmalar sevimli minorga qisqartiriladi: diapazon +/- 15 yarim tonna. PRG ma'lum bir oldindan o'rnatilgan (UP1-UP5) uchun tembr (asbob) tayinlaydi va VOL uning hajmini belgilaydi. Joriy parametr indikatorda ko'rsatiladi va uni "+" va "-" tugmalari yordamida o'zgartirish mumkin TWIN "ikki" tembrni ko'rsatadi - oldindan o'rnatilgan sozlamalardan biri (UP1-UP5) va shu bilan birga, LOWER oldindan o'rnatilgan. bir vaqtning o'zida ovoz. STEREO joriy oldindan o'rnatilgan ovozni o'ng va chap stereo kanallarga ozgina "detuning" ("xor" effekti) bilan chiqaradi. SPLIT tugmasi faollashtirilmagan. SUSTAIN pedali tugmalardan biri sifatida sxema bo'yicha ishlab chiqilgan; uning simining sig'imi juda katta bo'lmasligi kerak. Tugmalarni ishlov beruvchilarning manzillari dasturning boshida jadvalda to'plangan, tugmalar funktsiyalarini o'zgartirganda, siz o'zingiznikini almashtirishingiz mumkin.

G'ildirakning ADC yarim dasturiy ta'minot bo'lib, u ketma-ket yaqinlashish algoritmi yordamida ishlaydi, R-2R matritsasi raqamli-analogga aylantirishni amalga oshiradi. Birinchidan, R-2R matritsasi uchun eng muhim raqamdagi 1 qo'llaniladi va taqqoslash uning ko'p yoki oz ekanligini aniqlaydi. Agar oz bo'lsa, 1 eng muhim bitda qoladi, agar ko'p bo'lsa - 0. Keyin har bir keyingi past tartibli bit bilan bir xil narsa sodir bo'ladi (jami 6 qadam) va biz olti bitli sonni olamiz. g'ildirakning burilish burchagi. Bu aniqlik men uchun etarli bo'lib tuyuladi, lekin siz matritsa va konversiya dasturini oshirish orqali yana bir bit qo'shishingiz mumkin.

Dizayn

Haqiqiy klaviatura sifatida men Sovet Ittifoqida ishlab chiqarilgan "Start" konstruktoridan foydalanardim; endi, ehtimol, eski, ishlamaydigan Yamaha yoki Casio-ni topish osonroq bo'lsa, bu holatni yaratish muammosini ham hal qiladi - agar, albatta, eski asbob nisbatan buzilmagan...

Bosilgan elektron plata ishlab chiqilmagan - men qurilmaning bitta nusxasini ishlab chiqarish uchun simlarni ulash va taxta yasashga vaqt sarflashni noo'rin deb bildim va sxema MGTF o'tish moslamalari yordamida elektron platada qilingan. Klaviaturaga ulagich va kabel sifatida biz har tomondan mos keladigan ulagichga ega bo'lgan kompyuterdan floppy drayverlardan kabeldan foydalandik - bu tayyor qurilmani yig'ish/demontaj qilishni osonlashtiradi.

Mening holimda, tanasi yupqa po'latdan egilgan (qo'lda bo'lgan narsa) - yog'och tomonlari (eski sovet asboblari kabi).

Xo'sh, qisqasi, hammasi shu. Ijodiy muvaffaqiyat!

Radioelementlar ro'yxati

Belgilanish Turi Denominatsiya Miqdori EslatmaDo'konMening bloknotim
Sxema № 1.
MikrokontrollerPIC16F841 Bloknot uchun
ChipKR1533ID71 Bloknot uchun
ChipKR1533KP71 Bloknot uchun
Lineer regulyator

LM7805

1 Bloknot uchun
Diyot

KD522A

64 Bloknot uchun
Kondensator22 pF2 Bloknot uchun
Kondensator0,1 mkF2 Bloknot uchun
100 mkF2 Bloknot uchun
Rezistor

220 Ohm

2 Bloknot uchun
Rezistor

6,8 kOm

8 Bloknot uchun
Kvarts rezonatori4 MGts1 Bloknot uchun
Klaviatura tugmasi 64 Bloknot uchun
Sxema № 2.
MikrokontrollerPIC16F841 Bloknot uchun
ChipKR1533ID72 Bloknot uchun
ChipKR1533KP72 Bloknot uchun
ChipKR1533IR232 Bloknot uchun
Lineer regulyator

LM7805

1 Bloknot uchun
Bipolyar tranzistor

KT315A

5 Bloknot uchun
Diyot

KD522A

80 Bloknot uchun
Kondensator22 pF2 Bloknot uchun
Kondensator0,1 mkF2 Bloknot uchun
Elektrolitik kondansatör100 mkF2 Bloknot uchun
Rezistor

180 Ohm

7 Bloknot uchun
Rezistor

220 Ohm

2 Bloknot uchun
Rezistor

6,8 kOm

16 Bloknot uchun
Rezistor

8 kOm

1 Bloknot uchun
Kvarts rezonatori4 MGts1 Bloknot uchun
3-raqamli LED raqamli ko'rsatkich, umumiy anodlar bilan. 1 Bloknot uchun
Yorug'lik chiqaradigan diodQizil12 Bloknot uchun
Kalit kaliti 64 Bloknot uchun
Tugma 16 Bloknot uchun
Sxema № 3.
MikrokontrollerPIC16F841 Bloknot uchun
ChipKR1533ID71 Bloknot uchun
ChipKR1533KP72 Bloknot uchun
Taqqoslovchi

Uzoq vaqt davomida ishlab chiqaruvchilar va ovoz muhandislari uchun MIDI boshqaruvchisi chiroyli musiqa yaratishga yordam beradigan muhim atributga aylandi. Virtual asboblar har doim o'zgacha jaranglaydi, shuning uchun ular har qanday ohangning bezakidir.

Ko'pgina musiqachilar o'z mahsulotlarining sifati haqida juda tashvishlanayotganligi sababli, savol tug'iladi: MIDI tipidagi kontrollerni qanday tanlash kerak? Ushbu maqolada maslahatlar va asosiy tanlov mezonlari tasvirlanadi.

MIDI boshqaruvchisi nima?

1980-yillarda musiqachiga bitta klaviatura yordamida bir vaqtning o'zida bir nechta sintezatorlarning ishlashini boshqarish imkonini beradigan kontroller deb nomlangan qurilma ishlatilgan. Bu g'oya muvaffaqiyatli bo'ldi, shuning uchun bunday turdagi qurilmalar darhol keng tarqaldi. Agar hamma ularni sotib ololmasa, demak, hozirda kontrollerlar narxi ancha pasaygan. Musiqachilar, ovoz muhandislari, qo'shiq mualliflari, ijrochilar, DJlar - hamma bunday qurilmalardan foydalanadi.

Klaviaturasi bor qurilma nima? Bu pianino va sintezator tugmalariga o'xshaydi. Unga tugmalar, turli tugmalar va slayderlar qo'shildi. Ular bilan o'zaro aloqada bo'lganda, ohang tashqi turga ega bo'lgan tovush modullariga uzatiladi. Biz noutbuklar va boshqa qurilmalar haqida gapiramiz. Boshqacha qilib aytganda, kontrollerlar (ularning ko'pchiligi) o'z-o'zidan ovoz chiqarishga qodir emas. Ular tashqi qurilmadan (tovush moduli) qayta ishlab chiqarilgan bitlar, notalar va boshqa parametrlarni tartibga solish uchun mo'ljallangan.

MIDI kontrollerning afzalliklari nimada? Eng aniq: u ko'p qirrali va ko'chma. Uning yordamida siz barcha virtual effektlarni qo'llashingiz va zamonaviy dasturlarni boshqarishingiz mumkin. Uni, masalan, noutbuk sumkasi yordamida osongina olib yurish mumkin.

Sotib olayotganda nimaga e'tibor berish kerak?

Har qanday kontrollerni sotib olishdan oldin, u nima uchun ekanligini o'ylab ko'rishingiz kerak. Quyidagi savollarga javob berish foydali bo'ladi, ular katta assortimentdan qaysi variant mos kelishi haqida aniq fikr beradi.

Tekshirish moslamasi nima uchun ishlatiladi? Sahna tomoshalari uchun mo'ljallangan qurilma mexanik stressga chidamli materialga ega bo'lishi kerak. Ko'pgina kontrollerlar plastmassadan tayyorlanganligini hisobga olsak, siz metall variantlarga e'tibor berishingiz kerak. Bundan tashqari, mexanizm turi va kalitlar soni haqida qaror qabul qilishingiz kerak. Agar ular juda ko'p bo'lsa, jonli ijro paytida ulardan birortasining maqsadini chalkashtirib yuborish ehtimoli bor.

Kichik MIDI kontroller DJ uchun juda yaxshi ishlaydi. Agar odam elektronikani tushunsa, uni o'z qo'llaringiz bilan qilish qiyin emas. Bu shuni anglatadiki, DJlar ko'pincha uy qurilishi jihozlaridan foydalanadilar. Bu haqda quyida ko'proq o'qishingiz mumkin. Bunday qurilmani sizda tutqichlar va slayderlar ham kerakligini hisobga olgan holda sotib olishingiz kerak. Ularsiz dastur (MIDI kontrolleri faqat u bilan tandemda ishlaydi) kerakli funktsiyalarni bajarmaydi.

Agar musiqachi treklarni to'shakda, samolyotda, mashinada yoki boshqa joyda tahrir qilsa, tanlashda asosiy e'tibor portativlik bo'ladi. Qurilma quvvat bilan ta'minlanganligini hisobga olsak, siz USB avtobusidan zaryadlanishi mumkin bo'lganlarga e'tibor berishingiz kerak.

Pioneer'dan MIDI kontrollerlari

Pioneer MIDI kontrolleri doimo talabga ega bo'lgan qurilmadir. Ushbu ishlab chiqaruvchi uzoq vaqtdan beri bozorda bunday uskunalar uchun etakchi uchta yetakchilardan biri hisoblanadi. "Aloqador" Pioneer modellarini bir-biridan nimasi bilan ajratib turadi? Boshqaruv panelidagi oddiy mexanik tugmalarga o'xshash qo'shimcha funktsiyalarning mavjudligi. Ushbu brendning har qanday boshqaruvchisi ajoyib yugurish g'ildiraklariga ega. Tashqi ko'rinishi jiddiy va oqlangan. Qurilmaning ta'sirchan hajmi uning maksimal funksionalligi bilan qoplanadi.

Qaysi modelni tanlashni hayron qilishning hojati yo'q. Siz darhol DDJ-T1 ni diqqat bilan ko'rib chiqishingiz kerak. Qurilmani ko'pchilik tavsiya qiladi Narx-sifat nisbati juda yaxshi. Boshqaruv paneli qulay, tugmalarni muammosiz bosish mumkin, qurilmani olib yurish oson.

Novation Launchpad Controller

Novation Launchpad MIDI kontrolleri Ableton Live bilan ishlash uchun maxsus ishlab chiqilgan. Qurilma sahna va uy studiyasi faoliyati uchun javob beradi. U bilan diskotekalar o'tkazish ham oson bo'ladi. Qurilma panjarasi 64 ta tugmadan iborat. U qo'shimcha effektlar, shuningdek, dasturiy ta'minot bilan ishlash funktsiyalari bilan jihozlangan. Qurilma kompyuterga ulanishi mumkin va Windows oilasi va boshqa ba'zi operatsion tizimlar bilan ishlaydi.

DIY MIDI kontrolleri - haqiqat yoki afsona?

Uy qurilishi MIDI kontrollerlari uzoq vaqtdan beri talabga ega. Fikringizni hayotga tatbiq etish uchun nima kerak? Sizga diagramma kerak bo'ladi, unga ko'ra qurilma lehimlanadi va yig'iladi, byudjet, fizik yoki bu sohani biladigan elektrchi.

Texnik tomonni bilishdan tashqari, yaratuvchining kontrollerlar haqida qanchalik bilishini o'zingizdan ham so'rashingiz kerak. Barcha taxminlarga javob beradigan qurilmani to'g'ri yig'ish uchun siz qaysi bazani ishlatish yaxshiroq ekanligini, model nima uchun yig'ilishini va boshqaruv panelini qaerga o'rnatishni tushunishingiz kerak. Muammo juda murakkab, ammo butunlay hal qilinishi mumkin. Bugungi kunda boshqaruvchini yig'ish uchun ishlatilishi mumkin bo'lgan ko'plab tayyor sxemalar mavjud. Asosiysi, rejalaringizga ishonch va sabr-toqat.

Akai brendi modeli

Akai yaqinda MPC Touch deb nomlangan yangi kontrollerni chiqardi. Tegishli qurilmalardan farqli o'laroq, bu 7 dyuymli displeyga ega. Bu u bilan ishlashni ancha osonlashtiradi. Sharhlarga asoslanib, shuni aytish kerakki, bu tasvirlangan model professional kontrollerlar haqida gap ketganda namuna sifatida ishlatiladi. Unga qarash va funksionallikni hisobga olgan holda, bunday qurilmani qanday tanlash kerakligi haqidagi savol darhol yo'qoladi. Dasturiy ta'minot juda tez va samarali ishlaydi, muammolar paydo bo'lmaydi va nosozliklar juda kam uchraydi.

Yagona kamchilik shundaki, boshqaruvchi quvvat manbaisiz ishlay olmaydi, chunki uning batareyasi yo'q. Akai brendi bozorda uzoq vaqtdan beri tanilgan. Uning MIDI kontrolleri kuchli va yuqori sifatli qurilma bo'lib, og'ir yuklarga bardosh bera oladi. Ko'pincha sahnada ba'zi modellar qo'llaniladi.

MIDI kontrolleri - ma'lum bir jismoniy jarayonni MIDI formatidagi raqamli buyruqlar to'plamiga aylantiruvchi qurilma. Jismoniy jarayon barmoq bilan tugmachani bosishdan tortib ovoz balandligi tugmachasini aylantirishgacha bo'lgan har qanday narsa bo'lishi mumkin. Olingan buyruqlar oqimi MIDI protokoli orqali boshqa qurilmalarga - kompyuterga, apparat namuna oluvchilarga, sintezatorlarga yoki tashqi sekvenserlarga uzatiladi va u erda ma'lum bir tarzda shifrlangan. MIDI kontrollerlarining eng keng tarqalgan turi MIDI klaviaturasi - pianino klaviaturasining elektron ekvivalenti. Elektron baraban to'plamlarini o'z ichiga olgan boshqa ko'plab nazoratchilar turlari mavjud.

Zamonaviy bozor narx, sifat, texnik xususiyatlar va boshqalar kabi turli mezonlarda farq qiluvchi elektron o'rnatish uchun juda ko'p turli xil MIDI kontrollerlarini taklif qiladi. Bundan tashqari, tijorat loyihalari (eDrum, megaDrum) sifatida amalga oshiriladigan bir nechta tayyor foydalanuvchi qurilmalari mavjud. Ammo, bularning barchasiga qaramay, o'z qo'llaringiz bilan bunday qurilmani yaratish istagi hali ham zamonaviy Kulibinlarning ongida yashaydi.

Shunday qilib, bir necha yil oldin, men og'ir musiqiy guruhda qatnashganim uchun, biroz kechikib, bunday qurilmani yaratishga qiziqib qoldim. Biz hard rock, aniqrog'i shafqatsiz o'lim, goregrind, grindkor kabi narsalarni o'ynadik. Men elektr gitara chalardim. Bir oz oldin biz Sonor baraban to'plamini sotib oldik va kechqurun garajda shovqin qildik. Keyinchalik garaj bizdan so'radi va binolar haqida savol tug'ildi. Hech narsaga arzigulik topa olmagach, biz uyda mashq qilishga qaror qildik, bu darhol qo'shnilar bilan janjalga olib keldi. Bu erda elektron barabanlar haqida savol tug'ildi.

Jonli asboblarni chalish bilan bir qatorda, men elektron musiqa yozardim va VST asboblari va plaginlaridan foydalanardim; xususan, baraban qismlarini yaratish uchun men MIDI interfeysi bilan ishlash qobiliyatiga ega Addictive barabanlari va ezDrums-ni afzal ko'rdim. Men ushbu mavzuni o'rganmay turib, 8 ta ADC kanaliga ega bo'lgan DIP paketidagi arzon ATMega32 mikrokontrollerida o'z MIDI kontrollerimni yaratishga shoshildim. Men sxemani to'sib qo'yishni xohlamadim va o'zimni 8 ta kirish bilan cheklashga qaror qildim. ATMega32 apparat USB qurilmasiga ega emasligi sababli, men virtual USB orqali kompyuterga standart ulanishdan foydalandim. Bir necha kun dasturlash bilan shug'ullanib, men qurilmani ishga tushirishga muvaffaq bo'ldim. Internetda sxema va proshivka (MegaDrum) bilan tayyor qurilmani topganimda hayron bo'lganimni tasavvur qiling. Ammo bajarilmagan hamma narsa yaxshi tomonga.


To'liq USB

Kasbim bo'yicha men dasturchiman, lekin kasbim bo'yicha men elektronika dasturchisi, texnika fanlari nomzodiman va sobiq rahbarim aytganidek, men shveytsariyalikman, o'roqchiman va karnaychiman. Ko'pincha bo'lgani kabi, men AVR-larga qattiq bog'lanib qoldim, chunki men ularga nisbatan his-tuyg'ulari borligim uchun emas, balki ularning texnik xususiyatlaridan to'liq qoniqdim. Ammo vaqt keldi, ular endi etarli emas edi. Va keyin stm32, boshqa narsalar qatori, bortda to'liq huquqli USB interfeysiga ega bo'lish uchun keldi. Aynan shu erda to'liq huquqli MIDI kontroller yaratish g'oyasi paydo bo'ldi. Bundan tashqari, men allaqachon MIDI interfeysi bilan ishlash tajribasiga ega bo'ldim.

Qayerdan boshlash kerak? Bizda DIP paketlarida stm32 yo'q edi (agar ular tabiatda mavjud bo'lsa ham), shuning uchun elektron platada lehimlash g'oyasi darhol yo'qoldi. Aynan o'sha paytda DISCOVERY kabi stm32 mikrokontrollerlariga asoslangan arzon ishlab chiqish platalari paydo bo'la boshladi. Va endi men ST-Link dasturchisini o'z ichiga olgan STM32F407DISCOVERY disk raskadrovka taxtasining baxtli egasiman. STM32F407 protsessorida 16 ta ADC kanali mavjud, garchi 4 ta kanalni disk raskadrovka taxtasi oddiygina to'ldirilgan tashqi qurilmalar egallagan bo'lsa-da. Lekin mening maqsadlarim uchun 12 ta kanal etarli edi.


Keil dasturlash muhitini, STM32F407 mikroprotsessorining arxitekturasini, shuningdek USB bilan ishlash uchun standart periferik kutubxonalarni o'rganishga biroz vaqt sarflab, men to'g'ridan-to'g'ri xotiraga kirish kanali, shuningdek kompozit USB yordamida barcha ADC kanallarini so'rov qilish dasturini yaratdim. qurilma sozlamalarini o'zgartirish uchun MIDI Audio Device va HID-ni o'z ichiga olgan qurilma.

Barabanlar uchun sensorlar sifatida men do'konda arzon narxda sotib olinishi mumkin bo'lgan ZP-1 piezo qo'ng'irog'idan foydalanardim.


Men MegaDrum-dan ulanish sxemasini oldim.


Men Delphi-da 16 ta kanal zaxirasi bilan nazorat dasturini yozdim. Asosan, Megadrum-da bo'lgani kabi, sxemaga analog multipleksorlarni qo'shish orqali qurilmaning kanallari sonini cheksiz ravishda oshirish mumkin, ammo bizning maqsadlarimiz uchun 16 ta kanal etarli, chunki biz unchalik ilg'or musiqachilar emasmiz. Ajam barabanchi uchun esa bu sondagi barabanlar shabada bo'ladi.


Qurilma Windows va Linux tizimlarida Renoise trekeri yordamida sinovdan o‘tkazildi. Ishda maxsus muammolar topilmadi.
Lekin men bu natija bilan to'xtamaslikka qaror qildim. STM32F407 juda murakkab protsessor, shuning uchun u nisbatan qimmat. STM32F103 yordamida qurilma yasash arzonroq edi. eBay yordamga keldi. Men bortda STM32F103RBT6 bilan ishlab chiqish platasini sotib oldim.


To'g'ri, unda o'rnatilgan dasturchi yo'q. Menga omad kulib boqdi, chunki avvalgi ishimdan hali ham ST-Link dasturchisi bor edi.


Men proshivkani butunlay qayta yozishga majbur bo'ldim, chunki 407 va 103 protsessorlarining ishlash printsiplari tubdan farq qilmasa ham.
Keyin men Internetda disk raskadrovka taxtasini uchratdim, bu aslida bir tiyinga tushdi va shu tarzda komponentlarning narxini minimal darajaga tushirishga qaror qildim.

Internetdagi aksariyat maqolalar MIDI klaviaturalari, kontrollerlari, pultlari va boshqalarni yasash haqida. MIDI konnektorlaridan foydalanishga asoslangan bo'lib, ularni zamonaviy kompyuterga ulash muammoli bo'lishi mumkin. Eski ovoz kartalarida joystik yoki MIDI qurilmasini ulashingiz mumkin bo'lgan o'yin porti mavjud edi:

Biroq, barcha yangi anakartlar o'rnatilgan ovoz boshqaruvchisi bilan birga keladi va ovoz kartalari ko'pincha MIDI qurilmalarini ulash qobiliyatiga ega emas.
Faqat zamonaviy MIDI klaviaturasi, DJ konsoli va boshqalarni sotib olish qoladi. kompyuterga ulanish uchun USB chiqishi bilan yoki adapterni sotib olish/lehimlash yoki MIDI qurilmalarini ulash imkoniyatiga ega maxsus ovoz kartasini sotib olish. Sotib olish, albatta, muammo emas, lekin biz bu saytga nima uchun kelganimiz emas, to'g'rimi?

Ushbu maqolada men 8 ta tugma va aylantirish g'ildiragi uchun USB ulanishi bilan oddiy MIDI klaviaturasini yaratish uchun arzon Arduino boshqaruvchisidan qanday foydalanishingiz mumkinligini ko'rsatmoqchiman.

Shunday qilib, men foydalandim:
Arduino UNO boshqaruvchisi
8 dona. tugmalar
8 ta qarshilik 10 kOhm
aylanadigan kodlovchi 25LB22-Q
non taxtasi va jumperlar

Ulanish diagrammasi quyidagicha:

Ulanish uchun men eng oddiy variantdan foydalandim: 1 kalit - 1 kirish. Biroq, ko'proq kalitlar, turli kontrollerlar va boshqalar bilan. Kirishlar yetarli boʻlmasligi mumkin, shuning uchun siz analog kirishlar (turli qiymatdagi rezistorlar qoʻshish orqali) yoki multiplekslash orqali maʼlumotlarni oʻqishdan foydalanishingiz kerak boʻladi. Biroq, agar siz analog kirishga bir nechta tugmachalarni biriktirsangiz, bir vaqtning o'zida bir nechta tugmachalar bosilganda holatni o'qish bilan bog'liq muammolar paydo bo'lishi mumkin. Shuning uchun, mening fikrimcha, multiplekslash yanada maqbul variant.

Arduino dasturiy ta'minot

Men MIDI ma'lumotlarining tuzilishini ko'rib chiqmayman, chunki ... bu maqolada tasvirlangan:

Kodlovchi apparat uzilish kirishlariga ulangan, men u bilan ishlash tavsifini ko'rib chiqmayman, chunki Dastur oddiy va rasmiy Arduino veb-saytidan olingan.

Ushbu loyihada kodlovchi modulyatsiya g'ildiragini o'zgartirish uchun aylantirish g'ildiragi sifatida ishlatiladi, lekin uni boshqa maqsadlar uchun (pitch egilishi va boshqalar) qayta tayinlash mumkin.

Arduino-dan kodlovchidan MIDI ma'lumotlari quyidagi qator bilan yuboriladi:
noteOn(0xB0, 0x01, encoder0Pos);
bu erda 0xB0 - boshqaruvchi xabari (boshqaruvni o'zgartirish)
0x01 - boshqaruvchi kodi (bizning holimizda Modulyatsiya)
encoder0Pos - kontroller qiymati (bizning holatlarimizda 0-127).
Kontroller kodlarini o'zgartirish orqali siz turli kontrollerlar uchun aylantirish g'ildiragidan (koder) foydalanishingiz mumkin.

Pitch Bend haqida ham aytib o'tish kerak. MIDI spetsifikatsiyasidan kelib chiqadiki, uchta baytdan iborat xabarni yuborish kerak: 0xE0 (Pitch Bend kodi), MSB (yuqori bayt), LSB (past bayt).

Ikki tashqi bayt 0...16383 (0x3FFF) oralig'ida bo'lishi mumkin bo'lgan 14 bitli balandlik qiymatini saqlaydi. O'rtasi 0x2000, bu qiymatdan yuqori bo'lgan hamma narsa ohangning yuqoriga qarab o'zgarishiga olib keladi, agar pastroq bo'lsa, balandlik pastga qarab o'zgaradi.
Dastur kodida, agar siz to'satdan modulyatsiya o'rniga Pitch Bend dan foydalanmoqchi bo'lsangiz (qiymatning o'rtasi, 2 baytga parchalanish va h.k.)

Tugmachani bosishni aniqlash kodi uchta holatni o'z ichiga oladi: tugma bosiladi, tugmacha ushlab turiladi va tugma bo'shatiladi. Bu tugmachani bosish davomiyligining qiymati uzatilishi uchun qilingan. Agar bu kerak bo'lmasa, siz faqat bitta holatni qoldirishingiz mumkin (tugmachani bosish), bu holda dastur sezilarli darajada soddalashtiriladi.
Sakkizta tugmachaning har bir holatini boshqarish uchun quyidagi kod ishlatiladi:

Agar (buttonState_C == HIGH && note_C_send_on == false) // Klaviatura bosilsa ( noteOn(0x90, note_C, 0x7F); note_C_send_on = rost; // Eslatma On buyrug'i yuborilgan note_C_send_off = noto'g'ri; // Eslatma o'chirish buyrug'i yuborilmagan bo'lsa) (buttonState_C == YUQORI && note_C_send_on == true) // Agar kalit ushlab tursa ( noteOn(0x00, note_C, 0x7F); note_C_send_on = true; note_C_send_off = false; ) aks holda (buttonState_C == LOW && note_C_sendse ==false) // Agar kalit qo'yib yuborilsa ( noteOn(0x90, note_C, 0x00); note_C_send_on = false; note_C_send_off = true; encoder0Pos = 0; // G'ildirak o'rnini nolga qaytaring ) ....... ..... .. ... .... // MIDI xabarini ketma-ket portga yuborish funksiyasi void noteOn(int cmd, int pitch, int velocity) ( Serial.write(cmd); Serial.write(pitch); Serial. yozish (tezlik); kechikish (20); )

E'tibor bering, agar pitch bend ishlatilsa, encoder0Pos ni nolga emas, balki 0x2000 ga qaytarish kerak bo'ladi (yoki dastur boshida aniqlashni o'rnatish yaxshidir).

Shunday qilib, sxema yig'iladi, eskiz kontrollerga yuklanadi, biz Serial Monitorni ishga tushiramiz, uzatish tezligini 115200 ga o'zgartiramiz va tugmachalarni bosing yoki kodlovchini aylantiring va qiymatlarga qarang.
Agar hamma narsa yaxshi bo'lsa, keyingi qismga o'ting. Darhol aytamanki, bu men uchun eng muammoli bo'lib chiqdi va agar virtual USB -> Midi konvertorini topmaganimda, bu maqola mavjud bo'lmagan bo'lar edi.

Kompyuter dasturlari (Windows)

Arduino-dan USB virtual MAQOMOTI porti orqali ma'lumotlarni qabul qilish va uni istalgan MIDI sekvenser dasturiga o'tkazish uchun sizga maxsus yordamchi dastur kerak: Serial MIDI Converter V2D (ofis sayti)

Dastur ko'p platformali, u men uchun Windows 7 x64 ostida ishladi, garchi ba'zi muammolar bo'lsa ham.

Biz uni ishga tushiramiz, USB portini, uzatish tezligini (115200) va MIDI kirish portini va MIDI chiqish portini tanlaymiz.

Endi, USB virtual MAQOMOTI portiga kelgan barcha MIDI ma'lumotlari 12 MIDI Yoke 6 portiga yo'naltiriladi (men virtual MIDI portlarini yaratish uchun MIDI Yoke dasturidan foydalanganman). Siz ularni Microsoft GS Wavetable Synth va boshqa portlarga yo'naltirishingiz mumkin.
Dastur har doim yoqilgan bo'lishi kerak. Tugmalarni bosganingizda yoki kodlovchi tugmachasini aylantirganingizda, pastdagi Serial RX indikatori miltillashi kerak.

Portdan kiruvchi MIDI ma'lumotlarini vizual ko'rsatish uchun men MIDI-OX dasturini (ofis sayti) juda foydali deb topdim:

Esda tutingki, MIDI qurilmalari sozlamalarida siz MIDI kirish portini o'rnatishingiz kerak.

Endi siz eslatma tugmachalarini bosganingizda yoki g'ildirakni aylantirganingizda, Monitor-Output-da MIDI ma'lumotlarini ko'rasiz.

Bu. Dasturiy ta'minot va apparat vositalari yordamida biz Arduino kontrollerida oddiy MIDI klaviaturasini yaratishga muvaffaq bo'ldik, masalan, Cubase va boshqalarda keyingi ishlov berish uchun ma'lumotlarni kompyuterga uzatish. shu jumladan real vaqtda.
Ushbu loyiha asosida siz DJ konsoli, to'liq huquqli MIDI klaviaturasi va boshqalarni yasashingiz mumkin.

Quyida siz INO eskizini, Serial MIDI Converter V2D, MIDI-OX va MIDI Yoke-ni yuklab olishingiz mumkin.