Hur man använder SRIO bibliotek för Arduino (7 / 7 steg)
Steg 7: MIDI-kod att göra en egen controller
MIDI-data med våra knappar.
Börja med att skapa en funktion som skickar kontroll ändra meddelande.
void Send_CC (byte num_CC, byte-värde)
{
Serial.write (0xB0); //Message "control change" på canal MIDI 1
Serial.write (num_CC);
Serial.write (värde);
}
För att ändra MIDI-kanal eller meddelande du refererar till den Midilickuino handledning
Infoga vår funktion i vår kod och ersätta tidigare seriell övervaka meddelanden till
MIDI-meddelanden
Lägg till "Led_Pin_Write" för motsvarande LED på knappen tänds när du trycker
Att lägga till också valet av hastighet av seriell kommunikation
Och här är koden:
MIDI-meddelandet som skickas när en knapp trycks ned och släpps
#include < SRIO.h >
Bibliotek-konstruktorn
SRIO SR;
Konstant som definierar seriell baud: USB = > 2, MIDI = > 1 ou SERIE = > 0
#define serial_baud 2
Konstant av antalet knappen
#define nbr_button 64
Variabeln knapp statens
Matrisstorlek är antalet knappen
int button_state [nbr_button];
Variabel att hålla knappen staten
int old_button_state [nbr_button];
Fungera att skicka MIDI CC meddelande på kanalen MIDI 1
void Send_CC (byte num_CC, byte-värde)
{
Serial.write (0xB0); //Message "control change" på canal MIDI 1
Serial.write (num_CC);
Serial.write (värde);
}
void setup()
{
Valet den seriella baud
växel (serial_baud) {
fall 0:
Serial.BEGIN (9600); //Serie kommunikation för debug
bryta;
fall 1:
Serial.BEGIN (31250); //MIDI kommunikation
bryta;
fall 2:
Serial.BEGIN (115200); //USB kommunikation
bryta;
}
Initiera använda in och ut genom Dilciktal
SR. Initialize();
Lysdioder animation vet att program startar
SR. Led_All_On();
Delay(500);
SR. Led_All_Off();
}
void loop()
{
Loop som antal anslutna knappen
för (int jag = 0; jag < nbr_button; i ++) {
Håll knappen staten i variabeln
button_state [i] = SR. Button_Pin_Read(i);
Knappläge har förändrats?
om (button_state [i]! = old_button_state[i]) {
Knappläge trycks ned och släpps?
Switch(button_state[i]) {
fall 0:
Skickade MIDI-meddelande CC på kanal 1
Send_CC(i,0);
Turn Off knappen ledde
SR. Led_Pin_Write(i,0);
bryta;
fall 1:
Skickade MIDI-meddelande CC på kanal 1
Send_CC(i,127);
Slå på knappen ledde
SR. Led_Pin_Write(i,1);
bryta;
}
}
Glöm inte att hålla knappen staten
old_button_state [i] = button_state [i];
}
}
Här återstår det för dig att göra dina egna program.
Andra koder kommer att ges som ett val mellan knappen Växla eller MOMENTARY eller
Drum sequencer... fritt spelrum för din fantasi.