Turinys:
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
Įvadas:
Esu naujokas dirbdamas su „Arduino“, bet tikiuosi praplėsti savo žinias mokydamas kitus ir gaudamas atsiliepimų. Tai labai paprastas MIDI valdiklis su 4 mygtukais ir potenciometru. Šio projekto schema atrodo taip:
1. Sukurkite duonos lentą
2. Įkelkite eskizą į „Arduino“
3. Suprasti MIDI be plaukų ir vidinę MIDI kilpą (loopbe1)
4. nukreipkite savo MIDI į DAW (Ableton)
Prekės
1 x „Arduino Mega 2560“
1 x duonos lenta
1 x USB kabelis
1 x potenciometras
4 x taktiniai mygtukai
4 x 120 omų rezistoriai
14 x jungiamieji kabeliai duonai
1 žingsnis: sukurkite duonos lentą
Prijunkite savo duonos lentą, kad visi komponentai atitiktų 1 paveikslėlį. Kiekvienas mygtukas turėtų atrodyti taip pat, kaip 2 paveikslėlis. Mygtuko įvestys yra 2, 3, 4 ir 5 „Arduino“, o vidurinis potenciometro kaištis prijungtas prie ANALOG įvesties A0.
2 veiksmas: eskizo įkėlimas
Nukopijuokite ir įklijuokite žemiau esantį kodą į „Arduino IDE“. Skiltyje „įrankiai“pasirinkite tinkamą lentą ir įkelkite eskizą į „Arduino“.
baitų užrašasONON = 144; // pastaba apie komandinę baitų pastabą; // šiuo metu grojamos natos saugykla int mygtukasPin1 = 2; int mygtukasPin2 = 3; int mygtukasPin3 = 4; int mygtukasPin4 = 5; int potPin = A0; boolean currentState = LOW; // dabartinės mygtuko būklės loginis brūkšnys lastState = LOW; // paskutinio mygtuko būsenos saugykla void setup () {pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (buttonPin3, INPUT); pinMode (buttonPin4, INPUT); // šį kartą kaištį nustatysime kaip INPUT Serial.begin (9600); // inicijuoti serijinį ryšį} void loop () {int PotVal = analogRead (potPin); baitų greitis = žemėlapis („PotVal“, 0, 1023, 0, 127); currentState = digitalRead (buttonPin1); if (currentState == HIGH && lastState == LOW) {MIDImessage (noteON, 60, greitis); // įjunkite 60 pastabą su 127 greičio vėlavimu (200); // neapdorota mygtuko panaikinimo forma} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // išjunkite 60 pastabą (2); // neapdorota mygtuko išjungimo forma} lastState = currentState; currentState = digitalRead (buttonPin2); if (currentState == HIGH && lastState == LOW) {// jei mygtukas ką tik buvo paspaustas MIDImessage (noteON, 61, greitis); // įjunkite 60 pastabą su 127 greičio uždelsimu (200); // neapdorota mygtuko forma debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // 60 pastabos išjungimas (2); // neapdorota mygtuko išjungimo forma} lastState = currentState; currentState = digitalRead (buttonPin3); if (currentState == HIGH && lastState == LOW) {// jei ką tik paspaustas mygtukas MIDImessage (noteON, 62, greitis); // įjunkite 60 pastabą su 127 greičio uždelsimu (200); // neapdorota mygtuko forma debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // 60 pastabos išjungimas (2); // neapdorota mygtuko išjungimo forma} lastState = currentState; currentState = digitalRead (buttonPin4); if (currentState == HIGH && lastState == LOW) {// jei ką tik paspaustas mygtukas MIDImessage (noteON, 63, greitis); // įjunkite 60 pastabą su 127 greičio uždelsimu (200); // neapdorota mygtuko forma debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // 60 pastabos išjungimas (2); // neapdorota mygtuko išjungimo forma} lastState = currentState; } // siųsti MIDI pranešimą void MIDImessage (baitų komanda, baitų duomenys1, baitų duomenys2) {Serial.write (komanda); Serial.write (duomenys1); Serial.write (duomenys2); }
Aš vis dar labai naujokas rašydamas kodą apskritai ….. tie, kurie turi šiek tiek daugiau patirties, tikriausiai galėtų tai išvalyti …
3 žingsnis: supraskite beplaukį MIDI ir vidines MIDI kilpas
„Arduino“turi važiuoti per nuoseklųjį tiltą, pvz., „Hairless MIDI“, tada per vidinę MIDI kilpą, pvz., „Loopbe1“(arba „IAC“magistralę, skirtą „Mac“).
Pastaba: jūs negalite įkelti eskizo į „Arduino“, kol jis prijungtas prie beplaukio MIDI nuoseklaus tilto.
Pasirinkite savo „Arduino“MIDI be plaukų serijos prievadą ir „loopbe1“arba IAC magistralę MIDI išvestyje.
Pastaba: įsitikinkite, kad naudojant „loopbe1“neįjungtas nutildymas.
4 žingsnis: Prisijunkite prie savo DAW
Jei gaunate signalą į „Hairless MIDI“programą, kai paspaudžiate duonos lentos mygtuką (mirksi lemputės), turėtumėte turėti galimybę siųsti MIDI duomenis į DAW. Aš naudoju „Ableton“, bet bet koks DAW turėtų veikti. Įsitikinkite, kad jūsų vidinė MIDI kilpa (loopbe1) yra įjungta jūsų DAW nuostatose („Ableton“norite įjungti „takelį“). Tada pasirinkite vieną iš savo MIDI takelio įėjimų į MIDI kilpą (loopbe1), kaip parodyta aukščiau esančiame paveikslėlyje.
5 žingsnis: žaiskite
Mygtukai dabar veiks kaip ir bet kuris kitas MIDI valdiklis! Potenciometras pakeis į DAW siunčiamų natų greitį. Aukščiau esančiame (labai tamsiame…) vaizdo įraše rodomas veikiantis fortepijono garsas!