Tartalomjegyzék:

Alap Arduino MIDI vezérlő: 5 lépés
Alap Arduino MIDI vezérlő: 5 lépés

Videó: Alap Arduino MIDI vezérlő: 5 lépés

Videó: Alap Arduino MIDI vezérlő: 5 lépés
Videó: Using BTS7960 BTN8982TA PWM H Bridge motor controller module with Arduino library 2024, November
Anonim
Alapvető Arduino MIDI vezérlő
Alapvető Arduino MIDI vezérlő

Bevezető:

Új vagyok az Arduino -val való együttműködésben, de remélem, hogy bővíthetem tudásomat mások tanításával és visszajelzésekkel. Ez egy nagyon egyszerű MIDI vezérlő 4 gombbal és potenciométerrel. A projekt vázlata így néz ki:

1. Építse ki a kenyértáblát

2. Töltse fel a vázlatot az Arduino -ba

3. Ismerje meg a szőrtelen MIDI -t és a belső MIDI -hurkot (loopbe1)

4. irányítsa a MIDI -t DAW -ra (Ableton)

Kellékek

1 db Arduino Mega 2560

1 x kenyértábla

1 x USB kábel

1 x potenciométer

4 x tapintó gomb

4 x 120 Ohm ellenállás

14 x jumper kábel a kenyérlaphoz

1. lépés: A kenyértábla kiépítése

A kenyértábla építése
A kenyértábla építése
A kenyértábla építése
A kenyértábla építése

Csatlakoztassa a kenyértáblát, hogy minden alkatrész megfeleljen a fenti 1. képnek. Minden gombnak ugyanúgy kell kinéznie, mint a 2. képnek. A gombbemenetek 2, 3, 4 és 5 az Arduino -n, és a potenciométer középső csapja az ANALOG A0 bemenethez van csatlakoztatva.

2. lépés: A vázlat feltöltése

A vázlat feltöltése
A vázlat feltöltése

Másolja ki és illessze be az alábbi kódot az Arduino IDE -be. Válassza ki a megfelelő táblát az "eszközök" alatt, és töltse fel a vázlatot az Arduino -ba.

byte noteON = 144; // megjegyzés a commandbyte jegyzeten; // tárhely az éppen játszott hanghoz int gombPin1 = 2; int gombPin2 = 3; int gombPin3 = 4; int gombPin4 = 5; int potPin = A0; boolean currentState = LOW; // stroke az aktuális gombállapothoz boolean lastState = LOW; // tároló az utolsó gomb állapotához void setup () {pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (buttonPin3, INPUT); pinMode (buttonPin4, INPUT); // ezúttal INPUT Serial.begin (9600); // inicializáljuk a soros kapcsolatot} void loop () {int PotVal = analogRead (potPin); bájt sebesség = térkép (PotVal, 0, 1023, 0, 127); currentState = digitalRead (buttonPin1); if (currentState == HIGH && lastState == LOW) {MIDImessage (noteON, 60, velocity); // kapcsolja be a 60. jegyzetet 127 sebességkésleltetéssel (200); // a gomb lekapcsolásának nyers formája} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // a 60. jegyzet kikapcsolása késleltetés (2); // a gombok visszavonásának nyers formája} lastState = currentState; currentState = digitalRead (buttonPin2); if (currentState == HIGH && lastState == LOW) {// ha a gombot éppen megnyomták MIDImessage (noteON, 61, sebesség); // kapcsolja be a 60. jegyzetet 127 sebességkésleltetéssel (200); // nyers gombforma debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // kapcsolja ki a 60 -as jegyzetet a késleltetésből (2); // a gombok visszavonásának nyers formája} lastState = currentState; currentState = digitalRead (buttonPin3); if (currentState == HIGH && lastState == LOW) {// ha a gombot éppen megnyomták MIDImessage (noteON, 62, sebesség); // kapcsolja be a 60. jegyzetet 127 sebességkésleltetéssel (200); // nyers gombforma debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // kapcsolja ki a 60. jegyzet kikapcsolási késleltetését (2); // a gombok visszavonásának nyers formája} lastState = currentState; currentState = digitalRead (buttonPin4); if (currentState == HIGH && lastState == LOW) {// ha a gombot éppen megnyomták MIDImessage (noteON, 63, sebesség); // kapcsolja be a 60. jegyzetet 127 sebességkésleltetéssel (200); // nyers gombforma debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // kapcsolja ki a 60 -as jegyzetet a késleltetésből (2); // a gombok visszavonásának nyers formája} lastState = currentState; } // MIDI üzenet küldése void MIDImessage (bájtparancs, bájtadatok1, bájtadatok2) {Serial.write (parancs); Serial.write (adat1); Soros.írás (adat2); }

Még mindig nagyon kezdő vagyok a kódírásban általában….. akik kicsit több tapasztalattal rendelkeznek, valószínűleg megtisztíthatják ezt…

3. lépés: A szőrtelen MIDI és a belső MIDI hurkok megértése

A szőrtelen MIDI és a belső MIDI hurkok megértése
A szőrtelen MIDI és a belső MIDI hurkok megértése
A szőrtelen MIDI és a belső MIDI hurkok megértése
A szőrtelen MIDI és a belső MIDI hurkok megértése
A szőrtelen MIDI és a belső MIDI hurkok megértése
A szőrtelen MIDI és a belső MIDI hurkok megértése

Az Arduino -nak át kell futnia egy soros hídon, mint például a Hairless MIDI, majd egy belső MIDI -hurkon, például a loopbe1 -en (vagy az IAC buszon Mac -en).

Megjegyzés: nem tölthet fel vázlatot az Arduino -ba, amíg a szőrtelen MIDI soros hídhoz van csatlakoztatva.

Válassza ki az Arduino -t a szőrtelen MIDI soros portban, és a loopbe1 vagy IAC buszt a MIDI kimenetben.

Megjegyzés: győződjön meg arról, hogy a némítás nincs bekapcsolva a loopbe1 használatakor.

4. lépés: Csatlakozás a DAW -hoz

Csatlakozás a DAW -hoz
Csatlakozás a DAW -hoz

Ha jelzést kap a Hairless MIDI alkalmazáshoz, amikor megnyom egy gombot a kenyértáblán (a fények villogni kezdenek), akkor képesnek kell lennie arra, hogy MIDI adatokat küldjön egy DAW -nak. Abletont használtam, de minden DAW -nak működnie kell. Győződjön meg arról, hogy a belső MIDI -hurok (loopbe1) engedélyezve van a DAW -beállításokban (az Ableton -ban szeretné, hogy a "track" engedélyezve legyen). Ezután válassza ki az egyik MIDI sáv bemenetét a MIDI hurokba (loopbe1), a fenti képen látható módon.

5. lépés: Játssz

Image
Image

A gombok most úgy fognak működni, mint bármely más MIDI vezérlő! A potenciométer megváltoztatja a DAW -hoz küldött jegyzetek sebességét. A fenti (nagyon sötét…) videó egy zongorahangot mutat működés közben!

Ajánlott: