Innholdsfortegnelse:
- Rekvisita
- Trinn 1: Bygg ut brødbrettet
- Trinn 2: Last opp skissen
- Trinn 3: Forstå hårløse MIDI- og interne MIDI -sløyfer
- Trinn 4: Koble til DAW
- Trinn 5: Spill
Video: Grunnleggende Arduino MIDI -kontroller: 5 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:22
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
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
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
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
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
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:
Grunnleggende Arduino Light Intensity Lamp !: 5 trinn
Grunnleggende Arduino Light Intensity Lamp!: Dagens krets er et morsomt lite Arduino -prosjekt for karantene! Denne kretsen fokuserer på to interessante materialer; stafetten SPDT & Fotoresistor. Videre er formålet med reléet å være en bryter i en krets elektronisk. Videre fotografere
Grensesnittknapp - Grunnleggende om Arduino: 3 trinn
Grensesnittknapp - Grunnleggende om Arduino: Trykknappen er en komponent som forbinder to punkter i en krets når du trykker på den. Når knappen er åpen (uten trykk) er det ingen forbindelse mellom trykknappens to ben, så pinnen er koblet til 5 volt (gjennom pull-up resi
Arduino Uno Tutorial #1 - Grunnleggende blinkprogram: 4 trinn
Arduino Uno Tutorial #1 - Basic Blink Program: Hei alle sammen! Jeg er glad for å publisere min første instruks! Denne ideen kom til meg da jeg hadde problemer med å få Arduino Uno til å fungere, så da jeg hadde noen vanskeligheter, vil jeg komme med en forklaring til alle her inne som at jeg ikke kjenner slim
6 år gammel og laget grunnleggende trafikklys med riper for Arduino: 3 trinn
6 år gammel Laget grunnleggende trafikklys med riper for Arduino: Sønnen min var allerede nysgjerrig på mine Arduino -prosjekter. Han spilte en stund med Snap Circuits, og LEGOHe begynte også å bygge noen Scratch -prosjekter. Det var bare et spørsmål om tid for oss å spille med Scratch for Arduino. Dette er vårt første prosjekt. Ob
Grunnleggende om Arduino TFT Interfacing: 10 trinn (med bilder)
Grunnleggende om Arduino TFT -grensesnitt: TFT -berøringsskjermer er det fantastiske grafiske grensesnittet som kan brukes med mikrokontrollere som Atmel, PIC, STM, ettersom det har et bredt fargespekter og god grafisk evne og en god kartlegging av piksler. I dag går vi til grensesnitt 2,4 tommers TFT