C'est bon j'ai réussi!!! A force de faire des essais j'ai trouvé la solution tout seul j'ai eu de la chance. Merci quand même à vous qui vous êtes penchés sur la question pour m'aider, c'est bien gentil.
Donc voila si jamais ça peut vous servir, si vous désirez créer un contrôleur midi à partir de capteurs LDR (photorésistances), je vais vous expliquer comment j'ai réglé mon problème. En fait c'était vraiment simple mais il fallait le trouver, dans mon cas il suffisait juste de définir le Baud Rate à 36000 dans le code et aussi dans le logiciel S2Midi. J'ai aussi rajouté un delay à la fin du code d'envoi du message midi sinon le signal était trop rapide et ça foutait le bordel.
Voici donc le code final:
// by Tubedogg 12/2006; fabian at tubedogg.de
//This program reads up to 6 analog sensors / potentiometers ans converts the data to Midi-Controller messages
// define Switchpin:
#define switchPin 10
// define LED:
#define LEDpin 13
// Variables
// define variables for the controller data
int AnalogValue[4] = {0,0,0,0};
// define the "lastValue" variables
int lastAnalogValue[4] = {0,0,0,0};
// select the midi Controller Number for each input
int midiCCselect[4] = {1,2,3,4};
// select threshold for each analog input
int thresh[4] = {1,1,1,1};
// select number of desired analog inputs (max 6)
int input_no = 4;
void setup() {
// set the states of the I/O pins:
pinMode(switchPin, INPUT);
pinMode(LEDpin, OUTPUT);
// Set MIDI baud rate:
Serial.begin(36000);
}
// main program loop
void loop() {
for(int i=0;i<input_no;i++){
AnalogValue[i] = (analogRead(i))/8; // read the value from the analog input and divide by 8 for range 0-127
// check if value is greater than defined threshold (good for resistive touchpads etc)
if ( AnalogValue [i]>thresh[i] ) {
// check if analog input has changed
if ( AnalogValue[i] != lastAnalogValue[i] ) {
//send control change on cc#i
midiCC(0xB0, midiCCselect[i], AnalogValue[i]);
// update lastAnalogValue variable
lastAnalogValue[i] = AnalogValue[i];
//End if
}
//End if
}
//End for
}
//End Loop
}
// This function sends a Midi CC.
void midiCC(char CC_data, char c_num, char c_val){
Serial.print(CC_data, BYTE);
Serial.print(c_num, BYTE);
Serial.print(c_val, BYTE);
delay (100);
}
Un grand merci à TubeDogg pour ce code!
Par contre je tiens à préciser que j'ai rencontré un autre problème par rapport à la sensibilité des capteurs. C'est à dire que le signal ne changeait pas si je faisait de l'ombre sur le capteur, il fallait beaucoup plus d'obscurité pour que la valeur commence à diminuer. En gros ces capteurs là fonctionnent correctement et de manière précise dans un environnement sombre, mais par contre ne captent plus les différences de luminosité au delà d'une certaine puissance d'éclairage. Dans mon cas, je cherchais à réaliser une installation pour faire un système d'ombres chinoises sonores, donc quand l'ombre passe à un certain endroit, le capteur déclenche un son dans fruity loops. Le problème était que l'ombre n'était pas assez importante pour faire diminuer la valeur qui restait à 127.
Bien sur je me suis dit sur le coup que tout était foutu ou alors il fallait que je recommande des capteurs différents etc. Mais finalement, voici une solution très bête mais efficace: enrober les capteurs de papier, enrouler sur plusieurs épaisseurs si nécessaire, et le tour est joué. Plus il y a d'éclairage ambiant plus il faudra d'épaisseur de papier pour compenser. Ensuite il suffit de faire une petite ombre sur le capteur empaqueté pour que la valeur descente comme il se doit.
Voila, j'espère que ces infos pourront être utiles à d'autres un jour ou l'autre. Sachant qu'il est possible avec ce programme d'imaginer et de créer toute sorte de contrôleurs midi plus incroyables les uns que les autres. Cela ouvre bien de nouvelles possibilité pour contrôler les logiciels de musiques et inventer de nouveaux instruments midi. Arduino le permet, et pour une modeste somme, profitons en!!!