Sisukord:
2025 Autor: John Day | [email protected]. Viimati modifitseeritud: 2025-01-13 06:57
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
Ü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
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
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
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
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!