Osnovni Arduino MIDI kontroler: 5 koraka
Osnovni Arduino MIDI kontroler: 5 koraka
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 s 4 tipke i potenciometrom. Okvir ovog projekta izgleda ovako:

1. Izradite matičnu ploču

2. Prenesite skicu na Arduino

3. Shvatite MIDI bez dlake i unutarnju MIDI petlju (loopbe1)

4. usmjerite svoj MIDI na DAW (Ableton)

Pribor

1 x Arduino Mega 2560

1 x Daska za kruh

1 x USB kabel

1 x potenciometar

4 x taktilna gumba

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

Spojite svoju matičnu ploču tako da sve komponente odgovaraju gornjoj slici 1. Svaki gumb trebao bi izgledati isto kao na slici 2. Ulazi gumba su 2, 3, 4 i 5 na Arduinu, a srednji pin potenciometra spojen je na ANALOG ulaz A0.

Korak 2: Prijenos skice

Učitavanje skice
Učitavanje skice

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

byte noteON = 144; // bilješka 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 gumba boolean lastState = LOW; // spremište za stanje zadnjeg gumba void setup () {pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (buttonPin3, INPUT); pinMode (buttonPin4, INPUT); // ovaj put ćemo pin postaviti 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 gumba} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // kašnjenje isključenja bilješke 60 (2); // grubi oblik otkazivanja gumba} lastState = currentState; currentState = digitalRead (buttonPin2); if (currentState == HIGH && lastState == LOW) {// ako je gumb upravo pritisnut MIDImessage (noteON, 61, velocity); // uključite bilješku 60 sa 127 kašnjenja brzine (200); // grubi oblik gumba debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // isključenje bilješke 60 (2); // grubi oblik otkazivanja gumba} lastState = currentState; currentState = digitalRead (buttonPin3); if (currentState == HIGH && lastState == LOW) {// ako je gumb upravo pritisnut MIDImessage (noteON, 62, velocity); // uključite bilješku 60 sa 127 kašnjenja brzine (200); // grubi oblik gumba debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // isključenje bilješke 60 (2); // grubi oblik otkazivanja gumba} lastState = currentState; currentState = digitalRead (buttonPin4); if (currentState == HIGH && lastState == LOW) {// ako je gumb upravo pritisnut MIDImessage (noteON, 63, velocity); // uključite bilješku 60 sa 127 kašnjenja brzine (200); // grubi oblik gumba debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // isključenje bilješke 60 (2); // grubi oblik otkazivanja gumba} lastState = currentState; } // slanje MIDI poruke void MIDImessage (naredba byte, data byte1, byte data2) {Serial.write (naredba); Serial.write (data1); Serial.write (data2); }

Još sam vrlo nov u pisanju koda 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 proći kroz serijski most poput Hairless MIDI, a zatim kroz unutarnju MIDI petlju, poput loopbe1 (ili IAC sabirnice za Mac).

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

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

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

Korak 4: Spajanje na vaš DAW

Povezivanje s vašim DAW -om
Povezivanje s vašim DAW -om

Ako primate signal MIDI aplikaciji Hairless kada pritisnete gumb na ploči (svjetla će bljeskati), trebali biste moći poslati MIDI podatke na DAW. Koristio sam Ableton, ali svaki DAW bi trebao raditi. Provjerite je li vaša unutarnja MIDI petlja (loopbe1) omogućena u vašim DAW postavkama (u Abletonu želite da je "track" 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 se

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čeni: