Satura rādītājs:

Pamata Arduino MIDI kontrolieris: 5 soļi
Pamata Arduino MIDI kontrolieris: 5 soļi

Video: Pamata Arduino MIDI kontrolieris: 5 soļi

Video: Pamata Arduino MIDI kontrolieris: 5 soļi
Video: TX81Z Arduino MIDI-контроллер/редактор 2024, Novembris
Anonim
Pamata Arduino MIDI kontrolieris
Pamata Arduino MIDI kontrolieris

Ievads:

Esmu jauns darbā ar Arduino, bet ceru paplašināt savas zināšanas, mācot citus un saņemot atsauksmes. Šis ir ļoti vienkāršs MIDI kontrolieris ar 4 pogām un potenciometru. Šī projekta izklāsts izskatās šādi:

1. Izveidojiet maizes dēli

2. Augšupielādējiet skici Arduino

3. Izprotiet MIDI bez matiem un iekšējo MIDI cilpu (loopbe1)

4. novirziet savu MIDI uz DAW (Ableton)

Piegādes

1 x Arduino Mega 2560

1 x maizes dēlis

1 x USB kabelis

1 x potenciometrs

4 x taustiņu pogas

4 x 120 omi rezistori

14 x džemperis kabeļiem maizei

1. darbība: maizes dēļa izveide

Maizes dēļa izveide
Maizes dēļa izveide
Maizes dēļa izveide
Maizes dēļa izveide

Pievienojiet savu maizes dēli, lai visas sastāvdaļas atbilstu 1. attēlam. Katrai pogai vajadzētu izskatīties tāpat kā 2. attēlam. Arduino pogu ievades ir 2, 3, 4 un 5, un potenciometra vidējā tapa ir pievienota ANALOG ieejai A0.

2. darbība. Skices augšupielāde

Notiek skices augšupielāde
Notiek skices augšupielāde

Kopējiet un ielīmējiet zemāk esošo kodu Arduino IDE. Sadaļā “rīki” atlasiet pareizo dēli un augšupielādējiet skici Arduino.

baitu piezīmeON = 144; // piezīme komandbaita piezīmē; // krātuve pašlaik atskaņotajai notai int pogaPin1 = 2; int pogaPin2 = 3; int pogaPin3 = 4; int pogaPin4 = 5; int potPin = A0; Būla strāvaStāvoklis = LOW; // pašreizējā pogas stāvokļa strūklaka Būla pēdējāState = LOW; // krātuve pēdējās pogas stāvokļa spēkā neesamības iestatīšanai () {pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (buttonPin3, INPUT); pinMode (buttonPin4, INPUT); // šoreiz mēs iestatīsim tapu kā INPUT Serial.begin (9600); // Initial Serial connection} void loop () {int PotVal = analogRead (potPin); baitu ātrums = karte (PotVal, 0, 1023, 0, 127); currentState = digitalRead (buttonPin1); if (currentState == HIGH && lastState == LOW) {MIDImessage (noteON, 60, velocity); // ieslēgt piezīmi 60 ar 127 ātruma aizkavi (200); // neapstrādāta pogu atcelšanas forma} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // izslēgt piezīmes 60 aizkavi (2); // neapstrādāta pogas atspējošanas forma} lastState = currentState; currentState = digitalRead (buttonPin2); if (currentState == HIGH && lastState == LOW) {// ja poga ir tikko nospiesta MIDImessage (piezīme, 61, ātrums); // ieslēdziet piezīmi 60 ar 127 ātruma aizkavi (200); // neapstrādātas pogas forma debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // izslēgt piezīmes 60 aizkavi (2); // neapstrādātas pogas atcelšanas forma} lastState = currentState; currentState = digitalRead (buttonPin3); if (currentState == HIGH && lastState == LOW) {// ja poga ir tikko nospiesta MIDImessage (piezīme, 62, ātrums); // ieslēdziet piezīmi 60 ar 127 ātruma aizkavi (200); // neapstrādātas pogas forma debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // izslēgt piezīmes 60 aizkavi (2); // neapstrādātas pogas atcelšanas forma} lastState = currentState; currentState = digitalRead (buttonPin4); if (currentState == HIGH && lastState == LOW) {// ja poga ir tikko nospiesta MIDImessage (piezīme, 63, ātrums); // ieslēdziet piezīmi 60 ar 127 ātruma aizkavi (200); // neapstrādātas pogas forma debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // izslēgt piezīmes 60 aizkavi (2); // neapstrādātas pogas atcelšanas forma} lastState = currentState; } // sūtīt MIDI ziņojumu void MIDImessage (baita komanda, baita dati1, baita dati2) {Sērijas.rakstīt (komanda); Serial.write (dati1); Serial.write (dati2); }

Es joprojām esmu ļoti jauns, lai vispār rakstītu kodu….. tie, kuriem ir nedaudz lielāka pieredze, droši vien varētu to notīrīt…

3. darbība. Izpratne par Matu bez matiem un iekšējām MIDI cilpām

Izpratne bez matiem MIDI un iekšējās MIDI cilpas
Izpratne bez matiem MIDI un iekšējās MIDI cilpas
Izpratne bez matiem MIDI un iekšējās MIDI cilpas
Izpratne bez matiem MIDI un iekšējās MIDI cilpas
Izpratne bez matiem MIDI un iekšējās MIDI cilpas
Izpratne bez matiem MIDI un iekšējās MIDI cilpas

Arduino ir jābrauc caur seriālo tiltu, piemēram, bez matu MIDI, pēc tam caur iekšēju MIDI cilpu, piemēram, loopbe1 (vai IAC kopni Mac).

Piezīme: jūs nevarat augšupielādēt skici Arduino, kamēr tā ir savienota ar MIDI sērijas tiltu bez matiem.

MIDI seriālajā portā izvēlieties savu Arduino un MIDI izejā - loopbe1 vai IAC kopni.

Piezīme. Lietojot loopbe1, pārliecinieties, vai izslēgta skaņa.

4. darbība. Savienojuma izveide ar DAW

Savienojuma izveide ar jūsu DAW
Savienojuma izveide ar jūsu DAW

Ja jūs saņemat signālu uz lietotni Hairless MIDI, nospiežot pogu uz maizes dēļa (mirgos gaismas), jums vajadzētu būt iespējai nosūtīt MIDI datus uz DAW. Es izmantoju Ableton, bet jebkuram DAW vajadzētu strādāt. Pārliecinieties, vai jūsu iekšējā MIDI cilpa (loopbe1) ir iespējota jūsu DAW preferencēs (Ableton vēlaties, lai tiktu iespējots "celiņš"). Pēc tam atlasiet vienu no savām MIDI celiņu ieejām MIDI cilpā (loopbe1), kā parādīts attēlā iepriekš.

5. solis: spēlējiet

Image
Image

Pogas tagad darbosies tāpat kā jebkurš cits MIDI kontrolieris! Potenciometrs mainīs DAW nosūtīto piezīmju ātrumu. Iepriekš redzamais (ļoti tumšais …) video parāda flīģeļa skaņu darbībā!

Ieteicams: