Inhoudsopgave:

Basis Arduino MIDI-controller: 5 stappen
Basis Arduino MIDI-controller: 5 stappen

Video: Basis Arduino MIDI-controller: 5 stappen

Video: Basis Arduino MIDI-controller: 5 stappen
Video: Драм-секвенсор Arduino: 8 дорожек, 16 шагов на такт, 8 тактов на паттерн 2024, November
Anonim
Basis Arduino MIDI-controller
Basis Arduino MIDI-controller

Inleiding:

Ik ben nieuw in het werken met Arduino, maar ik hoop mijn kennis uit te breiden door anderen les te geven en feedback te ontvangen. Dit is een zeer eenvoudige MIDI-controller met 4 knoppen en een potentiometer. De opzet van dit project ziet er als volgt uit:

1. Bouw het breadboard uit

2. Upload de schets naar de Arduino

3. Begrijp haarloze MIDI en interne MIDI-lus (loopbe1)

4. route je MIDI naar een DAW (Ableton)

Benodigdheden

1 x Arduino Mega 2560

1 x Broodplank

1 x USB-kabel

1 x potentiometer

4 x Tact-knoppen

4 x 120 Ohm weerstanden

14 x startkabels voor breadboard

Stap 1: Het breadboard uitbouwen

De Breadboard uitbouwen
De Breadboard uitbouwen
De Breadboard uitbouwen
De Breadboard uitbouwen

Sluit uw breadboard aan zodat alle componenten overeenkomen met afbeelding 1 hierboven. Elke knop moet er hetzelfde uitzien als afbeelding 2. Knopingangen zijn 2, 3, 4 en 5 op de Arduino en de middelste pin van de potentiometer is verbonden met ANALOGE ingang A0.

Stap 2: De schets uploaden

De schets uploaden
De schets uploaden

Kopieer en plak de onderstaande code in de Arduino IDE. Selecteer het juiste bord onder "tools" en upload de schets naar de Arduino.

byte noteON = 144;//note on commandbyte note;//opslag voor momenteel spelende noot int buttonPin1 = 2; int-knopPin2 = 3; int-knopPin3 = 4; int-knopPin4 = 5; int potPin = A0; boolean currentState = LAAG;//stroage voor huidige knopstatus boolean lastState = LAAG;//opslag voor laatste knopstatus void setup () {pinMode (buttonPin1, INPUT); pinMode (knopPin2, INPUT); pinMode (knopPin3, INPUT); pinMode (knopPin4, INPUT); // deze keer zullen we de pin instellen als INPUT Serial.begin (9600);//initialiseer seriële verbinding} void loop () {int PotVal = analogRead (potPin); bytesnelheid = kaart (PotVal, 0, 1023, 0, 127); currentState = digitalRead (buttonPin1); if (currentState == HIGH && lastState == LOW) {MIMImessage (noteON, 60, velocity);//zet noot 60 aan met 127 snelheidsvertraging (200);//ruwe vorm van knopdebouncen} else if(currentState == LAAG && lastState == HOOG) {MIMImessage (noteON, 60, 0);// zet noot 60 uit vertraging (2);//ruwe vorm van knop debouncing} lastState = huidigeState; currentState = digitalRead (buttonPin2); if (currentState == HIGH && lastState == LOW){//if-knop is zojuist ingedrukt MIDImessage (noteON, 61, velocity);// zet noot 60 aan met 127 snelheidsvertraging (200);//ruwe vorm van knop debouncing } else if(currentState == LOW && lastState == HIGH){ MIDImessage (noteON, 60, 0);// zet noot 60 uit vertraging (2);//ruwe vorm van knop debouncing } lastState = currentState; currentState = digitalRead (buttonPin3); if (currentState == HIGH && lastState == LOW){//if-knop is zojuist ingedrukt MIDImessage (noteON, 62, velocity);// zet noot 60 aan met 127 snelheidsvertraging (200);//ruwe vorm van knop debouncing } else if(currentState == LOW && lastState == HIGH){ MIDImessage (noteON, 60, 0);// zet noot 60 uit vertraging (2);//ruwe vorm van knop debouncing } lastState = currentState; currentState = digitalRead (buttonPin4); if (currentState == HIGH && lastState == LOW){//if-knop is zojuist ingedrukt MIDImessage (noteON, 63, velocity);// zet noot 60 aan met 127 snelheidsvertraging (200);//ruwe vorm van knop debouncing } else if(currentState == LOW && lastState == HIGH){ MIDImessage (noteON, 60, 0);// zet noot 60 uit vertraging (2);//ruwe vorm van knop debouncing } lastState = currentState; } // stuur MIDI-bericht ongeldig MIDI-bericht (byte-opdracht, byte data1, byte data2) { Serial.write (opdracht); Serieel.schrijven(data1); Serieel.schrijven(data2); }

Ik ben nog steeds erg nieuw in het schrijven van code in het algemeen … degenen met wat meer ervaring kunnen dit waarschijnlijk opruimen …

Stap 3: Haarloze MIDI en interne MIDI-loops begrijpen

Haarloze MIDI en interne MIDI-loops begrijpen
Haarloze MIDI en interne MIDI-loops begrijpen
Haarloze MIDI en interne MIDI-loops begrijpen
Haarloze MIDI en interne MIDI-loops begrijpen
Haarloze MIDI en interne MIDI-loops begrijpen
Haarloze MIDI en interne MIDI-loops begrijpen

De Arduino moet door een seriële brug zoals Hairless MIDI lopen en vervolgens door een interne MIDI-lus zoals loopbe1 (of IAC-bus voor Mac).

Opmerking: je kunt geen schets uploaden naar de Arduino terwijl deze is aangesloten op de haarloze MIDI-seriële brug.

Selecteer je Arduino in de Hairless MIDI seriële poort en loopbe1 of IAC Bus in de MIDI out.

Opmerking: zorg ervoor dat dempen niet is ingeschakeld bij gebruik van loopbe1.

Stap 4: Verbinding maken met uw DAW

Verbinding maken met uw DAW
Verbinding maken met uw DAW

Als u een signaal naar de Hairless MIDI-app ontvangt wanneer u op een knop op het breadboard drukt (lampjes knipperen), zou u MIDI-gegevens naar een DAW moeten kunnen verzenden. Ik heb Ableton gebruikt, maar elke DAW zou moeten werken. Zorg ervoor dat uw interne MIDI-loop (loopbe1) is ingeschakeld in uw DAW-voorkeuren (in Ableton wilt u dat "track" is ingeschakeld). Selecteer vervolgens een van uw MIDI-trackingangen voor de MIDI-loop (loopbe1) zoals weergegeven in de bovenstaande afbeelding.

Stap 5: Speel

Image
Image

De knoppen werken nu zoals elke andere MIDI-controller! De potentiometer verandert de snelheid van de noten die naar de DAW worden verzonden. De (zeer donkere…) video hierboven laat een vleugelgeluid in actie zien!

Aanbevolen: