Grundläggande Arduino MIDI -kontroller: 5 steg
Grundläggande Arduino MIDI -kontroller: 5 steg
Anonim
Grundläggande Arduino MIDI -kontroller
Grundläggande Arduino MIDI -kontroller

Introduktion:

Jag är ny på att arbeta med Arduino men jag hoppas kunna utöka mina kunskaper genom att lära ut andra och få feedback. Detta är en mycket grundläggande MIDI -controller med 4 knappar och en potentiometer. Konturet för detta projekt ser ut så här:

1. Bygg ut brödbrädan

2. Ladda upp skissen till Arduino

3. Förstå Hairless MIDI och intern MIDI loop (loopbe1)

4. dirigera din MIDI till en DAW (Ableton)

Tillbehör

1 x Arduino Mega 2560

1 x brödbräda

1 x USB -kabel

1 x Potentiometer

4 x taktknappar

4 x 120 Ohm motstånd

14 x bygelkablar för brödbräda

Steg 1: Bygga ut brödbrädan

Bygga ut brödbrädan
Bygga ut brödbrädan
Bygga ut brödbrädan
Bygga ut brödbrädan

Anslut din brödbräda så att alla komponenter matchar bild 1 ovan. Varje knapp ska se ut som på bild 2. Knappens ingångar är 2, 3, 4 och 5 på Arduino och potentiometerns mittstift är ansluten till ANALOG -ingång A0.

Steg 2: Ladda upp skissen

Ladda upp skissen
Ladda upp skissen

Kopiera och klistra in koden nedan i Arduino IDE. Välj rätt tavla under "verktyg" och ladda upp skissen till Arduino.

byte noteON = 144; // note on commandbyte note; // storage for currently playing note int buttonPin1 = 2; int buttonPin2 = 3; int buttonPin3 = 4; int buttonPin4 = 5; int potPin = A0; boolean currentState = LOW; // stroage för aktuellt knappläge boolean lastState = LOW; // lagring för senaste knapptillståndets tomrumsinställning () {pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (buttonPin3, INPUT); pinMode (buttonPin4, INPUT); // denna gång kommer vi att ställa in stiftet som INPUT Serial.begin (9600); // initialisera Serial connection} void loop () {int PotVal = analogRead (potPin); bytehastighet = map (PotVal, 0, 1023, 0, 127); currentState = digitalRead (buttonPin1); if (currentState == HIGH && lastState == LOW) {MIDImessage (noteON, 60, velocity); // slå på not 60 med 127 hastighetsfördröjning (200); // rå form av knappnedslagning annars om (currentState == LÅG && lastState == HIGH) {MIDImessage (noteON, 60, 0); // stäng av not 60 fördröjning (2); // grov form av knappnedbrytning} lastState = currentState; currentState = digitalRead (buttonPin2); if (currentState == HIGH && lastState == LOW) {// om knappen just har tryckts på MIDImessage (noteON, 61, hastighet); // slå på not 60 med 127 hastighetsfördröjning (200); // rå form av knapp debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // stäng av anteckning 60 fördröjning (2); // rå form av knappnedbrytning} lastState = currentState; currentState = digitalRead (buttonPin3); if (currentState == HIGH && lastState == LOW) {// om knappen just har tryckts på MIDImessage (noteON, 62, hastighet); // slå på not 60 med 127 hastighetsfördröjning (200); // rå form av knapp debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // stäng av anteckning 60 fördröjning (2); // rå form av knappnedbrytning} lastState = currentState; currentState = digitalRead (buttonPin4); if (currentState == HIGH && lastState == LOW) {// om knappen just har tryckts på MIDImessage (noteON, 63, hastighet); // slå på not 60 med 127 hastighetsfördröjning (200); // rå form av knapp debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // stäng av not 60 fördröjning (2); // grov form av knappnedbrytning} lastState = currentState; } // skicka MIDI -meddelande void MIDImessage (byte -kommando, byte data1, byte data2) {Serial.write (kommando); Serial.write (data1); Serial.write (data2); }

Jag är fortfarande väldigt ny på att skriva kod i allmänhet ….. de med lite mer erfarenhet kan nog städa upp det här …

Steg 3: Förstå Hairless MIDI och Intern MIDI Loops

Förstå Hairless MIDI och Intern MIDI Loops
Förstå Hairless MIDI och Intern MIDI Loops
Förstå Hairless MIDI och Intern MIDI Loops
Förstå Hairless MIDI och Intern MIDI Loops
Förstå Hairless MIDI och Intern MIDI Loops
Förstå Hairless MIDI och Intern MIDI Loops

Arduino måste köra genom en seriell bro som Hairless MIDI sedan genom en intern MIDI -slinga som loopbe1 (eller IAC -buss för Mac).

Obs: du kan inte ladda upp en skiss till Arduino medan den är ansluten till den hårlösa MIDI -seriella bron.

Välj din Arduino i Hairless MIDI seriell port och loopbe1 eller IAC Bus i MIDI out.

Obs! Se till att ljudet inte är på när loopbe1 används.

Steg 4: Ansluter till din DAW

Ansluter till din DAW
Ansluter till din DAW

Om du får signal till Hairless MIDI -appen när du trycker på en knapp på panelen (lamporna blinkar) bör du kunna skicka MIDI -data till en DAW. Jag använde Ableton men alla DAW borde fungera. Se till att din interna MIDI -loop (loopbe1) är aktiverad i dina DAW -inställningar (i Ableton vill du att "spår" ska aktiveras). Välj sedan en av dina MIDI -spåringångar till MIDI -slingan (loopbe1) enligt bilden ovan.

Steg 5: Spela

Image
Image

Knapparna fungerar nu som alla andra MIDI -kontroller! Potentiometern ändrar hastigheten på de anteckningar som skickas till DAW. Videon (mycket mörk …) ovan visar ett flygelljud i aktion!

Rekommenderad: