Inhoudsopgave:
- Benodigdheden
- Stap 1: Het breadboard uitbouwen
- Stap 2: De schets uploaden
- Stap 3: Haarloze MIDI en interne MIDI-loops begrijpen
- Stap 4: Verbinding maken met uw DAW
- Stap 5: Speel
Video: Basis Arduino MIDI-controller: 5 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
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
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
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
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
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
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:
Tiny H-Bridge-stuurprogramma's - Basis: 6 stappen (met afbeeldingen)
Tiny H-Bridge-stuurprogramma's | Basics: Hallo en welkom terug bij een andere Instructable! In de vorige heb ik je laten zien hoe ik coils in KiCad heb gemaakt met behulp van een python-script. Daarna heb ik een paar variaties van spoelen gemaakt en getest om te zien welke het beste werkt. Mijn doel is om de enorme
Python-introductie - Katsuhiko Matsuda & Edwin Cijo - Basis: 7 stappen
Python Introductie - Katsuhiko Matsuda & Edwin Cijo - Basis: Hallo, we zijn 2 studenten in MYP 2. We willen je de basis leren van het coderen van Python. Het werd eind jaren 80 gemaakt door Guido van Rossum in Nederland. Het werd gemaakt als een opvolger van de ABC-taal. Zijn naam is "Python" omdat wanneer
SmartHome draadloze communicatie: de extreme basis van MQTT: 3 stappen
SmartHome draadloze communicatie: de extreme basis van MQTT: MQTT basis: **Ik ga een serie domotica doen, ik zal de stappen doorlopen die ik heb genomen om alles te leren wat ik in de toekomst heb gedaan. Deze Instructable is de basis voor het instellen van MQTT voor gebruik in mijn toekomstige Instructables. echter
Terug naar de basis: solderen voor kinderen: 6 stappen (met afbeeldingen)
Back to Basics: Solderen voor kinderen: Of je nu een robot bouwt of met Arduino werkt, vorm "hands-on" elektronica tot prototyping van een projectidee, weten hoe te solderen komt van pas. solderen is een essentiële vaardigheid om te leren als iemand echt van elektr
Super geheime basis: 5 stappen
Supergeheime basis: het is altijd belangrijk om een geheime basis te hebben, vooral in multiplayer. Bases zijn nodig voor het verbergen van bezittingen en het verbergen van mobs en andere spelers