Põhiline Arduino MIDI -kontroller: 5 sammu
Põhiline Arduino MIDI -kontroller: 5 sammu
Anonim
Põhiline Arduino MIDI kontroller
Põhiline Arduino MIDI kontroller

Sissejuhatus:

Olen Arduinoga töötamisel uus, kuid loodan oma teadmisi laiendada, õpetades teisi ja saades tagasisidet. See on väga lihtne MIDI -kontroller, millel on 4 nuppu ja potentsiomeeter. Selle projekti ülevaade näeb välja selline:

1. Ehita leivalaud

2. Laadige Sketch Arduinosse üles

3. Mõista karvutut MIDI -d ja sisemist MIDI -ahelat (loopbe1)

4. suunake oma MIDI DAW -i (Ableton)

Tarvikud

1 x Arduino Mega 2560

1 x leivalaud

1 x USB -kaabel

1 x potentsiomeeter

4 x takti nuppu

4 x 120Ohm takistid

14 x hüppajakaablid leivaplaadile

1. samm: leivalaua ehitamine

Leivalaua ehitamine
Leivalaua ehitamine
Leivalaua ehitamine
Leivalaua ehitamine

Ühendage oma leivalaud, nii et kõik komponendid vastavad ülaltoodud pildile 1. Iga nupp peaks välja nägema sama mis pilt 2. Nupu sisendid on Arduino 2, 3, 4 ja 5 ning potentsiomeetri keskmine tihvt on ühendatud ANALOG sisendiga A0.

2. samm: visandi üleslaadimine

Sketši üleslaadimine
Sketši üleslaadimine

Kopeerige ja kleepige allolev kood Arduino IDE -sse. Valige tööriistade alt õige tahvel ja laadige eskiis Arduinosse üles.

bait noteON = 144; // märkus käsu baitmärkmes; // salvestus praegu mängitavale noodile int nuppPin1 = 2; int nuppPin2 = 3; int nuppPin3 = 4; int nuppPin4 = 5; int potPin = A0; boolean currentState = LOW; // löök praeguse nupu oleku jaoks boolean lastState = LOW; // salvestusruum viimase nupu oleku tühisuse seadistamiseks () {pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (buttonPin3, INPUT); pinMode (buttonPin4, INPUT); // seekord määrame tihvti INPUT Serial.begin (9600); // initsialiseeri jadaühendus} void loop () {int PotVal = analogRead (potPin); baitide kiirus = kaart (PotVal, 0, 1023, 0, 127); currentState = digitalRead (buttonPin1); if (currentState == HIGH && lastState == LOW) {MIDImessage (noteON, 60, velocity); // lülitage märkus 60 sisse 127 kiiruse viivitusega (200); // nuppude tühistamise toores vorm} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // lülita märkus 60 välja viivitusest (2); // nuppude tagasilöögi toores vorm} lastState = currentState; currentState = digitalRead (buttonPin2); if (currentState == HIGH && lastState == LOW) {// kui nupule on just vajutatud MIDImessage (noteON, 61, kiirus); // lülitage märkus 60 sisse 127 kiiruse viivitusega (200); // nupu töötlemata vorm debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // lülita märkus 60 välja viivitusest (2); // nupu tagasilöögi toores vorm} lastState = currentState; currentState = digitalRead (buttonPin3); if (currentState == HIGH && lastState == LOW) {// kui nupule on just vajutatud MIDImessage (noteON, 62, kiirus); // lülitage märkus 60 sisse 127 kiiruse viivitusega (200); // nupu töötlemata vorm debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // lülita märkus 60 välja viivitusest (2); // nupu tagasilöögi toores vorm} lastState = currentState; currentState = digitalRead (buttonPin4); if (currentState == HIGH && lastState == LOW) {// kui nupule on just vajutatud MIDImessage (noteON, 63, kiirus); // lülitage märkus 60 sisse 127 kiiruse viivitusega (200); // nupu toorvorm debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // lülita märkus 60 välja viivitusest (2); // nupu tagasilöögi toores vorm} lastState = currentState; } // saata MIDI -sõnum tühine MIDI -sõnum (baitkäsk, baitandmed1, baitandmed2) {Serial.write (käsk); Serial.write (andmed1); Serial.write (andmed2); }

Üldiselt olen alles koodi kirjutamisega väga uus ….. kellel on vähe kogemusi, võiksid selle ilmselt koristada …

3. samm: karvutu MIDI ja sisemiste MIDI -silmuste mõistmine

Karvutu MIDI ja sisemiste MIDI -silmuste mõistmine
Karvutu MIDI ja sisemiste MIDI -silmuste mõistmine
Karvutu MIDI ja sisemiste MIDI -silmuste mõistmine
Karvutu MIDI ja sisemiste MIDI -silmuste mõistmine
Karvutu MIDI ja sisemiste MIDI -silmuste mõistmine
Karvutu MIDI ja sisemiste MIDI -silmuste mõistmine

Arduino peab läbima jadasilla, näiteks karvutu MIDI, seejärel läbi sisemise MIDI -ahela, näiteks loopbe1 (või IAC -siini Maci jaoks).

Märkus: te ei saa eskiisi Arduinole üles laadida, kui see on ühendatud karvutu MIDI jadasillaga.

Valige oma Arduino juusteta MIDI jadaportis ja loopbe1 või IAC siin MIDI -väljundis.

Märkus: veenduge, et loopbe1 kasutamisel pole vaigistus sisse lülitatud.

Samm: DAW -ga ühenduse loomine

DAW -ga ühenduse loomine
DAW -ga ühenduse loomine

Kui saate signaali karvutule MIDI -rakendusele, kui vajutate leivalaual nuppu (tuled vilguvad), peaksite saama MIDI -andmeid DAW -le saata. Ma kasutasin Abletoni, kuid iga DAW peaks töötama. Veenduge, et teie sisemine MIDI -ahel (loopbe1) on teie DAW -eelistustes lubatud (Abletonis soovite, et "track" oleks lubatud). Seejärel valige üks oma MIDI raja sisenditest MIDI silmusesse (loopbe1), nagu on näidatud ülaltoodud pildil.

Samm: mängige

Image
Image

Nupud töötavad nüüd nagu iga teine MIDI -kontroller! Potentsiomeeter muudab DAW -le saadetavate nootide kiirust. Ülaltoodud (väga tume…) video näitab tiibklaveri heli tegevuses!