Asosiy Arduino MIDI boshqaruvchisi: 5 qadam
Asosiy Arduino MIDI boshqaruvchisi: 5 qadam
Anonim
Asosiy Arduino MIDI boshqaruvchisi
Asosiy Arduino MIDI boshqaruvchisi

Kirish:

Men Arduino bilan yangi ishlayapman, lekin umid qilamanki, o'z bilimimni boshqalarga o'rgatish va fikr -mulohazalarni olish orqali kengaytiraman. Bu 4 tugmachali va potentsiometrli juda oddiy MIDI kontroller. Loyihaning sxemasi shunday ko'rinadi:

1. Non taxtasini yarating

2. Sketchni Arduino -ga yuklang

3. Sochsiz MIDI va ichki MIDI pastadirini tushunish (loopbe1)

4. MIDI -ni DAW -ga yo'naltiring (Ableton)

Ta'minotlar

1 x Arduino Mega 2560

1 x non paneli

1 x USB kabeli

1 x Potansiyometr

4 x muomala tugmalari

4 x 120 Ohm qarshilik

Non paneli uchun 14 x o'tish kabeli

1 -qadam: Non paneli yaratish

Non paneli yaratish
Non paneli yaratish
Non paneli yaratish
Non paneli yaratish

Non panelini ulang, shunda barcha komponentlar yuqoridagi 1 -rasmga mos keladi. Har bir tugma 2 -rasmda bo'lgani kabi ko'rinishi kerak. Arduino -da 2, 3, 4 va 5 -tugmalar kiritiladi va potentsiometrning o'rta pimi ANALOG A0 kirishiga ulanadi.

2 -qadam: Eskizni yuklash

Eskiz yuklanmoqda
Eskiz yuklanmoqda

Quyidagi kodni nusxa ko'chiring va Arduino IDE -ga joylashtiring. "Asboblar" ostida to'g'ri taxtani tanlang va eskizni Arduino -ga yuklang.

// byte noteON = 144; // buyruq baytidagi eslatma; // hozirda int notPPIN1 = 2 yozuvini saqlash uchun saqlash; int tugmasiPin2 = 3; int tugmasiPin3 = 4; int tugmasiPin4 = 5; int potPin = A0; boolean currentState = LOW; // joriy tugma holati uchun harakatlanish boolean lastState = LOW; // oxirgi tugma holatini saqlash uchun bo'sh joyni sozlash () {pinMode (buttonPin1, INPUT); pinMod (tugmaPin2, Kirish); pinMod (tugmaPin3, Kirish); pinMode (tugmaPin4, Kirish); // bu safar biz pinni INPUT Serial.begin (9600) sifatida o'rnatamiz; // Serial ulanishni ishga tushirish} void loop () {int PotVal = analogRead (potPin); bayt tezligi = xarita (PotVal, 0, 1023, 0, 127); currentState = digitalRead (buttonPin1); if (currentState == HIGH && lastState == LOW) {MIDImessage (noteON, 60, tezlik); // 60 -eslatmani 127 tezlikni kechiktirish bilan yoqing (200); // tugmani o'chirishning qo'pol shakli} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // 60 -eslatmani kechiktirishni o'chirish (2); // tugmalarni o'chirishning qo'pol shakli} lastState = currentState; currentState = digitalRead (buttonPin2); if (currentState == HIGH && lastState == LOW) {// agar tugma endigina bosilgan bo'lsa MIDImessage (noteON, 61, tezlik); debuning}} if if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // 60 -eslatmani kechiktirishni o'chirish (2); // tugmalarni o'chirishning qo'pol shakli} lastState = currentState; currentState = digitalRead (buttonPin3); if (currentState == HIGH && lastState == LOW) {// agar tugma endigina bosilgan bo'lsa MIDImessage (noteON, 62, tezlik); debuning}} if if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // 60 -eslatmani kechiktirishni o'chirish (2); // tugmalarni o'chirishning qo'pol shakli} lastState = currentState; currentState = digitalRead (buttonPin4); if (currentState == HIGH && lastState == LOW) {// agar tugma endigina bosilgan bo'lsa MIDImessage (noteON, 63, tezlik); // 127 tezlikni kechiktirish bilan 60 -eslatmani yoqing (200); // tugmaning qo'pol shakli debuning}} if if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // 60 -eslatmani kechiktirishni o'chirish (2); // tugmalarni o'chirishning qo'pol shakli} lastState = currentState; } // MIDI xabarini bekor qilish MIDImessage (bayt buyrug'i, bayt ma'lumotlari1, bayt ma'lumotlari2) {Serial.write (buyruq); Serial.write (ma'lumotlar1); Serial.write (ma'lumotlar2); }

Men hali umuman kod yozishda juda yangiman … … biroz tajribaga ega bo'lganlar, ehtimol, buni tozalashlari mumkin edi …

3 -qadam: Tuksiz MIDI va ichki MIDI looplarini tushunish

Sochsiz MIDI va ichki MIDI looplarini tushunish
Sochsiz MIDI va ichki MIDI looplarini tushunish
Sochsiz MIDI va ichki MIDI looplarini tushunish
Sochsiz MIDI va ichki MIDI looplarini tushunish
Sochsiz MIDI va ichki MIDI looplarini tushunish
Sochsiz MIDI va ichki MIDI looplarini tushunish

Arduino Sochsiz MIDI kabi ketma -ket ko'prikdan o'tishi kerak, keyin loopbe1 (yoki Mac uchun IAC avtobus) kabi ichki MIDI pastadir orqali o'tishi kerak.

Eslatma: siz tuksiz MIDI ketma -ket ko'prigiga ulangan paytda eskizni Arduino -ga yuklay olmaysiz.

Sochsiz MIDI ketma -ket portida Arduino -ni tanlang va MIDI -da loopbe1 yoki IAC Bus -ni tanlang.

Eslatma: loopbe1 dan foydalanilganda ovoz o'chirilmaganligiga ishonch hosil qiling.

4 -qadam: DAW -ga ulanish

DAW -ga ulanish
DAW -ga ulanish

Agar siz paneldagi tugmachani bosganingizda (Sochsiz MIDI) dasturiga signal kelsa (chiroqlar yonadi), siz MIDI ma'lumotlarini DAWga yuborishingiz kerak. Men Ableton -dan foydalandim, lekin har qanday DAW ishlashi kerak. Sizning ichki MIDI pastadiringiz (loopbe1) DAW parametrlarida yoqilganligiga ishonch hosil qiling (Abletonda siz "trek" yoqilishini xohlaysiz). Keyin, yuqoridagi rasmda ko'rsatilgandek, MIDI tsikliga (loopbe1) MIDI treklaridan birini tanlang.

5 -qadam: O'ynang

Image
Image

Endi tugmalar boshqa MIDI kontrollerlar kabi ishlaydi! Potentsiometr DAWga yuboriladigan yozuvlarning tezligini o'zgartiradi. Yuqoridagi (juda qorong'i …) videoda pianino chalinayotgani ko'rsatilgan!

Tavsiya: