Əsas Arduino MIDI Controller: 5 addım
Əsas Arduino MIDI Controller: 5 addım
Anonim
Əsas Arduino MIDI Nəzarətçisi
Əsas Arduino MIDI Nəzarətçisi

Giriş:

Arduino ilə işləməkdə yeniyəm, amma başqalarına öyrədərək və rəy alaraq biliklərimi genişləndirməyi ümid edirəm. Bu 4 düyməli və potensiometrli çox sadə bir MIDI nəzarətçisidir. Bu layihənin konturu belə görünür:

1. Çörək taxtasını düzəldin

2. Eskizi Arduinoya yükləyin

3. Tüksüz MIDI və daxili MIDI döngəsini anlayın (loopbe1)

4. MIDI -nizi DAW -a yönləndirin (Ableton)

Təchizat

1 x Arduino Mega 2560

1 x Çörək Paneli

1 x USB Kabel

1 x Potansiyometr

4 x Toxunma düymələri

4 x 120 Ohm rezistorlar

Çörək taxtası üçün 14 x tullanan kabel

Addım 1: Çörək lövhəsinin qurulması

Çörək lövhəsinin qurulması
Çörək lövhəsinin qurulması
Çörək lövhəsinin qurulması
Çörək lövhəsinin qurulması

Çörək taxtasını bütün komponentlərin yuxarıdakı şəkil 1 -ə uyğun olması üçün bağlayın. Hər bir düymə şəkil 2 ilə eyni görünməlidir. Düymə girişləri Arduino -da 2, 3, 4 və 5 -dir və potensiometrin orta pimi ANALOG girişi A0 -a bağlıdır.

Addım 2: Eskizin yüklənməsi

Sketch yüklənir
Sketch yüklənir

Aşağıdakı kodu kopyalayın və Arduino IDE -ə yapışdırın. "Alətlər" altında düzgün lövhəni seçin və eskizi Arduinoya yükləyin.

byte noteON = 144; // commandbyte notu haqqında qeyd; // hazırda int notPin1 = 2 notu çalmaq üçün saxlama; int buttonPin2 = 3; int buttonPin3 = 4; int buttonPin4 = 5; int potPin = A0; boolean currentState = LOW; // cari düymə vəziyyəti üçün vuruş boolean lastState = LOW; // son düymə vəziyyətinin saxlanması void setup () {pinMode (buttonPin1, INPUT); pinMode (düyməPin2, GİRİŞ); pinMode (buttonPin3, GİRİŞ); pinMode (düyməPin4, GİRİŞ); // bu dəfə pimi INPUT Serial.begin (9600) olaraq təyin edəcəyik; // Serial bağlantısını işə salın} void loop () {int PotVal = analogRead (potPin); bayt sürəti = xəritə (PotVal, 0, 1023, 0, 127); currentState = digitalRead (buttonPin1); if (currentState == HIGH && lastState == LOW) {MIDImessage (noteON, 60, sürət); // 127 sürəti gecikdirməklə (200) notu 60 -ı yandırın; // düymənin sökülməsinin xam forması} else if (currentState == LOW && lastState == YÜKSƏK) {MIDImessage (noteON, 60, 0); // not 60 gecikməsini söndürün (2); // düymənin çıxarılmasının xam forması} lastState = currentState; currentState = digitalRead (buttonPin2); if (currentState == HIGH && LastState == LOW) {// düyməsinə yeni basılmışsa MIDImessage (noteON, 61, sürət); // 127 sürət gecikməsi (200) ilə not 60 -ı yandırın; // düymənin kobud forması debudan} başqa halda (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // not 60 gecikməsini söndürün (2); // düymənin ləğv edilməsinin xam forması} lastState = currentState; currentState = digitalRead (buttonPin3); if (currentState == HIGH && lastState == LOW) {// əgər düyməyə yeni basılmışsa MIDImessage (noteON, 62, sürət); // 127 sürət gecikməsi (200) ilə not 60 -ı yandırın; // düymənin kobud forması debudan} başqa halda (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // not 60 gecikməsini söndürün (2); // düymənin ləğv edilməsinin xam forması} lastState = currentState; currentState = digitalRead (buttonPin4); if (currentState == HIGH && lastState == LOW) {// düyməsinə yeni basılmışsa MIDImessage (noteON, 63, sürət); // 127 sürət gecikməsi (200) ilə not 60 -ı yandırın; // düymənin kobud forması debudan} başqa əgər (currentState == LOW && lastState == YÜKSƏK) {MIDImessage (noteON, 60, 0); // not 60 gecikməsini söndürün (2); // düymənin ləğv edilməsinin xam forması} lastState = currentState; } // MIDI mesajı etibarsız göndərin MIDImessage (bayt əmri, bayt data1, bayt data2) {Serial.write (əmr); Serial.write (data1); Serial.write (data2); }

Ümumiyyətlə kod yazmaqda hələ çox yeniyəm ….. bir az da təcrübəsi olanlar yəqin ki, bunu təmizləyə bilər …

Addım 3: Tüksüz MIDI və Daxili MIDI Döngülərini Anlamaq

Tüksüz MIDI və Daxili MIDI Döngülərini Anlamaq
Tüksüz MIDI və Daxili MIDI Döngülərini Anlamaq
Tüksüz MIDI və Daxili MIDI Döngülərini Anlamaq
Tüksüz MIDI və Daxili MIDI Döngülərini Anlamaq
Tüksüz MIDI və Daxili MIDI Döngülərini Anlamaq
Tüksüz MIDI və Daxili MIDI Döngülərini Anlamaq

Arduino, Hairless MIDI kimi ardıcıl bir körpüdən sonra loopbe1 (və ya Mac üçün IAC avtobusu) kimi daxili bir MIDI döngəsindən keçməlidir.

Qeyd: Arduino tüksüz MIDI seriyalı körpüyə qoşulduqda eskiz yükləyə bilməzsiniz.

Saçsız MIDI seriya portunda Arduino -nu seçin və MIDI -də loopbe1 və ya IAC Avtobusunu seçin.

Qeyd: loopbe1 istifadə edərkən səssizliyin aktiv olmadığından əmin olun.

Addım 4: DAW -a qoşulun

DAW -a qoşulur
DAW -a qoşulur

Çörək lövhəsindəki bir düyməni basdığınızda (işıqlar yanıb -sönəcək) Tüksüz MIDI tətbiqinə siqnal alırsınızsa, MIDI məlumatlarını DAW -a göndərə bilməlisiniz. Ableton istifadə etdim, amma hər hansı bir DAW işləməlidir. Daxili MIDI döngənizin (loopbe1) DAW seçimlərinizdə aktiv olduğundan əmin olun (Abletonda "track" in aktiv olmasını istəyirsiniz). Sonra yuxarıdakı şəkildə göstərildiyi kimi MIDI döngüsünə (loopbe1) MIDI iz girişlərindən birini seçin.

Addım 5: Oyna

Image
Image

Düymələr artıq digər MIDI nəzarətçiləri kimi işləyəcək! Potansiometr DAW -a göndərilən qeydlərin sürətini dəyişəcək. Yuxarıdakı (çox qaranlıq…) video, böyük bir pianonun səsini göstərir!

Tövsiyə: