Innholdsfortegnelse:

Grunnleggende Arduino MIDI -kontroller: 5 trinn
Grunnleggende Arduino MIDI -kontroller: 5 trinn

Video: Grunnleggende Arduino MIDI -kontroller: 5 trinn

Video: Grunnleggende Arduino MIDI -kontroller: 5 trinn
Video: Вебинар по северным странам от KUKA cell4_production_ Svenska 2024, November
Anonim
Grunnleggende Arduino MIDI -kontroller
Grunnleggende Arduino MIDI -kontroller

Intro:

Jeg er ny på å jobbe med Arduino, men jeg håper å utvide kunnskapen min ved å lære andre og motta tilbakemeldinger. Dette er en helt grunnleggende MIDI -kontroller med 4 knapper og et potensiometer. Oversikten for dette prosjektet ser slik ut:

1. Bygg ut brødbrettet

2. Last opp skissen til Arduino

3. Forstå Hairless MIDI og intern MIDI loop (loopbe1)

4. rute din MIDI til en DAW (Ableton)

Rekvisita

1 x Arduino Mega 2560

1 x brødbrett

1 x USB -kabel

1 x potensiometer

4 x taktknapper

4 x 120Ohm motstander

14 x startkabler for brødbrett

Trinn 1: Bygg ut brødbrettet

Å bygge ut brødbrettet
Å bygge ut brødbrettet
Å bygge ut brødbrettet
Å bygge ut brødbrettet

Koble til brødbrettet slik at alle komponentene stemmer overens med bilde 1 ovenfor. Hver knapp skal se ut som på bilde 2. Knappinngangene er 2, 3, 4 og 5 på Arduino, og den midterste pinnen på potensiometeret er koblet til ANALOG -inngang A0.

Trinn 2: Last opp skissen

Laster opp skissen
Laster opp skissen

Kopier og lim inn koden nedenfor i Arduino IDE. Velg riktig brett under "verktøy" og last opp skissen til Arduino.

byte noteON = 144; // note on commandbyte note; // lagring for notat som spilles av for øyeblikket intPin1 = 2; int buttonPin2 = 3; int buttonPin3 = 4; int buttonPin4 = 5; int potPin = A0; boolsk currentState = LOW; // stroage for gjeldende knappestatus boolean lastState = LOW; // lagring for siste knappestatus ugyldig oppsett () {pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (buttonPin3, INPUT); pinMode (buttonPin4, INPUT); // denne gangen vil vi sette pinnen som INPUT Serial.begin (9600); // initialize Serial connection} void loop () {int PotVal = analogRead (potPin); bytehastighet = kart (PotVal, 0, 1023, 0, 127); currentState = digitalRead (buttonPin1); if (currentState == HIGH && lastState == LOW) {MIDImessage (noteON, 60, velocity); // slå på notat 60 med 127 hastighetsforsinkelse (200); // rå form for knappebrytning} annet hvis (currentState == LAV && lastState == HIGH) {MIDImessage (noteON, 60, 0); // slå av note 60 forsinkelse (2); // rå form for knappdebouncing} lastState = currentState; currentState = digitalRead (buttonPin2); if (currentState == HIGH && lastState == LOW) {// hvis knappen nettopp har blitt trykket på MIDImessage (noteON, 61, velocity); // slå på note 60 med 127 hastighetsforsinkelse (200); // rå form for knapp debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // slå av notat 60 forsinkelse (2); // rå form for knapp som debouncing} lastState = currentState; currentState = digitalRead (buttonPin3); if (currentState == HIGH && lastState == LOW) {// hvis knappen nettopp har blitt trykket på MIDImessage (noteON, 62, velocity); // slå på note 60 med 127 hastighetsforsinkelse (200); // rå form for knapp debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // slå av notat 60 forsinkelse (2); // rå form for knapp som debouncing} lastState = currentState; currentState = digitalRead (buttonPin4); if (currentState == HIGH && lastState == LOW) {// hvis knappen nettopp har blitt trykket på MIDImessage (noteON, 63, velocity); // slå på note 60 med 127 hastighetsforsinkelse (200); // rå form for knapp debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // slå av notat 60 forsinkelse (2); // rå form for knapp som debouncing} lastState = currentState; } // send MIDI melding void MIDImessage (byte kommando, byte data1, byte data2) {Serial.write (kommando); Serial.write (data1); Serial.write (data2); }

Jeg er fortsatt veldig ny på å skrive kode generelt … de med litt mer erfaring kan sannsynligvis rydde opp i dette …

Trinn 3: Forstå hårløse MIDI- og interne MIDI -sløyfer

Forstå hårløse MIDI og interne MIDI sløyfer
Forstå hårløse MIDI og interne MIDI sløyfer
Forstå hårløse MIDI og interne MIDI sløyfer
Forstå hårløse MIDI og interne MIDI sløyfer
Forstå hårløse MIDI og interne MIDI sløyfer
Forstå hårløse MIDI og interne MIDI sløyfer

Arduino må løpe gjennom en seriell bro som Hairless MIDI, deretter gjennom en intern MIDI -sløyfe som loopbe1 (eller IAC -buss for Mac).

Merk: du kan ikke laste opp en skisse til Arduino mens den er koblet til den hårløse MIDI serielle broen.

Velg din Arduino i Hairless MIDI seriell port og loopbe1 eller IAC Bus i MIDI ut.

Merk: sørg for at mute ikke er slått på når du bruker loopbe1.

Trinn 4: Koble til DAW

Koble til DAW
Koble til DAW

Hvis du får signal til Hairless MIDI -appen når du trykker på en knapp på brødbrettet (lampene blinker), bør du kunne sende MIDI -data til en DAW. Jeg brukte Ableton, men enhver DAW burde fungere. Sørg for at din interne MIDI -sløyfe (loopbe1) er aktivert i DAW -preferansene dine (i Ableton vil du at "spor" skal aktiveres). Velg deretter en av MIDI -sporinngangene til MIDI -løkken (loopbe1) som vist på bildet ovenfor.

Trinn 5: Spill

Image
Image

Knappene fungerer nå som alle andre MIDI -kontroller! Potensiometeret vil endre hastigheten på notatene som sendes til DAW. Videoen (veldig mørk …) ovenfor viser en flygellyd i aksjon!

Anbefalt: