Sisällysluettelo:

Perus Arduino MIDI -ohjain: 5 vaihetta
Perus Arduino MIDI -ohjain: 5 vaihetta

Video: Perus Arduino MIDI -ohjain: 5 vaihetta

Video: Perus Arduino MIDI -ohjain: 5 vaihetta
Video: Готовый служебный модуль MIDI Thru 2024, Heinäkuu
Anonim
Perus Arduino MIDI -ohjain
Perus Arduino MIDI -ohjain

Esittely:

Olen uusi työskennellessäni Arduinon kanssa, mutta toivon voivani laajentaa tietämystäni opettamalla muita ja vastaanottamalla palautetta. Tämä on hyvin yksinkertainen MIDI -ohjain, jossa on 4 painiketta ja potentiometri. Tämän projektin luonnos näyttää tältä:

1. Rakenna leipälauta

2. Lataa luonnos Arduinolle

3. Ymmärrä karvaton MIDI ja sisäinen MIDI -silmukka (loopbe1)

4. reititä MIDI DAW: hen (Ableton)

Tarvikkeet

1 x Arduino Mega 2560

1 x leipälauta

1 x USB -kaapeli

1 x potentiometri

4 x kosketuspainiketta

4 x 120 ohmin vastukset

14 x hyppyjohtoa leipälevylle

Vaihe 1: Leipälevyn rakentaminen

Leipälaudan rakentaminen
Leipälaudan rakentaminen
Leipälaudan rakentaminen
Leipälaudan rakentaminen

Liitä leipälauta niin, että kaikki komponentit vastaavat yllä olevaa kuvaa 1. Jokaisen painikkeen pitäisi näyttää samalta kuin kuva 2. Painikkeiden tulot ovat 2, 3, 4 ja 5 Arduinossa ja potentiometrin keskitappi on kytketty ANALOG -tuloon A0.

Vaihe 2: Luonnoksen lataaminen

Luonnoksen lataaminen
Luonnoksen lataaminen

Kopioi ja liitä alla oleva koodi Arduino IDE: hen. Valitse oikea taulu "työkalut" -kohdasta ja lataa luonnos Arduinolle.

tavu noteON = 144; // huomautus komentotiedon muistiinpanossa; // tallennustila tällä hetkellä toistettavalle muistiinpanolle int -painike Pin1 = 2; int -painikePin2 = 3; int -painikePin3 = 4; int -painikePin4 = 5; int potPin = A0; boolean currentState = LOW; // viiva nykyisen painikkeen tilasta boolean lastState = LOW; // tallennustila viimeisen painikkeen tilan void setup () {pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (buttonPin3, INPUT); pinMode (buttonPin4, INPUT); // tällä kertaa asetamme nastan INPUT Serial.begin (9600); // alustaa sarjayhteys} void loop () {int PotVal = analogRead (potPin); tavun nopeus = kartta (PotVal, 0, 1023, 0, 127); currentState = digitalRead (buttonPin1); if (currentState == HIGH && lastState == LOW) {MIDImessage (noteON, 60, velocity); // kytke nuotti 60 päälle 127 nopeuden viiveellä (200); // painikkeiden poistamisen karkea muoto} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // sammuta muistiinpanon 60 viive (2); // painikkeiden poistamisen karkea muoto} lastState = currentState; currentState = digitalRead (buttonPin2); if (currentState == HIGH && lastState == LOW) {// jos painiketta on juuri painettu MIDImessage (huomautus, 61, nopeus); // kytke muistiinpano 60 päälle 127 nopeuden viiveellä (200); // painikkeen raaka muoto debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // sammuta huomautus 60 pois viiveestä (2); // painikkeen poistamisen karkea muoto} lastState = currentState; currentState = digitalRead (buttonPin3); if (currentState == HIGH && lastState == LOW) {// jos painiketta on juuri painettu MIDImessage (huomautus, 62, nopeus); // kytke muistiinpano 60 päälle 127 nopeuden viiveellä (200); // painikkeen raaka muoto debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // sammuta huomautus 60 pois viiveestä (2); // painikkeen poistamisen karkea muoto} lastState = currentState; currentState = digitalRead (buttonPin4); if (currentState == HIGH && lastState == LOW) {// jos painiketta on juuri painettu MIDImessage (huomautus, 63, nopeus); // kytke nuotti 60 päälle 127 nopeuden viiveellä (200); // painikkeen raaka muoto debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // sammuta huomautus 60 pois viiveestä (2); // painikkeen poistamisen karkea muoto} lastState = currentState; } // lähetä MIDI -viesti void MIDImessage (tavukomento, tavu data1, tavu data2) {Serial.write (komento); Serial.write (data1); Serial.write (data2); }

Olen vielä hyvin uusi koodin kirjoittamisessa yleensä….. ne, joilla on hieman enemmän kokemusta, voivat todennäköisesti puhdistaa tämän…

Vaihe 3: Karvattoman MIDI: n ja sisäisten MIDI -silmukoiden ymmärtäminen

Karvattoman MIDI: n ja sisäisten MIDI -silmukoiden ymmärtäminen
Karvattoman MIDI: n ja sisäisten MIDI -silmukoiden ymmärtäminen
Karvattoman MIDI: n ja sisäisten MIDI -silmukoiden ymmärtäminen
Karvattoman MIDI: n ja sisäisten MIDI -silmukoiden ymmärtäminen
Karvattoman MIDI: n ja sisäisten MIDI -silmukoiden ymmärtäminen
Karvattoman MIDI: n ja sisäisten MIDI -silmukoiden ymmärtäminen

Arduinon on ajettava sarjasillan, kuten karvattoman MIDI: n, ja sitten sisäisen MIDI -silmukan, kuten loopbe1 (tai IAC -väylä Macille), läpi.

Huomautus: et voi ladata luonnosta Arduinolle, kun se on kytketty karvattomaan MIDI -sarjasiltaan.

Valitse Arduino karvattomasta MIDI -sarjaportista ja loopbe1 tai IAC -väylä MIDI -ulostulosta.

Huomautus: varmista, että mykistys ei ole käytössä, kun käytät loopbe1: tä.

Vaihe 4: Yhdistäminen DAW -laitteeseen

Yhdistäminen DAW -laitteeseesi
Yhdistäminen DAW -laitteeseesi

Jos saat signaalin Karvattomaan MIDI -sovellukseen, kun painat leipälevyn painiketta (valot vilkkuvat), sinun pitäisi pystyä lähettämään MIDI -tietoja DAW: lle. Käytin Abletonia, mutta minkä tahansa DAW: n pitäisi toimia. Varmista, että sisäinen MIDI -silmukka (loopbe1) on otettu käyttöön DAW -asetuksissasi (haluat Abletonissa, että "track" otetaan käyttöön). Valitse seuraavaksi yksi MIDI -raidatuloistasi MIDI -silmukkaan (loopbe1) yllä olevan kuvan mukaisesti.

Vaihe 5: Pelaa

Image
Image

Painikkeet toimivat nyt kuten mikä tahansa muu MIDI -ohjain! Potentiometri muuttaa DAW: lle lähetettävien nuottien nopeutta. Yllä oleva (erittäin tumma…) video näyttää flyygeliäänen toiminnassa!

Suositeltava: