Základní MIDI ovladač Arduino: 5 kroků
Základní MIDI ovladač Arduino: 5 kroků
Anonim
Základní MIDI ovladač Arduino
Základní MIDI ovladač Arduino

Intro:

Jsem ve spolupráci s Arduinem nováček, ale doufám, že své znalosti rozšířím tím, že budu učit ostatní a dostávat zpětnou vazbu. Jedná se o velmi základní MIDI ovladač se 4 tlačítky a potenciometrem. Osnova tohoto projektu vypadá takto:

1. Postavte prkénko

2. Nahrajte skicu do Arduina

3. Porozumět bezsrsté MIDI a interní MIDI smyčce (loopbe1)

4. směrujte MIDI do DAW (Ableton)

Zásoby

1 x Arduino Mega 2560

1 x chlebová deska

1 x kabel USB

1 x potenciometr

4 x Taktovací tlačítka

4 x 120Ohm odpory

14 x propojovací kabely pro prkénko

Krok 1: Vytvoření Breadboardu

Vybudování prkénka
Vybudování prkénka
Vybudování prkénka
Vybudování prkénka

Připojte prkénko tak, aby všechny součásti odpovídaly obrázku 1 výše. Každé tlačítko by mělo vypadat stejně jako na obrázku 2. Tlačítkové vstupy jsou 2, 3, 4 a 5 na Arduinu a prostřední pin potenciometru je připojen ke vstupu ANALOG A0.

Krok 2: Nahrání náčrtu

Nahrávání náčrtu
Nahrávání náčrtu

Zkopírujte a vložte níže uvedený kód do Arduino IDE. Pod „nástroji“vyberte správnou desku a nahrajte skicu do Arduina.

byte noteON = 144; // poznámka na příkazubyte note; // úložiště pro aktuálně přehrávanou notu int buttonPin1 = 2; int tlačítko Pin2 = 3; int tlačítko Pin3 = 4; int tlačítko Pin4 = 5; int potPin = A0; boolean currentState = LOW; // stroage pro aktuální stav tlačítka boolean lastState = LOW; // úložiště pro poslední stav tlačítka void setup () {pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (buttonPin3, INPUT); pinMode (buttonPin4, INPUT); // tentokrát nastavíme pin jako INPUT Serial.begin (9600); // inicializace sériového připojení} void loop () {int PotVal = analogRead (potPin); bajtová rychlost = 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); // surová forma tlačítka debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // turn note 60 off delay (2); // hrubá forma tlačítka debouncing} lastState = currentState; currentState = digitalRead (buttonPin2); if (currentState == HIGH && lastState == LOW) {// pokud bylo tlačítko právě stisknuto MIDImessage (noteON, 61, velocity); // zapne notu 60 se zpožděním 127 rychlosti (200); // hrubá forma tlačítka debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // turn not 60 off off (2); // surová forma tlačítka debouncing} lastState = currentState; currentState = digitalRead (buttonPin3); if (currentState == HIGH && lastState == LOW) {// pokud bylo tlačítko právě stisknuto MIDImessage (noteON, 62, velocity); // zapne notu 60 se zpožděním 127 rychlosti (200); // hrubá forma tlačítka debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // turn not 60 off off (2); // surová forma tlačítka debouncing} lastState = currentState; currentState = digitalRead (buttonPin4); if (currentState == HIGH && lastState == LOW) {// pokud bylo tlačítko právě stisknuto MIDImessage (noteON, 63, velocity); // zapnutí noty 60 se zpožděním 127 rychlosti (200); // hrubá forma tlačítka debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // turn note 60 off delay (2); // surová forma tlačítka debouncing} lastState = currentState; } // odeslání MIDI zprávy neplatné MIDImessage (byte příkaz, byte data1, byte data2) {Serial.write (příkaz); Serial.write (data1); Serial.write (data2); }

Jsem stále velmi nový v psaní kódu obecně ….. ti, kteří mají trochu více zkušeností, by to pravděpodobně mohli vyčistit …

Krok 3: Porozumění bezsrstým MIDI a interním MIDI smyčkám

Pochopení bezsrstých MIDI a interních MIDI smyček
Pochopení bezsrstých MIDI a interních MIDI smyček
Pochopení bezsrstých MIDI a interních MIDI smyček
Pochopení bezsrstých MIDI a interních MIDI smyček
Pochopení bezsrstých MIDI a interních MIDI smyček
Pochopení bezsrstých MIDI a interních MIDI smyček

Arduino musí běžet přes sériový můstek jako Hairless MIDI, pak přes interní MIDI smyčku, jako je loopbe1 (nebo sběrnice IAC pro Mac).

Poznámka: nemůžete načíst skicu do Arduina, pokud je připojeno k bezsrstému MIDI sériovému můstku.

Vyberte si Arduino v sériovém portu Hairless MIDI a na MIDI výstupu smyčku loopbe1 nebo IAC.

Poznámka: ujistěte se, že při použití loopbe1 není zapnuto ztlumení.

Krok 4: Připojení k vašemu DAW

Připojení k vašemu DAW
Připojení k vašemu DAW

Pokud dostáváte signál do aplikace Hairless MIDI, když stisknete tlačítko na prkénku (kontrolky budou blikat), měli byste být schopni odesílat MIDI data do DAW. Použil jsem Ableton, ale každý DAW by měl fungovat. Ujistěte se, že je ve vašich předvolbách DAW povolena interní MIDI smyčka (loopbe1) (v Abletonu chcete povolit „track“). Dále vyberte jeden ze vstupů MIDI stopy do MIDI smyčky (loopbe1), jak je znázorněno na obrázku výše.

Krok 5: Hrajte

Image
Image

Tlačítka budou nyní fungovat jako všechny ostatní MIDI ovladače! Potenciometr změní rychlost poznámek odesílaných do DAW. (Velmi tmavé …) video výše ukazuje zvuk klavíru v akci!