Sadržaj:

Osnovni Arduino MIDI kontroler: 5 koraka
Osnovni Arduino MIDI kontroler: 5 koraka

Video: Osnovni Arduino MIDI kontroler: 5 koraka

Video: Osnovni Arduino MIDI kontroler: 5 koraka
Video: Почему плохо работает китайский MIDI USB кабель-интерфейс? Исправляем ошибки, устанавливаем оптрон. 2024, Novembar
Anonim
Osnovni Arduino MIDI kontroler
Osnovni Arduino MIDI kontroler

Uvod:

Ja sam tek počeo raditi s Arduinom, ali nadam se da ću proširiti svoje znanje poučavajući druge i primajući povratne informacije. Ovo je vrlo osnovni MIDI kontroler sa 4 tipke i potenciometrom. Pregled ovog projekta izgleda ovako:

1. Napravite matičnu ploču

2. Otpremite skicu na Arduino

3. Shvatite MIDI bez dlake i unutrašnju MIDI petlju (loopbe1)

4. usmjerite svoj MIDI na DAW (Ableton)

Supplies

1 x Arduino Mega 2560

1 x ploča za hleb

1 x USB kabl

1 x Potenciometar

4 x taktilna dugmeta

4 x 120Ohm otpornici

14 x kratkospojni kablovi za ploču

Korak 1: Izrada tlocrta

Izgradnja Breadboard -a
Izgradnja Breadboard -a
Izgradnja Breadboard -a
Izgradnja Breadboard -a

Povežite matičnu ploču tako da se sve komponente podudaraju sa slikom 1 iznad. Svako dugme bi trebalo izgledati isto kao na slici 2. Ulazi dugmadi su 2, 3, 4 i 5 na Arduinu, a srednji pin potenciometra spojen je na ANALOG ulaz A0.

Korak 2: Otpremanje skice

Otpremanje skice
Otpremanje skice

Kopirajte i zalijepite donji kod u Arduino IDE. Odaberite ispravnu ploču pod "alati" i prenesite skicu na Arduino.

byte noteON = 144; // napomena na commandbyte note; // spremište za trenutno reproduciranu notu int buttonPin1 = 2; int buttonPin2 = 3; int buttonPin3 = 4; int buttonPin4 = 5; int potPin = A0; boolean currentState = LOW; // stroage za trenutno stanje dugmeta boolean lastState = LOW; // spremište za stanje zadnjeg dugmeta void setup () {pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (buttonPin3, INPUT); pinMode (buttonPin4, INPUT); // ovaj put ćemo postaviti pin kao INPUT Serial.begin (9600); // inicijalizirati serijsku vezu} void loop () {int PotVal = analogRead (potPin); brzina bajtova = karta (PotVal, 0, 1023, 0, 127); currentState = digitalRead (buttonPin1); if (currentState == HIGH && lastState == LOW) {MIDImessage (noteON, 60, velocity); // uključite bilješku 60 sa 127 kašnjenja brzine (200); // grubi oblik otkazivanja dugmeta} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // isključenje note 60 off delay (2); // grubi oblik otkazivanja dugmeta} lastState = currentState; currentState = digitalRead (buttonPin2); if (currentState == HIGH && lastState == LOW) {// ako je dugme upravo pritisnuto MIDImessage (noteON, 61, velocity); // uključite notu 60 sa 127 kašnjenja brzine (200); // grubi oblik dugmeta debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // kašnjenje isključenja note 60 (2); // grubi oblik otkazivanja dugmeta} lastState = currentState; currentState = digitalRead (buttonPin3); if (currentState == HIGH && lastState == LOW) {// ako je dugme upravo pritisnuto MIDImessage (noteON, 62, velocity); // uključite napomenu 60 sa 127 kašnjenja brzine (200); // grubi oblik dugmeta debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // kašnjenje isključenja bilješke 60 (2); // grubi oblik otkazivanja dugmeta} lastState = currentState; currentState = digitalRead (buttonPin4); if (currentState == HIGH && lastState == LOW) {// ako je dugme upravo pritisnuto MIDImessage (noteON, 63, velocity); // uključite napomenu 60 sa 127 kašnjenja brzine (200); // grubi oblik dugmeta debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // kašnjenje isključenja bilješke 60 (2); // grubi oblik otkazivanja dugmeta} lastState = currentState; } // slanje MIDI poruke void MIDImessage (naredba byte, bajt data1, bajt data2) {Serial.write (naredba); Serial.write (data1); Serial.write (data2); }

Još sam tek počeo pisati kôd općenito ….. oni s malo više iskustva vjerojatno bi ovo mogli očistiti …

Korak 3: Razumijevanje MIDI i internih MIDI petlji bez dlake

Razumijevanje MIDI i internih MIDI petlji bez dlake
Razumijevanje MIDI i internih MIDI petlji bez dlake
Razumijevanje MIDI i internih MIDI petlji bez dlake
Razumijevanje MIDI i internih MIDI petlji bez dlake
Razumijevanje MIDI i internih MIDI petlji bez dlake
Razumijevanje MIDI i internih MIDI petlji bez dlake

Arduino mora prolaziti kroz serijski most poput Hairless MIDI, zatim kroz internu MIDI petlju, poput loopbe1 (ili IAC sabirnice za Mac).

Napomena: ne možete prenijeti skicu na Arduino dok je spojen na bezdlaki MIDI serijski most.

Odaberite svoj Arduino u serijskom portu Hairless MIDI i loopbe1 ili IAC sabirnicu u MIDI izlazu.

Napomena: pazite da isključenje zvuka nije uključeno kada koristite loopbe1.

Korak 4: Povezivanje na vaš DAW

Povezivanje na vaš DAW
Povezivanje na vaš DAW

Ako primate signal MIDI aplikaciji Hairless kada pritisnete tipku na ploči s osvjetljenjem (svjetla će treperiti), trebali biste moći poslati MIDI podatke na DAW. Koristio sam Ableton, ali svaki DAW bi trebao raditi. Uvjerite se da je vaša interna MIDI petlja (loopbe1) omogućena u vašim DAW postavkama (u Abletonu želite da "track" bude omogućen). Zatim odaberite jedan od vaših ulaza za MIDI zapis u MIDI petlju (loopbe1) kao što je prikazano na gornjoj slici.

Korak 5: Igrajte

Image
Image

Gumbi će sada raditi kao i svaki drugi MIDI kontroler! Potenciometar će promijeniti brzinu bilješki koje se šalju u DAW. Gornji (vrlo mračan …) video prikazuje zvuk velikog klavira na djelu!

Preporučuje se: