Modifications

Aller à : navigation, rechercher

Controleur midi usb arduino

1 899 octets supprimés, 1 juillet 2020 à 18:46
Programmation
On peut générer 1024 informations différentes avec les entrées analogiques de l'Arduino, de 0 à 1023.<br/>
On peut générer 2 informations différentes avec les entré numérique de l’Arduino, soit 0 soit 1, on peut aussi parler de l'état haut ("HIGHT" en anglais), et de l'état bas ("LOW" en anglais).<br/>
 
 
==== Sans Tableau ====
Pour simplifier la compréhension du programme, nous allons d'abord expliquer une version avec un seul potentiomètre et un seul bouton, ce qui signifie que nous n'aurons pas de tableau d'entrée donc pas de boucle de lecture pour ces fameux tableaux.<br/>
Dans ce cas-là, le schéma de câblage ressemble à ça:<br/>
[[file:SansTableau.png|700px]]
<br/>
Nous avons fait le choix de ne pas utiliser de blibliotheque midi pour l'arduino, pour deux raison:<br/> <big>Le fait d'''Attention écrire toute les fonction nous a permis comprendre plus profondément se code est en cours de rédaction il n'est pas utilisable pour le moment'''que nous faisions.<br/big><pre>//version 2.1: l'intrus (sans tableau) //Fait le 9/5/2018 par Al²//re-fait le 5/5/2020 par Al²: version visant à modifier le bug Pas de rajout de la sensibilité des cc  // _____ A définir ____ //sensibilité: 2bibliothèque veux aussi dire, ça a l'air bienint sensibilite = 2;   // _________ A ne pas modifier _____________ // déclaration des variables    // déclaration des variables pour le bouton int digitalInBouton = 2;noteBouton = 20; boolean EtatBoutonAct = 0;boolean EtatBoutonPrec = 0;int i;    // déclaration des variables pour le potentiomètre int const pot = A0; // attribution Control change Midi en hexadecimalint Cc =0x10; // valeur initialeint potVal; int j;  #define midiChannel (byte) 0 // canal 1  void setup() { Serial.begin (31250); // attention vitesse de transmission MIDI = 31250, Moniteur Série = 9600  // initialisation des broches pinMode (digitalInBouton, INPUT_PULLUP); // initialisation des valeur du potentiomètre  potVal=0; } void loop() { // Le bouton EtatBoutonAct = digitalRead (digitalInBouton); // lecture du bouton //Détection des changements problème d'état des boutons //De cette manière incompatibilité si on évite de "spamer" les messages midi //On envoie un message MIDIsouhaite rajouté d'autre fonctionnalité qui nécessiterais elles, uniquement lors du changement l’ajout d'état  if (!EtatBoutonAct && EtatBoutonAnt) { sendMessage (0x90, noteBouton, 127); une bibliothèque.<br// envoie noteON } if (EtatBoutonAct && !EtatBoutonAnt) { sendMessage (0x80, noteBouton, 127); // envoie noteOFF } EtatBoutonAnt = EtatBoutonAct;}  // Le potentiomètre potVal = rafraichir (pot , potVal, Cc); //delay (1);}  int rafraichir (int const pot, int potVal, int Cc){ if (potVal + sensibilite < analogRead (pot) || potVal - sensibilite > analogRead (pot)){ potVal = analogRead (pot); int Val = potVal/8;   sendMessage(0xB0, Cc, Val); //envoie valeur non-clippée } return potVal; }  
// Fonctions communes
void sendMessage (byte cmd, byte ch, byte val){
cmd= cmd|byte (midiChannel);
Serial.write (cmd);
Serial.write (ch);
Serial.write (val);
}
/*
// version débuggage, penser à changer la vitesse (9600 ou 31250)
void sendMessage (int cmd, int cc, int val){
cmd= cmd|byte (midiChannel);
Serial.print("cmd : ");
Serial.print (cmd, HEX);
Serial.print(" ");
Serial.print("cc : ");
Serial.print (cc, HEX);
Serial.print(" ");
Serial.print("val : ");
Serial.print (val, DEC);
Serial.println ("");
}
*/
</pre>
==== Avec Tableau Le programme ====En plus dans fonction classique que l'on pourrais attendre d'un contrôleur midi classique, nous avons rajouter un switch, qui permet de choisir si on veux que les signaux des faders soit au maximum a 100 ou a 127, c'est notre pote jonas pour qui nous avons fait se controler qui nous l'a demandé. Il s'en sert pour évité de faire saturer le son commander par les faders. C'est une sorte d'assurance pour éviter de faire saturer le son quand, sa motricité lui ai momentanément empruntée par la frénésie de la fête électronique.<br/>Quoi qu'il en soit si vous ne brancher rien sur l'entrée numerique 12, votre valeur maximale atteindra par default 127. <br/>
[[file:MegaFinale.png|650px]] <br/>
Dans notre programme nous avons rajouté un fonctionement qui bloque a
124
modifications

Menu de navigation