Sommario:

Controller MIDI Arduino di base: 5 passaggi
Controller MIDI Arduino di base: 5 passaggi

Video: Controller MIDI Arduino di base: 5 passaggi

Video: Controller MIDI Arduino di base: 5 passaggi
Video: World’s SMALLEST MIDI Controller | Made with Teensy & Arduino 2024, Novembre
Anonim
Controller MIDI Arduino di base
Controller MIDI Arduino di base

Introduzione:

Sono nuovo a lavorare con Arduino ma spero di espandere le mie conoscenze insegnando ad altri e ricevendo feedback. Questo è un controller MIDI molto semplice con 4 pulsanti e un potenziometro. Lo schema di questo progetto è simile a questo:

1. Costruisci la breadboard

2. Carica lo schizzo su Arduino

3. Comprendere il MIDI Hairless e il loop MIDI interno (loopbe1)

4. indirizza il tuo MIDI a una DAW (Ableton)

Forniture

1 x Arduino Mega 2560

1 x tagliere per pane

1 x cavo USB

1 x potenziometro

4 x pulsanti tattili

4 x 120 Ohm resistori

14 x cavi jumper per breadboard

Passaggio 1: costruire la breadboard

Costruire il tagliere
Costruire il tagliere
Costruire il tagliere
Costruire il tagliere

Collega la tua breadboard in modo che tutti i componenti corrispondano all'immagine 1 sopra. Ogni pulsante dovrebbe avere lo stesso aspetto dell'immagine 2. Gli ingressi dei pulsanti sono 2, 3, 4 e 5 sull'Arduino e il pin centrale del potenziometro è collegato all'ingresso ANALOGICO A0.

Passaggio 2: caricamento dello schizzo

Caricamento dello schizzo
Caricamento dello schizzo

Copia e incolla il codice seguente nell'IDE di Arduino. Seleziona la scheda corretta in "strumenti" e carica lo schizzo su Arduino.

byte noteON = 144;//note su commandbyte note;//memoria per la nota attualmente in riproduzione int buttonPin1 = 2; int pulsantePin2 = 3; int pulsantePin3 = 4; int pulsantePin4 = 5; int potPin = A0; boolean currentState = LOW;//stroage per lo stato attuale del pulsante boolean lastState = LOW;//storage per lo stato dell'ultimo pulsante void setup(){ pinMode(buttonPin1, INPUT); pinMode(pulsantePin2, INGRESSO); pinMode(buttonPin3, INPUT); pinMode(buttonPin4, INPUT); //questa volta imposteremo il pin come INPUT Serial.begin(9600);//inizializza la connessione seriale } void loop(){ int PotVal = analogRead(potPin); velocità in byte = map(PotVal, 0, 1023, 0, 127); statocorrente = digitalRead(buttonPin1); if (currentState == HIGH && lastState == LOW){ MIDImessage(noteON, 60, velocity); // attiva la nota 60 con 127 velocity delay (200); // forma grezza di antirimbalzo del pulsante } else if (currentState == LOW && lastState == HIGH){ MIDImessage(noteON, 60, 0);//disattiva il ritardo della nota 60(2);//forma grezza di antirimbalzo del pulsante } lastState = currentState; statocorrente = digitalRead(buttonPin2); if (currentState == HIGH && lastState == LOW){//if è stato appena premuto il pulsante MIDImessage(noteON, 61, velocity); // attiva la nota 60 con 127 velocity delay (200); // forma grezza del pulsante antirimbalzo } else if(currentState == LOW && lastState == HIGH){ MIDImessage(noteON, 60, 0);//disattiva il ritardo della nota 60(2);//forma grezza di antirimbalzo del pulsante } lastState = currentState; statocorrente = digitalRead(buttonPin3); if (currentState == HIGH && lastState == LOW){//if è stato appena premuto il pulsante MIDImessage(noteON, 62, velocity); // attiva la nota 60 con 127 velocity delay (200); // forma grezza del pulsante antirimbalzo } else if(currentState == LOW && lastState == HIGH){ MIDImessage(noteON, 60, 0);//disattiva il ritardo della nota 60(2);//grezza forma di antirimbalzo del pulsante } lastState = currentState; statocorrente = digitalRead(buttonPin4); if (currentState == HIGH && lastState == LOW){//if è stato appena premuto il pulsante MIDImessage(noteON, 63, velocity); // attiva la nota 60 con 127 velocity delay (200); // forma grezza del pulsante antirimbalzo } else if(currentState == LOW && lastState == HIGH){ MIDImessage(noteON, 60, 0);//disattiva il ritardo della nota 60(2);//forma grezza di antirimbalzo del pulsante } lastState = currentState; } //invia messaggio MIDI void MIDImessage(byte comando, byte dati1, byte dati2) { Serial.write(comando); Serial.write(data1); Serial.write(data2); }

Sono ancora molto nuovo nello scrivere codice in generale….. quelli con un po' più di esperienza potrebbero probabilmente ripulire questo…

Passaggio 3: comprensione del MIDI glabro e dei loop MIDI interni

Capire il MIDI Hairless e i loop MIDI interni
Capire il MIDI Hairless e i loop MIDI interni
Comprensione del MIDI Hairless e dei loop MIDI interni
Comprensione del MIDI Hairless e dei loop MIDI interni
Comprensione del MIDI Hairless e dei loop MIDI interni
Comprensione del MIDI Hairless e dei loop MIDI interni

L'Arduino deve passare attraverso un bridge seriale come Hairless MIDI, quindi attraverso un loop MIDI interno come loopbe1 (o bus IAC per Mac).

Nota: non è possibile caricare uno sketch su Arduino mentre è connesso al bridge seriale MIDI hairless.

Seleziona il tuo Arduino nella porta seriale MIDI Hairless e loopbe1 o IAC Bus nell'uscita MIDI.

Nota: assicurati che l'audio non sia attivo quando usi loopbe1.

Passaggio 4: connessione alla tua DAW

Connessione alla tua DAW
Connessione alla tua DAW

Se ricevi un segnale all'app Hairless MIDI quando premi un pulsante sulla breadboard (le spie lampeggeranno) dovresti essere in grado di inviare dati MIDI a una DAW. Ho usato Ableton ma qualsiasi DAW dovrebbe funzionare. Assicurati che il tuo loop MIDI interno (loopbe1) sia abilitato nelle tue preferenze DAW (in Ableton vuoi che la "traccia" sia abilitata). Quindi, seleziona uno degli ingressi della tua traccia MIDI nel loop MIDI (loopbe1) come mostrato nell'immagine sopra.

Passaggio 5: gioca

Image
Image

I pulsanti ora funzioneranno come qualsiasi altro controller MIDI! Il potenziometro cambierà la velocità delle note inviate alla DAW. Il video (molto scuro…) qui sopra mostra il suono di un pianoforte a coda in azione!

Consigliato: