Étape 7: Code Midi faire votre propre contrôleur
Données MIDI avec nos boutons.
Commencez par créer une fonction qui envoie le message de changement de contrôle.
void Send_CC (byte num_CC, valeur d’octet)
{
Serial.Write (0xB0); //Message « changement de contrôle » sur le canal MIDI 1
Serial.Write (num_CC) ;
Serial.Write (valeur) ;
}
Pour modifier le type de message ou le canal du MIDI, vous référencez le Tutoriel Midilickuino
Notre fonction d’insertion dans notre code et remplacer les précédents messages serial monitor
un message MIDI
Ajouter que le « Led_Pin_Write » pour le voyant correspondant sur le bouton s’allume lorsque vous appuyez sur
Ajouter également le choix de la vitesse de communication série
Et voici le code :
Envoyé de message MIDI lorsqu’un bouton est enfoncé ou relâché
#include < SRIO.h >
Constructeur de bibliothèque
SRIO SR ;
Constante qui définissent baud serial : USB = > 2, MIDI = > 1 ou SERIE = 0 >
#define serial_baud 2
Constante du nombre de bouton
#define nbr_button 64
Variable de l’état du bouton
Taille du tableau est le nombre de bouton
int button_state [nbr_button] ;
Variable qui contient l’état du bouton
int old_button_state [nbr_button] ;
Fonction de cet envoi message MIDI CC sur le canal MIDI 1
void Send_CC (byte num_CC, valeur d’octet)
{
Serial.Write (0xB0); //Message « changement de contrôle » sur le canal MIDI 1
Serial.Write (num_CC) ;
Serial.Write (valeur) ;
}
void setup()
{
Choix de la vitesse de transmission série
Switch (serial_baud) {}
case 0 :
Serial.Begin (9600); //Serie communication pour le débogage
rupture ;
cas 1 :
Serial.Begin (31250); //MIDI communication
rupture ;
cas 2 :
Serial.Begin (115 200 bauds); //USB communication
rupture ;
}
Initialiser à utiliser par Dilciktal
SR. Initialize() ;
Animation de LEDs de connaître ce programme à commencer
SR. Led_All_On() ;
Delay(500) ;
SR. Led_All_Off() ;
}
void loop()
{
Boucle comme numéro de bouton connecté
pour (int i = 0; i < nbr_button; i ++) {}
Conserver l’état du bouton dans la variable
button_state [i] = SR. Button_Pin_Read(i) ;
État du bouton a changé ?
Si (button_state [i]! = {old_button_state[i])}
État du bouton est enfoncé ou relâché ?
{Switch(button_state[i])}
case 0 :
Envoyé de message MIDI CC sur canal 1
Send_CC(i,0) ;
Désactiver le bouton conduit
SR. Led_Pin_Write(i,0) ;
rupture ;
cas 1 :
Envoyé de message MIDI CC sur canal 1
Send_CC(i,127) ;
Mise en marche le bouton conduit
SR. Led_Pin_Write(i,1) ;
rupture ;
}
}
N’oubliez pas de conserver l’état du bouton
old_button_state [i] = button_state [i] ;
}
}
Ici, il reste pour vous que vos propres demandes.
Autres codes seront verront comme un choix entre un bouton bascule ou momentané ou
Tambour de séquenceur... libre cours à votre imagination.