Stap 7: Midi code maak je eigen controller
MIDI-data met onze knoppen.
Begint met het maken van een functie die besturingsbericht wijzigen stuurt.
VOID Send_CC (byte num_CC, bytewaarde)
{
Serial.write (0xB0); //Message "besturingselement aangepast" op canal MIDI 1
Serial.write (num_CC);
Serial.write (waarde);
}
Als u wilt wijzigen het MIDI kanaal of bericht type waarnaar u verwijst de Midilickuino leerprogramma
Onze functie in onze code invoegen en vervangt eerdere seriële monitor berichten naar
een MIDI-bericht
Voeg dat de "Led_Pin_Write" voor de bijbehorende LED op de knop oplicht wanneer gedrukt
Ook het toevoegen van de keuze van de snelheid van de seriële communicatie
En hier is de code:
MIDI-bericht verzonden wanneer een knop wordt ingedrukt of losgelaten
#include < SRIO.h >
Bibliotheek constructor
SRIO SR;
Constante die serial baud definiëren: USB = > 2, MIDI = > 1 ou SERIE = 0 >
#define serial_baud 2
Constante van het aantal knop
#define nbr_button 64
Variabele van de status van de knop
Matrixgrootte is het aantal knop
int button_state [nbr_button];
Variabele te houden van de status van de knop
int old_button_state [nbr_button];
Functioneren dat MIDI CC bericht op kanaal MIDI 1 verzenden
VOID Send_CC (byte num_CC, bytewaarde)
{
Serial.write (0xB0); //Message "besturingselement aangepast" op canal MIDI 1
Serial.write (num_CC);
Serial.write (waarde);
}
VOID Setup
{
Keuze de serial baud
schakelaar (serial_baud) {}
Case 0:
Serial.begin (9600); //Serie communicatie voor debug
breken;
Case 1:
Serial.begin (31250); //MIDI communicatie
breken;
Case 2:
Serial.begin (115200); //USB communicatie
breken;
}
Initialiseren in-en uitchecken gebruiken door Dilciktal
SR. Initialize();
LEDs animatie om te weten dat programma starten
SR. Led_All_On();
delay(500);
SR. Led_All_Off();
}
void loop
{
Loop maar liefst aantal verbonden knop
for (int i = 0; ik < nbr_button; i ++) {}
Houd de status van de knop in de variabele
button_state [i] = SR. Button_Pin_Read(i);
Status knop veranderd?
Als (button_state [i]! = old_button_state[i]) {}
Status knop wordt ingedrukt of losgelaten?
switch(button_state[i]) {}
Case 0:
Boodschap MIDI CC op kanaal 1
Send_CC(i,0);
Turn Off de knop geleid
SR. Led_Pin_Write(i,0);
breken;
Case 1:
Boodschap MIDI CC op kanaal 1
Send_CC(i,127);
Turn On de knop geleid
SR. Led_Pin_Write(i,1);
breken;
}
}
Vergeet niet om te houden van de status van de knop
old_button_state [i] = button_state [i];
}
}
Hier blijft het voor jou dat het maken van uw eigen toepassingen.
Andere codes zal worden gegeven als een keuze tussen TOGGLE of MOMENTARY knop of
Drum sequencer... om uw verbeelding de vrije loop.