Taula de continguts:

Controlador bàsic Arduino MIDI: 5 passos
Controlador bàsic Arduino MIDI: 5 passos

Vídeo: Controlador bàsic Arduino MIDI: 5 passos

Vídeo: Controlador bàsic Arduino MIDI: 5 passos
Vídeo: #2 Como construir um controlador MIDI DIY: Fazendo Música com Arduino 2024, De novembre
Anonim
Controlador bàsic Arduino MIDI
Controlador bàsic Arduino MIDI

Introducció:

Sóc nou a treballar amb Arduino, però espero ampliar els meus coneixements ensenyant als altres i rebent comentaris. Es tracta d’un controlador MIDI molt bàsic amb 4 botons i un potenciòmetre. L’esquema d’aquest projecte té aquest aspecte:

1. Construïu la taula de treball

2. Pengeu l'esbós a l'Arduino

3. Comprendre el bucle MIDI sense pèl i el bucle MIDI intern (loopbe1)

4. encaminar el MIDI a un DAW (Ableton)

Subministraments

1 x Arduino Mega 2560

1 x Taula de pa

1 x cable USB

1 x Potenciómetre

4 botons tàctils

Resistències de 4 x 120 Ohm

14 cables de pont per a taulers

Pas 1: crear la taula de pa

Construint la taula de pa
Construint la taula de pa
Construint la taula de pa
Construint la taula de pa

Connecteu el tauler de verificació perquè tots els components coincideixin amb la imatge 1 anterior. Cada botó hauria de tenir el mateix aspecte que la imatge 2. Les entrades de botó són 2, 3, 4 i 5 a l'Arduino i el pin central del potenciòmetre està connectat a l'entrada ANALOG A0.

Pas 2: penjar l'esbós

Carregant l’esbós
Carregant l’esbós

Copieu i enganxeu el codi següent a l'IDE Arduino. Seleccioneu el tauler correcte a "eines" i pengeu l'esbós a l'Arduino.

byte noteON = 144; // note on commandbyte note; // emmagatzematge per a la nota que es reprodueix actualment int buttonPin1 = 2; int buttonPin2 = 3; int buttonPin3 = 4; int buttonPin4 = 5; int potPin = A0; booleà currentState = BAIX; // estat per al botó actual estat booleà lastState = BAIX; // emmagatzematge per a l’últim estat del botó void setup () {pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (buttonPin3, INPUT); pinMode (buttonPin4, INPUT); // aquesta vegada establirem el pin com a INPUT Serial.begin (9600); // inicialitzar connexió sèrie} bucle buit () {int PotVal = analogRead (potPin); velocitat de byte = mapa (PotVal, 0, 1023, 0, 127); currentState = digitalRead (buttonPin1); if (currentState == HIGH && lastState == LOW) {MIDImessage (noteON, 60, velocity); // activeu la nota 60 amb 127 velocity delay (200); // forma crua de rebot de botons} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // desactiva el retard de la nota 60 (2); // forma crua de rebot de botons} lastState = currentState; currentState = DigitalRead (buttonPin2); if (currentState == HIGH && lastState == LOW) {// si el botó acaba de prémer MIDImessage (noteON, 61, velocity); // activa la nota 60 amb 127 velocity delay (200); // forma crua del botó debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // desactiva el retard de la nota 60 (2); // forma crua del botó debouncing} lastState = currentState; currentState = digitalRead (buttonPin3); if (currentState == HIGH && lastState == LOW) {// si el botó acaba de prémer MIDImessage (noteON, 62, velocity); // activeu la nota 60 amb 127 velocity delay (200); // forma crua del botó debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // desactiva el retard de la nota 60 (2); // forma crua del botó debouncing} lastState = currentState; currentState = digitalRead (buttonPin4); if (currentState == HIGH && lastState == LOW) {// si el botó acaba de prémer MIDImessage (noteON, 63, velocity); // activeu la nota 60 amb 127 velocity delay (200); // forma crua del botó debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // desactiva el retard de la nota 60 (2); // forma crua del botó debouncing} lastState = currentState; } // enviar missatge MIDI void MIDImessage (ordre de byte, byte data1, byte data2) {Serial.write (ordre); Serial.write (dades1); Serial.write (dades2); }

Encara sóc molt nou en escriure codi en general … els que tenen una mica més d’experiència probablement podrien netejar-ho …

Pas 3: Descripció del MIDI sense pèl i dels bucles MIDI interns

Comprensió dels bucles MIDI sense pèl i interns
Comprensió dels bucles MIDI sense pèl i interns
Comprensió dels bucles MIDI sense pèl i interns
Comprensió dels bucles MIDI sense pèl i interns
Comprensió dels bucles MIDI sense pèl i interns
Comprensió dels bucles MIDI sense pèl i interns

L'Arduino ha de funcionar a través d'un pont en sèrie com Hairless MIDI i després a través d'un bucle MIDI intern com loopbe1 (o bus IAC per a Mac).

Nota: no podeu penjar un esbós a l'Arduino mentre està connectat al pont serial MIDI sense pèl.

Seleccioneu el vostre Arduino al port sèrie MIDI sense pèl i el bucle1 o el bus IAC a la sortida MIDI.

Nota: assegureu-vos que el silenci no està activat quan utilitzeu loopbe1.

Pas 4: Connexió al vostre DAW

Connexió al vostre DAW
Connexió al vostre DAW

Si rebeu senyal a l’aplicació MIDI sense pèl quan premeu un botó de la placa de paret (els llums parpellejaran), podríeu enviar dades MIDI a un DAW. Vaig utilitzar Ableton, però qualsevol DAW hauria de funcionar. Assegureu-vos que el vostre bucle MIDI intern (loopbe1) està habilitat a les vostres preferències DAW (a Ableton voleu que s'activi la "pista"). A continuació, seleccioneu una de les entrades de pista MIDI al bucle MIDI (loopbe1) tal com es mostra a la imatge superior.

Pas 5: Juga

Image
Image

Ara els botons funcionaran com qualsevol altre controlador MIDI. El potenciòmetre canviarà la velocitat de les notes que s’envien al DAW. El vídeo (molt fosc …) de dalt mostra un so de piano de cua en acció.

Recomanat: