Basiese Arduino MIDI -beheerder: 5 stappe
Basiese Arduino MIDI -beheerder: 5 stappe
Anonim
Basiese Arduino MIDI -beheerder
Basiese Arduino MIDI -beheerder

Inleiding:

Ek is nuut in die werk met Arduino, maar ek hoop om my kennis uit te brei deur ander te leer en terugvoer te ontvang. Dit is 'n baie basiese MIDI -kontroleerder met 4 knoppies en 'n potensiometer. Die uiteensetting van hierdie projek lyk so:

1. Bou die broodbord op

2. Laai die skets op na die Arduino

3. Verstaan haarlose MIDI en interne MIDI -lus (loopbe1)

4. lei u MIDI na 'n DAW (Ableton)

Voorrade

1 x Arduino Mega 2560

1 x broodbord

1 x USB -kabel

1 x Potensiometer

4 x Tact -knoppies

4 x 120 Ohm weerstande

14 x springkabels vir broodbord

Stap 1: Bou die broodbord uit

Die bou van die broodbord
Die bou van die broodbord
Die bou van die broodbord
Die bou van die broodbord

Koppel u broodbord sodat al die komponente ooreenstem met prent 1 hierbo. Elke knoppie moet dieselfde lyk as prent 2. Knoppie -insette is 2, 3, 4 en 5 op die Arduino en die middelste pen van die potensiometer is gekoppel aan ANALOG -ingang A0.

Stap 2: Laai die skets op

Laai die skets op
Laai die skets op

Kopieer en plak die onderstaande kode in die Arduino IDE. Kies die korrekte bord onder 'gereedskap' en laai die skets op na die Arduino.

byte noteON = 144; // noot op commandbyte noot; // stoorplek vir die tans speel noot int buttonPin1 = 2; int buttonPin2 = 3; int buttonPin3 = 4; int buttonPin4 = 5; int potPin = A0; boolean currentState = LOW; // stroage for current button state boolean lastState = LOW; // berging vir die opstel van die laaste knoppie toestand () {pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (buttonPin3, INPUT); pinMode (buttonPin4, INPUT); // hierdie keer stel ons die pen as INPUT Serial.begin (9600); // initialiseer Serial connection} void loop () {int PotVal = analogRead (potPin); bytesnelheid = kaart (PotVal, 0, 1023, 0, 127); currentState = digitalRead (buttonPin1); if (currentState == HIGH && lastState == LOW) {MIDImessage (noteON, 60, snelheid); // skakel noot 60 aan met 127 snelheidsvertraging (200); // ruwe vorm van knoppie wat weerkaats} anders as (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // skakel noot 60 vertraging af (2); // ru vorm van knoppie -ontbinding} lastState = currentState; currentState = digitalRead (buttonPin2); if (currentState == HIGH && lastState == LOW) {// as net op die knoppie gedruk is MIDImessage (noteON, 61, snelheid); // skakel noot 60 aan met 127 snelheidsvertraging (200); // ru vorm van knoppie debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // skakel noot 60 af vertraging (2); // ru vorm van knoppie wat ontbreek} lastState = currentState; currentState = digitalRead (buttonPin3); if (currentState == HIGH && lastState == LOW) {// as net op die knoppie gedruk is MIDImessage (noteON, 62, snelheid); // skakel noot 60 aan met 127 snelheidsvertraging (200); // ru vorm van knoppie debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // skakel noot 60 af vertraging (2); // ru vorm van knoppie wat ontbreek} lastState = currentState; currentState = digitalRead (buttonPin4); if (currentState == HIGH && lastState == LOW) {// as net op die knoppie gedruk is MIDImessage (noteON, 63, snelheid); // skakel noot 60 aan met 127 snelheidsvertraging (200); // ru vorm van knoppie debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // skakel noot 60 af vertraging (2); // ru vorm van knoppie wat ontbreek} lastState = currentState; } // stuur MIDI -boodskap leeg MIDImessage (byte -opdrag, byte -data1, byte -data2) {Serial.write (command); Serial.write (data1); Serial.write (data2); }

Ek is nog steeds baie nuut in die skryf van kode … in die algemeen kan diegene met 'n bietjie meer ervaring dit opruim …

Stap 3: Verstaan haarlose MIDI- en interne MIDI -lusse

Verstaan haarlose MIDI- en interne MIDI -lusse
Verstaan haarlose MIDI- en interne MIDI -lusse
Verstaan haarlose MIDI- en interne MIDI -lusse
Verstaan haarlose MIDI- en interne MIDI -lusse
Verstaan haarlose MIDI- en interne MIDI -lusse
Verstaan haarlose MIDI- en interne MIDI -lusse

Die Arduino moet deur 'n seriële brug soos Hairless MIDI loop, dan deur 'n interne MIDI -lus, soos loopbe1 (of IAC -bus vir Mac).

Let wel: u kan nie 'n skets na die Arduino oplaai terwyl dit aan die haarlose MIDI -seriële brug gekoppel is nie.

Kies u Arduino in die Hairless MIDI -seriële poort en loopbe1 of IAC Bus in die MIDI out.

Let wel: maak seker dat die demp nie aan is as u loopbe1 gebruik nie.

Stap 4: Koppel aan u DAW

Koppel aan u DAW
Koppel aan u DAW

As u 'n sein na die Hairless MIDI -app kry as u op 'n knoppie op die broodbord druk (ligte flikker), moet u MIDI -data na 'n DAW kan stuur. Ek het Ableton gebruik, maar enige DAW behoort te werk. Maak seker dat u interne MIDI -lus (loopbe1) aangeskakel is in u DAW -voorkeure (in Ableton wil u hê dat 'track' geaktiveer moet word). Kies dan een van u MIDI -spoorinvoer na die MIDI -lus (loopbe1) soos in die prent hierbo getoon.

Stap 5: Speel

Image
Image

Die knoppies werk nou soos enige ander MIDI -beheerder! Die potensiometer verander die snelheid van die note wat na die DAW gestuur word. Die (baie donker …) video hierbo toon 'n vleuelklavier in aksie!

Aanbeveel: