Tabla de contenido:

Controlador MIDI Arduino básico: 5 pasos
Controlador MIDI Arduino básico: 5 pasos

Video: Controlador MIDI Arduino básico: 5 pasos

Video: Controlador MIDI Arduino básico: 5 pasos
Video: Lección 1 Curso Arduino Musical por Daniel Marcial, Aprende a construir controladores MIDI 2024, Noviembre
Anonim
Controlador MIDI básico de Arduino
Controlador MIDI básico de Arduino

Intro:

Soy nuevo en el trabajo con Arduino, pero espero ampliar mis conocimientos enseñando a otros y recibiendo comentarios. Este es un controlador MIDI muy básico con 4 botones y un potenciómetro. El esquema de este proyecto se ve así:

1. Construye la placa de pruebas

2. Sube el boceto al Arduino.

3. Comprender MIDI sin pelo y el bucle MIDI interno (loopbe1)

4. enrute su MIDI a una DAW (Ableton)

Suministros

1 x Arduino Mega 2560

1 x tabla de pan

1 x cable USB

1 x potenciómetro

4 x botones de tacto

4 resistencias de 120 ohmios

14 x cables de puente para protoboard

Paso 1: Construcción de la placa de pruebas

Construyendo la placa de pruebas
Construyendo la placa de pruebas
Construyendo la placa de pruebas
Construyendo la placa de pruebas

Conecte su tablero de modo que todos los componentes coincidan con la imagen 1 de arriba. Cada botón debe tener el mismo aspecto que en la imagen 2. Las entradas de los botones son 2, 3, 4 y 5 en el Arduino y el pin central del potenciómetro está conectado a la entrada ANALÓGICA A0.

Paso 2: carga del boceto

Subiendo el boceto
Subiendo el boceto

Copie y pegue el código a continuación en el IDE de Arduino. Seleccione la placa correcta en "herramientas" y cargue el boceto en el Arduino.

byte noteON = 144; // nota en el comando byte note; // almacenamiento para la nota que se está reproduciendo actualmente int buttonPin1 = 2; int buttonPin2 = 3; int buttonPin3 = 4; int buttonPin4 = 5; int potPin = A0; boolean currentState = LOW; // trazo para el estado actual del botón boolean lastState = LOW; // almacenamiento para el último estado del botón void setup () {pinMode (buttonPin1, INPUT); pinMode (buttonPin2, ENTRADA); pinMode (buttonPin3, ENTRADA); pinMode (buttonPin4, INPUT); // esta vez configuraremos el pin como INPUT Serial.begin (9600); // inicializar la conexión serial} void loop () {int PotVal = analogRead (potPin); velocidad de bytes = mapa (PotVal, 0, 1023, 0, 127); currentState = digitalRead (buttonPin1); if (currentState == HIGH && lastState == LOW) {MIDImessage (noteON, 60, velocity); // activa la nota 60 con un retardo de velocidad 127 (200); // forma burda de rebote de botón} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // desactiva la nota 60 delay (2); // forma burda de rebote del botón} lastState = currentState; currentState = digitalRead (buttonPin2); if (currentState == HIGH && lastState == LOW) {// si se acaba de presionar el botón MIDImessage (noteON, 61, velocity); // activa la nota 60 con un retardo de velocidad 127 (200); // forma cruda del botón debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // apaga la nota 60 delay (2); // forma cruda de botón antirrebote} lastState = currentState; currentState = digitalRead (buttonPin3); if (currentState == HIGH && lastState == LOW) {// si se acaba de presionar el botón MIDImessage (noteON, 62, velocity); // activa la nota 60 con un retardo de velocidad 127 (200); // forma cruda del botón debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // apaga la nota 60 delay (2); // forma cruda de botón antirrebote} lastState = currentState; currentState = digitalRead (buttonPin4); if (currentState == HIGH && lastState == LOW) {// si se acaba de presionar el botón MIDImessage (noteON, 63, velocity); // activa la nota 60 con un retardo de velocidad 127 (200); // forma cruda del botón debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // apaga la nota 60 delay (2); // forma cruda de botón antirrebote} lastState = currentState; } // enviar mensaje MIDI void MIDImessage (comando byte, byte data1, byte data2) {Serial.write (comando); Serial.write (datos1); Serial.write (datos2); }

Todavía soy muy nuevo en la escritura de código en general ….. aquellos con un poco más de experiencia probablemente podrían limpiar esto …

Paso 3: Comprensión de los bucles MIDI internos y MIDI sin pelo

Comprensión de los bucles MIDI internos y MIDI sin pelo
Comprensión de los bucles MIDI internos y MIDI sin pelo
Comprensión de los bucles MIDI internos y MIDI sin pelo
Comprensión de los bucles MIDI internos y MIDI sin pelo
Comprensión de los bucles MIDI internos y MIDI sin pelo
Comprensión de los bucles MIDI internos y MIDI sin pelo

El Arduino debe ejecutarse a través de un puente en serie como Hairless MIDI y luego a través de un bucle MIDI interno como loopbe1 (o bus IAC para Mac).

Nota: no puede cargar un boceto al Arduino mientras está conectado al puente serial MIDI sin pelo.

Seleccione su Arduino en el puerto serie MIDI sin pelo y loopbe1 o IAC Bus en la salida MIDI.

Nota: asegúrese de que el silencio no esté activado cuando utilice loopbe1.

Paso 4: Conexión a su DAW

Conexión a su DAW
Conexión a su DAW

Si está recibiendo señal en la aplicación Hairless MIDI cuando presiona un botón en la placa de pruebas (las luces parpadearán), debería poder enviar datos MIDI a una DAW. Usé Ableton pero cualquier DAW debería funcionar. Asegúrese de que su bucle MIDI interno (loopbe1) esté habilitado en las preferencias de su DAW (en Ableton desea que la "pista" esté habilitada). A continuación, seleccione una de sus entradas de pista MIDI para el bucle MIDI (loopbe1) como se muestra en la imagen de arriba.

Paso 5: ¡Juega

Image
Image

¡Los botones ahora funcionarán como cualquier otro controlador MIDI! El potenciómetro cambiará la velocidad de las notas que se envían a la DAW. El video (muy oscuro…) de arriba muestra un sonido de piano de cola en acción.

Recomendado: