Základný MIDI ovládač Arduino: 5 krokov
Základný MIDI ovládač Arduino: 5 krokov
Anonim
Základný MIDI ovládač Arduino
Základný MIDI ovládač Arduino

Úvod:

V práci s Arduinom som nováčik, ale dúfam, že si rozšírim svoje znalosti tým, že budem učiť ostatných a dostávať spätnú väzbu. Jedná sa o úplne základný MIDI ovládač so 4 tlačidlami a potenciometrom. Osnova tohto projektu vyzerá takto:

1. Vybudujte dosku na pečenie

2. Nahrajte skicu do Arduina

3. Porozumieť bezsrstej MIDI a internej MIDI slučke (loopbe1)

4. smerujte svoje MIDI do DAW (Ableton)

Zásoby

1 x Arduino Mega 2560

1 x chlebová doska

1 x kábel USB

1 x potenciometer

4 x dotykové tlačidlá

4 x 120Ohm odpory

14 x prepojovací kábel pre nepájivú dosku

Krok 1: Vybudovanie Breadboardu

Vybudovanie Breadboardu
Vybudovanie Breadboardu
Vybudovanie Breadboardu
Vybudovanie Breadboardu

Pripojte dosku, aby všetky komponenty zodpovedali obrázku 1 vyššie. Každé tlačidlo by malo vyzerať rovnako ako obrázok 2. Tlačidlové vstupy sú 2, 3, 4 a 5 na Arduine a stredný pin potenciometra je pripojený k ANALOGOVÉMU vstupu A0.

Krok 2: Odovzdanie náčrtu

Odovzdávanie náčrtu
Odovzdávanie náčrtu

Skopírujte a prilepte nižšie uvedený kód do Arduino IDE. V časti „Nástroje“vyberte správnu dosku a nahrajte skicu do Arduina.

bajtová nota ON = 144; // poznámka k príkazovej bote; // úložisko pre aktuálne prehrávanú notu int buttonPin1 = 2; int tlačidloPin2 = 3; int tlačidloPin3 = 4; int tlačidloPin4 = 5; int potPin = A0; boolean currentState = LOW; // stroage pre aktuálny stav tlačidla boolean lastState = LOW; // úložisko pre posledný stav tlačidla void setup () {pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (buttonPin3, INPUT); pinMode (buttonPin4, INPUT); // tentokrát nastavíme pin ako INPUT Serial.begin (9600); // inicializácia sériového pripojenia} void loop () {int PotVal = analogRead (potPin); bajtová rýchlosť = mapa (PotVal, 0, 1023, 0, 127); currentState = digitalRead (buttonPin1); if (currentState == HIGH && lastState == LOW) {MIDImessage (noteON, 60, velocity); // turn note 60 on with 127 velocity delay (200); // hrubá forma odskakovania tlačidiel} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // turn note 60 off delay (2); // hrubá forma odskakovania tlačidiel} lastState = currentState; currentState = digitalRead (buttonPin2); if (currentState == HIGH && lastState == LOW) {// ak bolo tlačidlo práve stlačené MIDImessage (noteON, 61, velocity); // zapne notu 60 s oneskorením 127 rýchlosti (200); // hrubá forma tlačidla debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // turn not 60 off off (2); // surová forma odskakovania tlačidiel} lastState = currentState; currentState = digitalRead (buttonPin3); if (currentState == HIGH && lastState == LOW) {// ak bolo tlačidlo práve stlačené MIDImessage (noteON, 62, velocity); // zapne notu 60 s oneskorením 127 rýchlosti (200); // hrubá forma tlačidla debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // turn not 60 off off (2); // surová forma odskakovania tlačidiel} lastState = currentState; currentState = digitalRead (buttonPin4); if (currentState == HIGH && lastState == LOW) {// ak bolo tlačidlo práve stlačené MIDImessage (noteON, 63, velocity); // zapne notu 60 s oneskorením 127 rýchlosti (200); // hrubá forma tlačidla debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // turn not 60 off off (2); // surová forma odskakovania tlačidiel} lastState = currentState; } // odoslanie MIDI správy neplatné MIDImessage (príkaz byte, byte data1, byte data2) {Serial.write (príkaz); Serial.write (data1); Serial.write (data2); }

Som stále veľmi nový v písaní kódu všeobecne ….. tí, ktorí majú trochu viac skúseností, by to pravdepodobne mohli vyčistiť …

Krok 3: Pochopenie bezsrstých MIDI a interných MIDI slučiek

Pochopenie bezsrstých MIDI a interných MIDI slučiek
Pochopenie bezsrstých MIDI a interných MIDI slučiek
Pochopenie bezsrstých MIDI a interných MIDI slučiek
Pochopenie bezsrstých MIDI a interných MIDI slučiek
Pochopenie bezsrstých MIDI a interných MIDI slučiek
Pochopenie bezsrstých MIDI a interných MIDI slučiek

Arduino musí bežať po sériovom moste, ako je Hairless MIDI, potom vnútornou MIDI slučkou, ako je loopbe1 (alebo zbernica IAC pre Mac).

Poznámka: skicu nemôžete nahrať do Arduina, pokiaľ je pripojený k bezsrstému sériovému mostu MIDI.

Vyberte svoje Arduino v sériovom porte Hairless MIDI a vo výstupe MIDI na zbernici loopbe1 alebo IAC.

Poznámka: uistite sa, že pri použití loopbe1 nie je zapnuté stlmenie zvuku.

Krok 4: Pripojenie k vášmu DAW

Pripojenie k vášmu DAW
Pripojenie k vášmu DAW

Ak dostávate signál do aplikácie Hairless MIDI po stlačení tlačidla na doske (kontrolky budú blikať), mali by ste byť schopní odoslať MIDI údaje do DAW. Použil som Ableton, ale každý DAW by mal fungovať. Uistite sa, že je vo vašich predvoľbách DAW povolená vnútorná MIDI slučka (loopbe1) (v Abletone chcete, aby bola povolená „stopa“). Ďalej vyberte jeden zo svojich MIDI stopových vstupov do MIDI slučky (loopbe1), ako je to znázornené na obrázku vyššie.

Krok 5: Hrajte

Image
Image

Tlačidlá budú teraz fungovať ako všetky ostatné MIDI ovládače! Potenciometer zmení rýchlosť poznámok odosielaných do DAW. (Veľmi tmavé …) video vyššie ukazuje zvuk klavíra v akcii!

Odporúča: