Paso 7: Código de Midi para hacer su propio controlador
Datos MIDI con nuestros botones.
Empezar por crear una función que envía el mensaje de cambio de control.
void Send_CC (num_CC bytes, valor de byte)
{
Serial.Write (0xB0); //Message "cambio de control" en el canal MIDI 1
Serial.Write (num_CC);
Serial.Write (valor);
}
Para cambiar el tipo de mensaje o canal de MIDI se hace referencia al Midilickuino Tutorial
Insertar nuestra función en nuestro código y cambiar mensajes de monitor serie anteriores a
un mensaje MIDI
Añadir "Led_Pin_Write" el LED correspondiente en el botón se ilumina al pulsar
Agregar también la elección de la velocidad de comunicación serial
Y aquí está el código:
Enviado mensaje MIDI cuando un botón es presionado o liberado
#include < SRIO.h >
Constructor de la biblioteca
SR SRIO;
Constante que define la velocidad de transmisión serial: USB = > 2, MIDI = > 1 ou SERIE = > 0
#define serial_baud 2
Constante del número de botón
#define nbr_button 64
Variable del estado de botón
Tamaño de la matriz es el número de botón
int button_state [nbr_button];
Variable que contenga el estado del botón
int old_button_state [nbr_button];
Función envía mensajes MIDI CC en canal MIDI 1
void Send_CC (num_CC bytes, valor de byte)
{
Serial.Write (0xB0); //Message "cambio de control" en el canal MIDI 1
Serial.Write (num_CC);
Serial.Write (valor);
}
void setup()
{
Elección de la velocidad en baudios serie
interruptor (serial_baud) {}
caso 0:
Serial.Begin (9600); comunicación //Serie para depuración
rotura;
caso 1:
Serial.Begin (31250); comunicación //MIDI
rotura;
caso 2:
Serial.Begin (115200); comunicación //USB
rotura;
}
Inicializar y usar Dilciktal
PRM Initialize();
Animación de LEDs para conocer ese programa Inicio
PRM Led_All_On();
Delay(500);
PRM Led_All_Off();
}
void loop()
{
Lazo como número de botón conectado
para (int i = 0; i < nbr_button; i ++) {}
Mantener el estado de botón en la variable
button_state [i] = SR. Button_Pin_Read(i);
¿Estado de botón ha cambiado?
Si (button_state [i]! = {old_button_state[i])}
¿Estado de botón es presionado o liberado?
{Switch(button_state[i])}
caso 0:
Enviado mensaje MIDI CC en canal 1
Send_CC(i,0);
Desactivar la tecla led
PRM Led_Pin_Write(i,0);
rotura;
caso 1:
Enviado mensaje MIDI CC en canal 1
Send_CC(i,127);
Encendido el botón led
PRM Led_Pin_Write(i,1);
rotura;
}
}
No te olvides de mantener el estado de botón
old_button_state [i] = button_state [i];
}
}
Aquí queda para usted hacer tus propias aplicaciones.
Otros códigos se dará como una elección entre el botón de alternar o momentáneo o
Tambor de secuenciador... rienda suelta a su imaginación.