Kazalo:

Osnovni MIDI krmilnik Arduino: 5 korakov
Osnovni MIDI krmilnik Arduino: 5 korakov

Video: Osnovni MIDI krmilnik Arduino: 5 korakov

Video: Osnovni MIDI krmilnik Arduino: 5 korakov
Video: Использование BOSS FV-50 H громкости в качестве педали управления напряжением 2024, November
Anonim
Osnovni MIDI krmilnik Arduino
Osnovni MIDI krmilnik Arduino

Uvod:

Sem nov pri delu z Arduinom, vendar upam, da bom svoje znanje razširil s poučevanjem drugih in prejemanjem povratnih informacij. To je zelo preprost MIDI krmilnik s 4 gumbi in potenciometrom. Okvir tega projekta je videti tako:

1. Izdelajte osnovo

2. Naložite skico v Arduino

3. Razumejte MIDI brez dlake in notranjo zanko MIDI (loopbe1)

4. usmerite svoj MIDI v DAW (Ableton)

Zaloge

1 x Arduino Mega 2560

1 x deska za kruh

1 x USB kabel

1x potenciometer

4 x Tact gumbi

4 upori 120Ohm

14 x mostični kabli za ploščo

1. korak: Izdelava ploščice

Izdelava ploščice
Izdelava ploščice
Izdelava ploščice
Izdelava ploščice

Povežite svojo matično ploščo, tako da se vse komponente ujemajo s sliko 1 zgoraj. Vsak gumb mora izgledati enako kot slika 2. Vhodi gumbov so 2, 3, 4 in 5 na Arduinu, srednji zatič potenciometra pa je priključen na ANALOG vhod A0.

2. korak: nalaganje skice

Nalaganje skice
Nalaganje skice

Kopirajte in prilepite spodnjo kodo v Arduino IDE. Izberite pravo ploščo pod "orodja" in naložite skico v Arduino.

byte noteON = 144; // opomba na opombi commandbyte; // shramba za trenutno predvajano noto int buttonPin1 = 2; gumb intPin2 = 3; gumb intPin3 = 4; gumb intPin4 = 5; int potPin = A0; boolean currentState = LOW; // stroage za trenutno stanje gumba boolean lastState = LOW; // shramba za stanje zadnjega gumba void setup () {pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (buttonPin3, INPUT); pinMode (buttonPin4, INPUT); // tokrat bomo pin nastavili kot INPUT Serial.begin (9600); // inicializiramo serijsko povezavo} void loop () {int PotVal = analogRead (potPin); hitrost bajtov = zemljevid (PotVal, 0, 1023, 0, 127); currentState = digitalRead (buttonPin1); if (currentState == HIGH && lastState == LOW) {MIDImessage (noteON, 60, velocity); // vklopite opombo 60 s 127 zakasnitvijo hitrosti (200); // surova oblika odvajanja gumbov} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // zakasnitev izklopa opombe 60 (2); // surova oblika razveljavitve gumba} lastState = currentState; currentState = digitalRead (buttonPin2); if (currentState == HIGH && lastState == LOW) {// če je bil pravkar pritisnjen gumb MIDImessage (noteON, 61, velocity); // vklopite opombo 60 s 127 zakasnitvijo hitrosti (200); // surova oblika gumba debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // zakasnitev izklopa opombe 60 (2); // surova oblika debouncing gumba} lastState = currentState; currentState = digitalRead (buttonPin3); if (currentState == HIGH && lastState == LOW) {// če je bil gumb pravkar pritisnjen MIDImessage (noteON, 62, velocity); // vklopite opombo 60 s 127 zakasnitvijo hitrosti (200); // surova oblika gumba debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // zakasnitev izklopa opombe 60 (2); // surova oblika debouncing gumba} lastState = currentState; currentState = digitalRead (buttonPin4); if (currentState == HIGH && lastState == LOW) {// če je bil gumb pravkar pritisnjen MIDImessage (noteON, 63, velocity); // vklopite opombo 60 s 127 zakasnitvijo hitrosti (200); // surova oblika gumba debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // zakasnitev izklopa opombe 60 (2); // surova oblika debouncing gumba} lastState = currentState; } // pošlji sporočilo MIDI void MIDImessage (ukaz byte, bajt data1, bajt data2) {Serial.write (ukaz); Serial.write (data1); Serial.write (data2); }

Še vedno sem zelo nov pri pisanju kode na splošno ….. tisti z malo več izkušnjami bi to verjetno lahko očistili …

3. korak: Razumevanje brezdlakih MIDI in notranjih zank MIDI

Razumevanje brezdlakih MIDI in notranjih zank MIDI
Razumevanje brezdlakih MIDI in notranjih zank MIDI
Razumevanje brezdlakih MIDI in notranjih zank MIDI
Razumevanje brezdlakih MIDI in notranjih zank MIDI
Razumevanje brezdlakih MIDI in notranjih zank MIDI
Razumevanje brezdlakih MIDI in notranjih zank MIDI

Arduino mora teči skozi serijski most, kot je Hairless MIDI, nato pa skozi notranjo zanko MIDI, kot je loopbe1 (ali vodilo IAC za Mac).

Opomba: skice ne morete naložiti na Arduino, ko je povezan z brezdlakim serijskim mostom MIDI.

Izberite svoj Arduino v serijskih vratih MIDI brez dlake in v izhodu MIDI loopbe1 ali IAC Bus.

Opomba: pri uporabi loopbe1 se prepričajte, da izklop zvoka ni vklopljen.

4. korak: Povežite se z DAW

Povezovanje z vašim DAW
Povezovanje z vašim DAW

Če dobite signal v aplikacijo Hairless MIDI, ko pritisnete gumb na plošči (lučke bodo utripale), bi morali poslati podatke MIDI v DAW. Uporabil sem Ableton, vendar bi moral delovati vsak DAW. Prepričajte se, da je vaša notranja zanka MIDI (loopbe1) omogočena v vaših nastavitvah DAW (v Abletonu želite, da je omogočena "sled"). Nato izberite enega od vhodov MIDI sledi v zanko MIDI (loopbe1), kot je prikazano na zgornji sliki.

5. korak: Igrajte se

Image
Image

Gumbi bodo zdaj delovali kot kateri koli drug MIDI krmilnik! Potenciometer bo spremenil hitrost zapiskov, poslanih v DAW. Zgornji (zelo temen …) videoposnetek prikazuje zvok klavirja v akciji!

Priporočena: